装配中的IDIV没有给我想要的结果(NASM)

时间:2016-05-31 17:25:41

标签: assembly nasm

我正在尝试进行简单的划分:

mov ebx, 10
mov eax, 1111111111        ;(10 times)
mov edx, 0
idiv  bx

据说我想得到以下结果:

edx = 1

eax = 111111111(9次)

但我得到的结果是:

edx = 7

eax = 1111098720

有谁知道问题可能是什么?

由于

1 个答案:

答案 0 :(得分:1)

mov ebx, 10
mov eax, 1111111111        ;(10 times)
mov edx, 0
idiv  bx

立刻让我感到震惊的是,您为 32 位操作设置了所有寄存器,但随后执行 16 位除法。 将其更改为以下内容将得到所需的结果:

mov  ebx, 10
mov  eax, 1111111111
cdq
idiv ebx