nasm x86アセンブラで[]を使用してアドレスを操作する方法を理解したいと思います。この構文は、nasm x86アセンブリ言語の意味(MOV [EBX]、110)は何ですか?
MY_TABLE TIMES 10 DW 0 ; Allocates 10 words (2 bytes) each initialized to 0
MOV EBX, [MY_TABLE] ; Effective Address of MY_TABLE in EBX
MOV [EBX], 110 ; MY_TABLE[0] = 110
ADD EBX, 2 ; EBX = EBX +2
MOV [EBX], 123 ; MY_TABLE[1] = 123
MOV EBX、[MY_TABLE] - ここでEBXにコピーEBXレジスタまたはMY_TABLEのアドレスにコピーMY_TABLEの値がレジスタ? []がそれ
MOV [EBX]、110の内側に指定されたアドレスの値を与えるので、私はこれを求めています - ここでは何が起こるか、私は構文を理解することはできません!
EBXが指すアドレスに110を移動します。しかし、NASMには有効なNASMコードではないデフォルト設定(見つからない)がない限り、NASMは明示的なオペランドサイズを必要とします(良いアセンブラのように)。 –
サイズを知ることができます(MY_TABLEは単語サイズとして定義されています)。 'MOV [EBX]、110 'はあいまいです。この場合、アセンブラは何をしますか? – Tommylee2k
line2のコメントが間違っています。実効アドレスをロードするには、LEA(ロード実効アドレス)が正しいでしょう。 (または 'MOV EBX、offset My_table'を使って)。これはアドレスmy_tableの内容をEBX(最初の2つの値、ebxは32ビット、my_tableは16のバイト値)に移動します。 – Tommylee2k