gpt4 book ai didi

assembly - 如何使用 div 指令在 x86 汇编中求余数?

转载 作者:行者123 更新时间:2023-12-03 06:31:49 25 4
gpt4 key购买 nike

mov eax, 0
mov ebx, 0
mov edx, 0
mov ax, 31
mul cx
mov bx, 12
div bx
add bp, ax
mov eax, 0
mov ebx, 0
mov bp, bp
mov al, 7
div al

谁能告诉我这段代码中的 div al 指令有什么问题,所以当我调试我计算的每个 bp 数时,当我除以 al 时,它给我 1 作为余数,为什么会发生这种情况?

余数应该存储回ah寄存器

提前致谢

编辑后的代码:

mov eax, 0
mov ebx, 0
mov edx, 0
mov ax, 31
mul cx
mov bx, 12
div bx
add bp, ax
mov eax, 0
mov ebx, 0
mov ax, bp
mov bl, 7
div bl
mov al, 0

最佳答案

您不能使用 al 作为除数,因为命令 div 假定 ax 为被除数。

这是将 bp 除以 7 的示例

mov ax,bp // ax is the dividend
mov bl,7 // prepare divisor
div bl // divide ax by bl

这是 8 位除法,所以余数将存储在 ah 中。结果在 al 中。

澄清一下:如果您写入 al,您会部分覆盖 ax!

|31..16|15-8|7-0|
|AH.|AL.|
|AX.....|
|EAX............|

关于assembly - 如何使用 div 指令在 x86 汇编中求余数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16403941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com