因為實驗7中的資料太多,我就對其縮減了一些。
因為其中用到很多的暫存器,但是每個暫存器都有限制規則,所以要精心分配暫存器。
最先分配的是兩個段暫存器,data用ds存放, table用es存放。
然後要確定迴圈使用的暫存器cx;
乙個指向table位址的暫存器bp,乙個指向年份和收入的暫存器di,乙個指向雇員的暫存器si;
最後確定使用div命令所需要的ax和dx。
分配好暫存器後就是進行編碼工作了。
所以只能用乙個臨時的暫存器做轉換,使得乙個命令用了兩個指令來實現。
assume cs:codedata segment
db '1975','1976','1977','1978','1979','1980','1981','1982'
dd 16,22,100,1000,345678,435576,1234567,7652351
dw 3,234,45,56,435,565,4546,4354
data ends
table segment
db 8 dup ('year summ ne ?? ')
table ends
code segment
start: mov ax, data
mov ds, ax
mov ax, table
mov es, ax
mov di, 0
mov si, 64
mov bp, 0
mov cx, 8
s: mov ax, ds:[di]
mov es:[bp], ax
mov ax, ds:[di+2]
mov es:[bp+2], ax
mov byte ptr es:[bp+4], 32
mov ax, ds:[di+32]
mov es:[bp+5], ax
mov ax, ds:[di+32+2]
mov es:[bp+7], ax
mov byte ptr es:[bp+9], 32
mov ax, ds:[si]
mov es:[bp+10], ax
mov byte ptr es:[bp+12], 32
mov dx, es:[bp+7]
mov ax, es:[bp+5]
div word ptr es:[bp+10]
mov es:[bp+13], ax
mov byte ptr es:[bp+15], 32
add di, 4
add si, 2
add bp, 16
loop s
mov ax, 4c00h
int 21h
code ends
end start
王爽 組合語言 實驗7
assume cs codesg,ds data ss stack data segment db 1975 1976 1977 1978 1979 1980 1981 1982 db 1983 1984 1985 1986 1987 1988 1989 1990 db 1991 1992 1993...
王爽 組合語言 實驗10 1
assume cs code,ds data data segment db welcome to masm 0 data ends code segment start mov dh,8 行號 mov dl,3 列號 mov cl,2 顏色 mov ax,data mov ds,ax mov si...
王爽 組合語言 實驗9
assume cs code data segment db welcome to masm db 00000010b,00100100b,01110001b data ends code segment start mov ax,data mov ds,ax mov si,07c0h 臨時,可調整...