實驗七
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