2

LODS オペコードを使用して、FS から eax に 2 バイトをロードしたいと考えています。LODS で使用されるデフォルトのセグメントは DS です。それを FS でオーバーライドしたいと考えています。MASMオペコードを使用してこれを行うにはどうすればよいですか?

00000000 (02) 6a30                     PUSH 0×30
00000002 (01) 5e                       POP ESI
00000003 (02) 64ad                     LODS EAX, [FS:ESI]

ここからのソースhttp://www.ragestorm.net/blogs/?p=369

どうもありがとう、マイケル・エングストラー

4

2 に答える 2

3

1) 今後、可能であれば、コード スニペットを投稿することを忘れないでください。いつも参考になります:)

2) 16 ビットのリアルモード LODS* 命令は、常にDS 、ES および AX を想定しています。これは変更できません。

3) FS を使用する場合は、"ASSUME NOTHING" ディレクティブも必要になる場合があります。例えば:

ASSUME FS:NOTHING
MOV EAX, FS:[0]
ASSUME FS:ERROR

'それが役立つことを願っています.. PSM

PS: アセンブラを学びたいだけなら、32 ビット プロテクト モードを試すことを強くお勧めします。興味があれば、ここに優れたリソースがあります。

于 2012-07-14T17:04:01.510 に答える
1

私は答えを見つけました。

lods dword ptr fs:[esi]
于 2012-07-14T17:20:59.990 に答える