【发布时间】:2012-11-24 16:03:41
【问题描述】:
如何将n 正确存储在如下函数中?由于n 中的值在我使用一次后由于某种原因发生了变化。
function Test(n: Integer): Byte;
asm
mov eax, n
add eax, eax
add eax, n
mov ecx, eax
mov ebx, eax
mov ecx, n
end;
【问题讨论】:
如何将n 正确存储在如下函数中?由于n 中的值在我使用一次后由于某种原因发生了变化。
function Test(n: Integer): Byte;
asm
mov eax, n
add eax, eax
add eax, n
mov ecx, eax
mov ebx, eax
mov ecx, n
end;
【问题讨论】:
函数的第一个参数n存储在eax中,所以你的行
mov eax, n
非常奇怪(将n 移动到n)。此外,如果您更改eax,您将更改n。
您可以保存参数以供将来使用(因为您可能需要更改 eax):
var
tempN: integer;
asm
mov tempN, eax
另外,IIRC,您必须不在编写内联 ASM 时更改 ebx 的值。因此,您需要用push ebx 和pop ebx 包围您的代码。
【讨论】: