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

How do you divide a register in assembly?

请原谅我提出一个愚蠢的语法问题,但我有两个变量(squares 和 horizCharsPerSquare),我正在尝试将 ecx 设置为 squares/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

无论如何,我都会收到错误消息?我得到了 "constant is expected" 的所有构建错误。对我应该如何做有什么建议吗?

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

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