assume cs:code
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年的21个字符串
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
;以上是表示21年公司总收入的21个dword型数据
dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
dw 11542,14430,15257,17800
;以上是表示21年公员工人数的21个word型数据
data ends
table segment
db 21 dup ('year summ ne ?? ')
table ends
code segment
start:mov ax,data
mov ds,ax ;data段地址与ds挂钩
mov ax,table
mov es,ax ;satle段地址与ex挂钩
mov cx,21 ;循环次数21
mov di,0
mov bx,0
mov si,0 ;初始化
s: mov ax,[bx]
mov es:[di],ax
mov ax,2h[bx]
mov es:2h[di] ,ax ;导入table段年份数据
mov ax,54h[bx]
mov es:[5+di],ax
mov dx,56h[bx]
mov es:[7+di],dx ;导入table段收入数据
mov ax,0a8h[si]
mov es:[0ah+di],ax ;导入table雇员数
mov ax,es:[5+di]
mov dx,es:[7+di]
div word ptr es:[0ah+di] ;计算平均工资
mov es:[0dh+di],ax ;商存入内存
add bx,4 ;data段年份收入偏移地址递增4
add si,2 ;data段雇员数偏移递增2
add di,16 ;table段递增一行
loop s
mov ax,4c00h
int 21h
code ends
end start
思考很久,没有优化的思路。 求思路。
|