asm構文で配列から1文字取り出すのはこのコードであっていますか

解決


Hotkey  2015-04-13 06:13:17  No: 47208

アセンブリは初心者です。
以下のコードで'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.


KHE00021  2015-04-13 07:43:58  No: 47209

>MOV   C,[EAX]

これだとメモリtoメモリになるから駄目

MOV AL,[EAX]
MOV C,AL


Hotkey  2015-04-14 07:04:19  No: 47210

きれいに解決できました。ありがとうございます。

解釈すると(おそらくは)少なくとも一方をレジスタにしなさいということですね。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加