这个程序是目前位置最复杂的程序,这个程序一定要自己动手写,之后还会再用到这个程序的。它主要考察的是寻址方式、对大量数据的处理,需要自己的耐心严谨。
主要思路: 先计算第四列(人均收入)的值,并存在table中的相应位置,然后再把其余数据移到table中的相应位置
assume cs:code
data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983','1984','1985'
db '1986','1987','1988','1989','1990','1991','1992','1993','1994','1995'
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514,345980
dd 590827,803530,1183000,1843000,2758000,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
stack segment
dw 0,0,0,0,0,0,0
stack ends
table segment
db 21 dup ('year summ ne ?? ')
table ends
code segment
start:
mov ax,data
mov es,ax
mov si,0
mov ax,table
mov ds,ax
mov di,0
mov ax,stack
mov ss,ax
mov sp,16
mov bx,0
mov cx,21
s0:
mov ax,es:[si]
mov ds:[di+bx],ax
add si,2
add di,2
mov ax,es:[si]
mov ds:[di+bx],ax
mov ax,es:[si+82]
mov ds:[bx+di+3],ax
mov ax,es:[si+84]
mov ds:[bx+di+5],ax
add si,2
mov di,0
add bx,16
loop s0
mov bx,0
mov si,168
mov di,5
mov cx,21
s1:
mov ax,es:[si]
mov ds:[bx+di+5],ax
mov ax,ds:[bx+di]
mov dx,ds:[bx+di+2]
div word ptr ds:[bx+di+5]
mov ds:[bx+di+8],ax
add si,2
add bx,16
loop s1
mov ax,4c00h
int 21h
code ends
end start