【发布时间】:2010-04-13 08:26:45
【问题描述】:
我有一个方法 (C++),它返回一个字符并将一个字符数组作为其参数。
我第一次弄乱了汇编,只是试图在 dl 寄存器中返回数组的第一个字符。到目前为止,这是我所拥有的:
char returnFirstChar(char arrayOfLetters[])
{
char max;
__asm
{
push eax
push ebx
push ecx
push edx
mov dl, 0
mov eax, arrayOfLetters[0]
xor edx, edx
mov dl, al
mov max, dl
pop edx
pop ecx
pop ebx
pop eax
}
return max;
}
由于某种原因,此方法返回一个 ♀
知道发生了什么吗?谢谢
【问题讨论】:
-
顺便说一句,根据您的 asm 语法,我猜您正在使用 Visual Studio。您确实很欣赏您不需要推送和弹出您将使用的寄存器。 Visual Studio 会自动执行此操作,因此您将使用的堆栈空间增加一倍...
-
@Mark V. - 仅供参考,您可以使用
pusha和popa推送 all 并弹出 all 寄存器。