我已经尝试使用谷歌搜索找到其余部分在NASM的div中。对于8位除法,看起来商是在al中,而余数在al中。但我也看到人们说它会在dl中。在这一点上,我很困惑。在我下面的代码中,我试图打印出商和剩余部分,以便在我继续之前检查我的工作。我似乎无法正确得到其余部分。 (基数是除数)
asciiout: db "%c %c", 10, 0
....
xor eax, eax
xor ebx, ebx
xor edx, edx
mov al, [Num]
mov bl, [Base]
div bl
add al, '0'
mov [Quotient], al
add ah, '0'
mov [Remainder], ah
push edx
push eax
push asciiout
call printf
add esp, 12
如果您跳过上面的段落,我的剩余部分将在哪里?我是否必须单独进行mod划分?
答案 0 :(得分:1)
DIV r/m8 Unsigned divide AX by r/m8, with result stored in AL ←Quotient, AH ← Remainder.
TL; DR:在你的情况下余数进入AH
。
请注意,被除数为 (您已经使用AX
(16位),因此如果您只使用8位红利,则应在除法前清除AH
。xor eax,eax
)