1

如何正确存储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;
4

1 回答 1

5

函数的第一个参数n, 存储在 中eax,所以你的行

mov eax, n

非常奇怪(移至nn。另外,如果你改变了eax,你就改变了n

您可以保存参数以供将来使用(因为您可能需要更改eax):

var
  tempN: integer;
asm
  mov tempN, eax

此外,IIRC,在编写内联 ASM 时不得更改 的值。ebx因此,您需要用push ebx和包围您的代码pop ebx

于 2012-11-24T16:08:39.757 回答