アセンブルおよびリンクされたリアル モード プログラムの作成方法を学習しています。
- GCC アセンブラ バージョン 2.25
- Binutils バージョン 2.25
- GCC バージョン 5.2.0
接頭辞を指定せずにIntel構文を使用します.intel_syntax noprefix
文字列のアドレスをSIレジスタにロードしたい。NASMでメモリ位置を参照する方法は知っていますが、GNU Assembler コード内で同じことを行うと、ラベルのアドレスではなく、文字列の WORD のみがレジスタに移動されます。
私のコードは次のとおりです。
.code16
.intel_syntax noprefix
mov cx, 11
mov si, name
mov di, 0x7E00
push di
rep cmpsb
pop di
je LOAD
GCC でコンパイルすると、デバッガーでプロセッサの動作を確認できます。
mov si, WORD ptr ds:0x7d2d
しかし、文字列が指すデータではなく、文字列のアドレスをレジスタに移動したいのです。
また、次のように名前を角括弧で囲みました。
.code16
.intel_syntax noprefix
mov cx, 11
mov si, [name]
mov di, 0x7E00
push di
rep cmpsb
pop di
je LOAD
違いはありません。
NASMから、このアセンブリ コードが機能することがわかっています。
mov si, name
NASMname
は、 のアドレスをレジスタSIに移動する命令を生成します。
私の質問:プレフィックスなしの Intel 構文を使用してGCCにシンボルのアドレスをレジスタにロードさせる方法はありますか?