0
このコードはリアルモードで動作します。 私はそのような例を持っています: このコードは0x001FFD50アドレスに行きます。その後REALモードのアセンブラを32ビットアドレスに戻す方法は?
...
001F066F: push es
001F0670: push 0FD50
001F0673: retf ^^^^^^
001F0674: push 00051
...
、私はそのようなコードを持っている:
私は戻って0x001F0674アドレスに取得する必要があります。
...
001FFE91: push 00674
001FFE94: retn ^^^
...
代わりに、私は0x0674アドレスに行きます。リアルモードで0x001F0674アドレスに戻るにはどうすればよいですか?
セグメントを切り替えるには、 'retf'を使う必要があります。あなたの最初の例を使ってくださいが、明らかに 'es'ではなく' push 0x001F'を使います。あるいは、 'es'に' 0x001F'がまだ含まれていれば、それを保持することさえできます。 – Jester
セカンドルックでは、同じセグメントにいるように見えるので、実際にはセグメントを切り替える必要がないため、コードが実際に機能するはずです。 – Jester
私はあなたが '0x001FFD50'のようなものをどこにでも置いていると仮定します。本当に' 0x001F:0xFD50'を意味しています。そういう場合は32ビットアドレスではなく、セグメント:オフセット(物理アドレス=セグメント* 16 +オフセット) –