王爽老師《組合語言》實驗7程式碼
阿新 • • 發佈:2021-06-11
感覺自己真的菜,整半天沒整出來
assume cs:code,ds:data 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' ;年份(0~53H) dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514 dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000 ;總收入(54H~A7H) dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226 dw 11542,14430,15257,17800 ;員工數(A8H~D1H) data ends table segment db 21 dup('year summ ne ?? ') table ends
assume cs:code,ds:data 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' ;年份(0~53H) dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514 dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000 ;總收入(54H~A7H) dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226 dw 11542,14430,15257,17800 ;員工數(A8H~D1H) data ends table segment db 21 dup('year summ ne ?? ') table ends code segment start: mov ax, data ;設定資料段暫存器 mov ds, ax mov ax, table ;設定擴充套件段暫存器 mov es, ax mov bx, 0 ;初始化 mov si, 0 mov di, 0 mov cx, 21 s: mov ax, [bx] ; 寫入年份資料,可以以字為單位操作,減少指令數量,發揮16位機優勢 mov es:[di],ax mov ax, [bx+2] mov es:[di+2], ax mov ax,54h[bx] ; 寫入總收入資料 mov dx,56h[bx] mov es:5h[di], ax mov es:7h[di],dx div word ptr ds:0A8h[si] ;計算並存儲人均收入。由於總收入資料已經在ax, 和dx中了,所以將這一步提前,可以減少資料讀取 mov es:0Dh[di], ax mov ax, 0A8h[si] ; 寫入人員數量資料 mov es:0Ah[di], ax add si, 2 ;下一組成員數偏移地址 add bx, 4 ;下一組年份和總收入偏移地址 add di, 16 ;表格下一行 loop s mov ax, 4c00h ;程式退出 int 21h code ends end start
從 code segment 開始就是要編寫的程式碼