你如何在汇编中划分一个寄存器?

时间:2016-05-22 07:48:06

标签: assembly x86 divide arithmetic-expressions

请原谅我一个愚蠢的语法问题,但我有两个变量(square和horizCharsPerSquare),我试图将ecx设置为等于square / horizCharsPerSquare。我试过了:

    mov ecx, squares/horizCharsPerSquare

    mov ecx squares
    div horizCharsPerSquare

    mov ecx, squares
    shr ecx, horizCharsPerSquare ;//(I know there are other issues with this, I was just giving it a shot

无论如何,我都会收到错误消息?我得到的构建错误是“预期不变”#34;为了一切。关于我应该如何做的任何建议?

1 个答案:

答案 0 :(得分:2)

由于 square horizCharsPerSquare 都是变量,因此通常会在对它们进行算术运算之前将它们移动到寄存器中。 这里只需要将第一个变量移动到寄存器,因为div指令允许使用内存操作数:

mov eax, squares
xor edx, edx
div horizCharsPerSquare  ;Divide EDX:EAX by the dword variable
mov ecx, eax             ;Put quotient in ECX