assume cs:codesg,ds:data;,ss:stack
data segment
DB '1975', '1976', '1977', '1978', '1979', '1980', '1981', '1982'
DB '1983', '1984', '1985', '1986', '1987', '1988', '1989', '1990'
DB '1991', '1992', '1993', '1994', '1995'
DD 16, 22, 382, 1356, 2390, 8000, 16000, 24486, 50065, 97479, 140417, 197514
DD 345980, 590827, 803530, 118300, 184300, 2759000, 3753000, 4649000, 5937000
DW 3, 7, 9, 13, 28, 38, 130, 220, 476, 778, 1001, 1442, 2258, 2793, 4037, 5635, 8226
DW 11542, 14430, 15257, 17800
data ends
table segment
db 21 dup('year summ ne ?? ')
table ends
;stack segment
; dw 8 dup(0)
;stack ends
codesg segment
start:mov ax,data
mov ds,ax
mov ax,table
mov es,ax
;mov ax,stack
;mov ss,ax
;mov sp,16
mov bp,0 ;用来指示一年的年份数据、总收入数据
mov si,0 ;用来指向公司雇员数
mov bx,0 ;用来指向table的年份数据、收入数据、雇员数据
mov cx,21
s:;复制年份
mov ax,ds:[bp]
mov es:[bx],ax
mov ax,ds:[bp+2]
mov es:[bx+2],ax
;复制收入 同时计算人均收入
mov ax,ds:[bp+54h]
mov dx,ds:[bp+56h]
mov es:[bx+5],ax
mov es:[bx+7],dx
div WORD ptr ds:[si+168]
mov es:[bx+0dh],ax ;得商
;复制雇员数
mov ax,ds:[si+168]
mov es:[bx+0ah],ax
;至此数据处理完毕 为进入下一循环做准备
add bx,10h
add bp,4h
add si,2h ;注意这里si与bp增长不同
loop s
mov ax,4c00h
int 21h
codesg ends
end start