這個實驗的意義極大,總合之前的全部知識,而且難度不大,很適合拿來啊鞏固所學(我從開始寫到現在居然寫了5天,我這個拖延症……)
其實不是想想的那么難,圖中標明了只有年份,按字符存儲,其他直接數據就好了,所以,我們只需要成功一次,控制好迭代寄存器,就可以輕松實現
下面是我的代碼,僅供參考:
assume cs:code, ss:stack 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 個年份的字符串 dd 16,22,382,1356,2390,8000,16000,24886,50065,97479,140417,197514 ;076C:0054 dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000 ; 21 年公司的總收入 dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226 ;076C:00A8 dw 11542,14430,15257,17800 ; 21 年公司雇員人數 data ends table segment db 21 dup ('year summ ne ?? ') ;076C:00E0 table ends stack segment dw 8 dup (0) stack ends code segment start: mov ax, stack mov ss, ax mov sp, 10H ;配置棧段 mov ax, data mov ds, ax ;配置數據源 mov ax, table mov es, ax ;配置接受點 mov bx, 0 mov bp, 0 mov si, 0 mov cx, 15H ;公司個數 COPYDATA: push ds:[bx+di] pop es:[bp] push ds:[bx+di+2] pop es:[bp+2] ;拷貝 年份 push ds:54H[bx+di] pop es:5[bp] push ds:54H[bx+di+2] pop es:5[bp+2] ;拷貝 收入 push ds:0A8H[di] pop es:0AH[bp] ;拷貝 mov dx, es:5[bp+2] mov ax, es:5[bp] div Word ptr ds:0A8H[di] mov es:0DH[bp], ax ;人均收入 add bp, 10H add di, 2 add bx, 2H loop COPYDATA mov ax, 4c00h int 21 code ends end start
最終實現的結果的部分圖片: