王爽汇编的课程设计对菜鸟来说是不是难了点?写了两天修改了一天还是搞不定,感觉已经精疲力尽了.
王爽汇编的课程设计对初学者来说是不是难了点?写了两天修改了一天还是搞不定,感觉已经精疲力尽了...
运行后闪一下就没了,看了很久找不到原因。而且很可能不止一个问题,初学汇编没多久,搞不定可以直接跳过往下学习么?
运行后闪一下就没了,看了很久找不到原因。而且很可能不止一个问题,初学汇编没多久,搞不定可以直接跳过往下学习么?
;使数据显示为四列,每列占40个字节
assume cs:code,ds:data,ss:stack,es:data0
data segment
;以下数据段为年份
db '1975','1976','1977','1978','1979','1980','1981','1982','1983','1984','1985','1986','1987','1988','1989','1990','1991','1992','1993','1994','1995'
;至此共占84字节
;以下数据段为总资产
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514,345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
;至此共占85+88=168字节
;以下数据段为人数
dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226,11452,14430,15257,17800
;至此共占85+88+44=210字节
;以下数据段为平均资产
dd 21 dup (0)
data ends
data0 segment ;字符串段,暂存转化的字符
db 10 dup (0)
data0 ends
stack segment ;栈段
db 32 dup (0)
stack ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov ax,data0
mov es,ax ;关联各段
mov di,0 ;双字单元起始偏移地址为0
mov si,0 ;字单元起始偏移地址为0
call pj ;调用子程序:计算平均资产
mov cx,21;
l: ;循环显示21行数据
;显示年份:(参数:数据段中年份起始偏移地址ds:[di]、显存单元中对应的年份起始偏移地址bx)
call nf ;调用子程序:显示年份
;显示总资产:(参数:数据段中总资产起始偏移地址ds:85[di]、显存单元中对应的总资产起始偏移地址bx)
mov ax,84[di] ;总资产数值低位赋给ax作为被除数低位
mov dx,84[di+2] ;总资产数值高位赋给ax作为被除数高位
call dtoc ;调用子程序:双字数值转化为字符。总资产数值转化为字符
mov bx,160+40 ;总资产字符串显示的起始偏移地址
mov dx,0
mov dl,02h ;设置字体颜色
call show_str ;调用子程序:显示字符串。在第二列显示总资产字符串
;显示人数:(参数:数据段中人数起始偏移地址ds:173[si]、显存单元中对应的人数起始偏移地址bx)
mov ax,168[si] ;人数赋给ax作为被除数低位
mov dx,0 ;人数被除数高位为0
call dtocz ;调用子程序:字数值转化为字符。人数转化为字符
mov bx,160+80 ;人数字符串显示的起始偏移地址
mov dx,0
mov dl,02h ;设置字体颜色
call show_str ;调用子程序:显示字符串。在第三列显示人数字符串
;显示平均资产:(参数:数据段中平均资产起始偏移地址ds:217[si]、显存单元中对应的平均资产起始偏移地址bx)
mov ax,210[si] ;平均资产数值赋给ax作为被除数低位
mov dx,0 ;平均资产被除数高位为0
call dtocz ;调用子程序:字数值转化为字符。平均资产数值转化为字符
mov bx,160+120 ;平均资产字符串显示的起始偏移地址