【发布时间】:2017-02-13 04:40:37
【问题描述】:
我正在尝试将这段 c 代码转换为 64 位 nasm
int gcd ( int a, int b )
{
int c;
while ( a != 0 ) {
c = a;
a = b%a;
b = c;
}
return b;
}
但我不确定我的错误在哪里,我想也许汇编中的堆栈有一些我不知道的东西 这就是我所做的
打电话
push word[max]
push word[min]
call gcf
pop word[num1_ones]
堆栈函数
gcf:
mov ebp, esp
while:
cmp word[ebp+4], 0
je return
mov dx, 0
mov ax, word[ebp+6]
mov bx, word[ebp+4]
div bx
mov word[ebp+4], dx
mov word[ebp+6], bx
jmp while
return:
ret 2
当我运行它时,我得到了这个:
【问题讨论】:
-
那么当你运行它时会发生什么?看起来它应该组装起来。但是你没有描述问题是什么,所以这不是minimal reproducible example。