Dan*_*man 1 delphi assembly basm
如何正确存储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;
Run Code Online (Sandbox Code Playgroud)
该函数的第一个参数n存储在eax,所以你的行
mov eax, n
Run Code Online (Sandbox Code Playgroud)
很奇怪(转移n到n).此外,如果您更改eax,则更改n.
您可以保存参数以供将来使用(因为您可能需要更改eax):
var
tempN: integer;
asm
mov tempN, eax
Run Code Online (Sandbox Code Playgroud)
此外,IIRC,您不能更改ebx编写内联ASM时的值.因此,您需要用push ebx和包围代码pop ebx.