编程:将data段中的数据按如下格式写入到table段中,并计算21年中的人均收入(取整),结果也按照下面的格式保存在table段中。
代码:
assume cs:code
data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983','1984','1985','1986','1987','1988','1989','1990','1991','1992','1993','1994','1995'
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514,345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226,11542,14430,15257,17800
data ends
table segment
db 21 dup('year summ ne ?? ')
table ends
code segment
start:
mov ax,data
mov ds,ax ;将ds指向data segment
mov ax,table
mov es,ax ;将es指向table segment
mov bx,0 ;定位年份和总收入
mov bp,0 ;定位表行
mov si,0 ;定位雇员人数
mov cx,21
s: ;每轮将一个年的数据计算存入指定位置
;年份
mov ax,0[bx].0
mov es:[bp].0,ax
mov ax,0[bx].2
mov es:[bp].2,ax
;雇员人数
mov ax,168[si]
mov es:[bp].10,ax
;收入
mov ax,84[bx] ;收入地位放在ax中
mov es:[bp].5,ax
mov dx,84[bx+2] ;收入高位放在dx中
mov es:[bp].7,dx
;计算人均收入
div word ptr es:[bp].10
mov es:[bp].13,ax
add bx,4 ;指向下一个年份
add bp,10h ;指向下一行表
add si,2 ;指向下一份雇员人数
loop s
mov ax,4c00h
int 21h
code ends
end start
结果截图: