我有下一個問題: 當我試圖做一個較小的數字分成一個更大的一個我得到商很高,我不明白爲什麼。這裏是我試圖劃分1到5的程序,結果是256.(也是變量'a'和'b'必須是db類型的) 有人可以幫助我嗎?謝謝你在前進劃分一個小數字不會給商0
.model small
afisareanr macro nr
local m11
local m
xor ax, ax
mov ax, nr
push ax
mov si, 10
mov di, 5
mov dx, 0
cmp ax, 0
jge m
neg ax
m:div si
add dl, 30h
mov s[di],dl
xor dx,dx
dec di
cmp ax, 0
jne m
pop ax
cmp ax, 0
jge m11
mov s[di], '-'
m11:
mov ah, 9
lea dx, s
int 21h
endm
.stack
.data
a db 5
b db 1
s db 6 dup(" "), '$'
.code
mov ax, @data
mov ds, ax
xor ax, ax
xor bx, bx
mov al, b
idiv a
mov bx, ax
afisareanr bx
mov ax, 4c00h
int 21h
end
非常感謝你,我瞭解正在發生的事情以及如何出現256,是的,你是對的,我是新手,我們剛剛開始在大學學習。 –
要查找劃分的規範複製目標,請查看[x86標記wiki](https://stackoverflow.com/tags/x86/info)並搜索「idiv」。這是我添加FAQ部分的原因之一。 (嗯,這不是一個確切的*重複的,因爲這裏的問題並沒有意識到剩下的是AH,而不是沒有清除上半部分的股息,但是Michael對鏈接dup的回答是8位操作數大小劃分確實提到了它是如何工作的部分。不同的問題相同的答案。)無論如何,我不會建議刪除這個答案,這很好。 –