assume cs:code, ds:data
data segment
db '1975', '1976', '1977', '1978', '1979', '1980', '1981', '1982', '1983'
db '1984', '1985', '1986', '1987', '1988', '1989', '1990', '1991', '1992'
db '1993', '1994', '1995'
; 以上表示21个年份的字符串 0 - 83
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 345980,590827,803530,1183000,1184000,2759000,3753000,4649000,5937000
; 以上表示21个公司的收入状况 84 - 167
dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
dw 11542,14430,15257,17800
; 以上表示21年公司雇员人数 168 - 209
data ends
table segment
db 21 dup ('year sum ne ?? ')
table ends
code segment
start: mov ax,data
mov ds,ax ; 设置数据段地址
mov ax,table
mov es,ax ; 设置表格段地址
mov bx,0 ; 设置索引为0
mov si,0 ; 定位年份和收入
mov cx,21 ; 设置循环次数
mov di,0 ; 指向目标行号
s: mov ax,[si]
mov es:[di],ax
mov ax,[si+2]
mov es:[di + 2],ax ; year 0 - 3
mov byte ptr es:[di + 4],' ' ; 4
mov ax,[si + 84]
mov es:[di + 5],ax ; 收入
mov ax,[si + 86]
mov es:[di + 7],ax ; 5 - 8
mov byte ptr es:[di + 9],' '
mov ax,[bx + 168]
mov es:[di + 0aH],ax ; 雇员数
mov byte ptr es:[di + 0cH],' '
mov dx,es:[di + 7]
mov ax,es:[di + 5]
mov bp, es:[di + 0aH]
div bp ; 计算雇员收入的平均数
mov word ptr es:[0dH],ax ; 雇员的平均收入
mov byte ptr es:[0fh],' '
add bx,2
add di,16
add si,4
loop s
mov ax,4c00H
int 21H
code ends
end start
- [assumechen] 呵呵,我把程序搞复杂了。谢谢! 07/12 23:58
- [fpamc] MOV BX,AX MOV AX,DX MOV DX,0 07/11 23:26
- [assumechen] 这个公式原来一直想不明白,总是觉得会溢出,直到看到这个贴子才转过来。 http://www.asm 07/11 21:19
- [assumechen] 谢谢! 07/11 21:16
- [fpamc] 对的。 07/09 23:04
- [assumechen] 谢谢 06/30 22:34
- [assumechen] 谢谢 06/30 22:33
- [fpamc] 对的。 06/30 10:26
- [fpamc] 恩对的, 06/30 10:24
- [assumechen] 是程序错了,把这一句: mov word ptr es:[0dH],ax ; 雇员的平 06/29 14:45
[ fpamc 发表于 2012-06-29 10:17 ]
貌似排列出来的效果不好看。。。
[ assumechen 发表于 2012-06-29 11:13 ]
是指表格的格式吗?
[ fpamc 发表于 2012-06-29 13:42 ]
恩,就是显示出的效果。。
我目测的哈,可能不是那样的。。
[ assumechen 发表于 2012-06-29 14:45 ]
是程序错了,把这一句:
mov word ptr es:[0dH],ax ; 雇员的平均收入
改为就对了
mov word ptr es:[di+0dH],ax ; 雇员的平均收入