实验七
Power idea公司从1975年到1995年的基本情况如下
年份 | 收入(千美元) | 雇员 | 人均收入(千美元) |
---|---|---|---|
1975 | 16 | 3 | ? |
1976 | 22 | 7 | ? |
1977 | 382 | 9 | ? |
1978 | 1356 | 13 | ? |
1979 | 2390 | 28 | ? |
1980 | 8000 | 38 | ? |
…… | …… | …… | ? |
1995 | 5937000 | 17800 | ? |
程序中已经定义好了这些数据,编程,将data段中的数据写入到table段中,并计算人均收入(取整)
assume cs:codesg,ds:table,es:data
data segment
db '1975', '1976', '1977', '1978', '1979', '1980', '1981'
db '1982', '1983', '1984', '1985', '1986', '1987', '1988'
db '1989', '1990', '1991', '1992', '1993', '1994', '1995'
dd 16, 22, 382, 1356, 2390, 8000, 16000, 24486, 50065, 97479
dd 140417, 197514, 345980, 590827, 803530, 1183000, 1843000
dd 2759000, 3753000, 4649000, 5937000
dw 3, 7, 9, 13, 28, 38, 130, 220, 476, 778, 1001, 1442, 2258
dw 2793, 4037, 5635, 8226, 11542, 14430, 15257, 17800
data ends
table segment
db 21 dup ('year summ ne ?? ')
table ends
codesg segment
start: mov ax,data
mov es,ax
mov ax,table
mov ds,ax
mov bx,0
mov si,0
mov di,168
mov cx,21
s:mov ax,es:[si] ; 存年份
mov [bx].0h[0],ax ; 大小为两个字
mov ax,es:[si+2] ; 所以要存两次
mov [bx].0h[2],ax
mov ax,es:[si+84] ; 存收入
mov [bx].5[0],ax
mov ax,es:[si+86] ; 同理,存两次
mov [bx].5[2],ax
mov ax,es:[di] ; 存雇员人数
mov [bx].10[0],ax
mov ax,es:[si+84]
mov dx,es:[si+86]
div word ptr es:[di] ;因为除数被除数都在内存中,要指明除数的长度
mov [bx].13[0],ax
add bx,10h
add si,4
add di,2
loop s
mov ax,4c00h ; 别忘了
int 21h
codesg ends
end start