64位程序集idiv操作的行为不符合预期

时间:2016-06-12 18:16:57

标签: assembly 64-bit x86-64

嗨我只是在64位汇编中玩,但我的编译器一直在抛出:(13:操作码和操作数的无效组合)任何人都可以解释为什么会发生这种情况谢谢。

10:  myfunc:
11:    mov  rax, rcx
12:    xor  rdx, rdx
13:    idiv 10
14:    mov rax, rdx
15:    ret

对于不阅读汇编的人来说,这类似于:

int myfunc(int a)
{
    return a % 10;
}

1 个答案:

答案 0 :(得分:1)

idiv操作不会立即将值作为操作数,以下代码将按预期工作。

10:  myfunc:
11:     mov  rax, rcx
12:     xor  rdx, rdx
13:     mov  rbx, 10
14:     idiv rbx
15:     mov rax, rdx
16:     ret