assume cs: codesg, ds: datasg, es: table, ss: stacksg
datasg 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';0-53h 21个年份
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000 ;54h-a7h21年的收入
dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
dw 11542,14430,15257,17800;a8h-d1h 21年每年的员工人数
datasg ends
table segment
db 21 dup ('year summ ne ?? ');0-3年份,4空格,5-8收入,9空格,10-11雇员,12空格,13-14人均收入,15空格
table ends
stacksg segment
dw 8 dup(0)
stacksg ends
codesg segment
start:
mov ax, stacksg
mov ss, ax
mov sp, 16
mov ax, datasg
mov ds, ax
mov ax, table
mov es, ax
mov di, 0;2字节
mov bx, 0;换行
mov bp, 0;4字节
mov cx, 21 ;最外层循环,21 年
s0: push cx ;最外层cx压栈
mov si, 0
mov cx, 2
s1: mov ax, ds:[0][bp][si] ;复制年份
mov es:[bx].0[si], ax
mov ax, ds:[54h][bp][si] ;复制收入
mov es:[bx].5h[si], ax
add si, 2
loop s1
pop cx ;弹出最外层cx
mov ax, ds:0a8h[di]
mov es:0ah[bx], ax ;复制人数
mov dx, ds:56H[bp]
mov ax, ds:54H[bp]
div word ptr ds:0a8h[di]
mov es:0dh[bx], ax
add bp, 4
add bx, 16
add di, 2
loop s0
mov ax, 4c00H
int 21H
codesg ends
end start