0

我想编写一个计算 2 个数字的最大公约数的 while 循环。

这是伪代码

Euclid(a, b)
while (b != 0)
{
r = a mod b
a = b
b = r
}
return a
4

2 回答 2

0

DIV 只接收一个操作数。它将 edx:eax 除以操作数,余数在 edx 中。

于 2013-06-03T12:41:57.997 回答
0

div不接受两个参数。edx:eax如果它是 32 位值,则除以参数。例如,请参见http://www.posix.nl/linuxassembly/nasmdochtml/nasmdoca.html

快速修复将是(可以改进,但这是一个开始)

_while:
    xor edx,edx
    mov eax,ebx
    div ecx
    mov ebx,ecx
    mov ecx, edx
    cmp ecx,0
    ; etc
于 2013-06-03T12:42:22.733 回答