我必須在8086中做這樣的操作
((x*y)-c) 1
我寫了這段代碼:
.stack
.data
A dw 180
B db 4
C dw 300
.code
start:
MOV AX, 00h
MOV AX, A
MUL B
SUB AX, C
DEC AX
int 21h
end start
這段代碼有效,但我不認為我想要的表達...
我哪里錯了?
uj5u.com熱心網友回復:
這段代碼有效,但我不認為我想要的表達...
((x * y) - c) 1
計算幾乎是正確的。只是DEC AX應該變成INC AX這樣它匹配你在最后添加 1的運算式:
看看我老師的例子,他總是
int 21h在他的代碼末尾使用
我敢肯定,您老師的代碼會在該行的正上方有類似mov ah, 00h或mov ax, 4C00h直接的內容。它的目的是終止程式并回傳到 DOS。
這是在螢屏上額外顯示計算結果的代碼。該程式在終止之前等待鍵盤鍵,讓您有機會實際看到結果。
start:
mov ax, A
mul B
sub ax, C
inc ax ; -> AX == 421
mov bx, 10
xor cx, cx
Divide:
xor dx, dx ; Setup for division DX:AX / BX
div bx ; -> Quotient AX, Remainder DX=[0,9]
push dx ; (1)
inc cx
test ax, ax
jnz Divide
Show:
pop dx ; (1)
add dl,"0" ; [0,9] -> ["0","9"]
mov ah, 02h ; DOS.DisplayCharacter
int 21h ; -> AL
dec cx
jnz Show
mov ah, 01h ; DOS.GetKey
int 21h ; -> AL
mov ax, 4C00h ; DOS.Terminate
int 21h
end start
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/381529.html
上一篇:匯編時讀取資料變數的值
