アセンブリは初心者です。
以下のコードで'3'を取り出せないのですがどのように変更すればよいでしょうか。MOV c,[EAX]でオペランドサイズの不一致とコンパイルエラーが出ます。
=================================
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils;
var
data: PAnsiChar = '0123456789';
c: AnsiChar;
begin
try
{ TODO -oUser -cConsole メイン : ここにコードを記述してください }
asm
MOV EAX,data
ADD EAX,3
MOV c,[EAX]
end;
Writeln(c);
Readln;
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
>MOV C,[EAX]
これだとメモリtoメモリになるから駄目
MOV AL,[EAX]
MOV C,AL
きれいに解決できました。ありがとうございます。
解釈すると(おそらくは)少なくとも一方をレジスタにしなさいということですね。
ツイート | ![]() |