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

非常に奇妙です ( に移動n) n。また、あなたが変わればeax、あなたも変わりnます。

将来の使用のために引数を保存できます (変更する必要がある可能性が高いためeax):

var
  tempN: integer;
asm
  mov tempN, eax

また、IIRCでは、インラインASMを記述する際にの値を変更してはいけません。したがって、コードをと でebx囲む必要があります。push ebxpop ebx

于 2012-11-24T16:08:39.757 に答える