做本实验时明显感觉寄存器不够用,所以要对bx,si,di,bp的使用仔细阅读,本题比较琐碎,做本题更需要的是耐心,耐心,耐心。
assume cs:codedata 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' dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514 dd 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 dw 11452,14430,15257,17800
data ends
table segment db 21 dup ('year summ ne ?? ')
table ends code segment
start:mov ax, datamov ds, ax ;ds:bx, datamov bx, 0mov ax, tablemov es, ax ;es:bx, tablemov si, 0mov di, 0mov bp, 0mov cx, 21s: mov ax, ds:[bx+si]mov dx, ds:[bx+si+2]mov es:[bx+di], axmov es:[bx+di+2], dx ;move year to tablemov ax, ds:[bx+si+21*4]mov dx, ds:[bx+si+21*4+2]mov es:[bx+di+5h], axmov es:[bx+di+7h], dx ;move income to tablemov ax, ds:[bp+21*4+21*4]mov es:[bx+di+0ah], ax ;move num to tablemov ax, es:[bx+di+5h]mov dx, es:[bx+di+7h]div word ptr es:[bx+di+0ah]mov es:[bx+di+0dh], axadd si, 4hadd di, 10hadd bp, 2loop smov ax, 4c00hint 21h
code ends
end start
实验结果: