5

アドレスを指すのに問題があり、私の場合、サイズがバイトの変数を書きます。これにより、「エラー:有効なアドレスが無効です」というエラーが表示されます。

mov byte[AX], byte 0x0

いくつかの試行錯誤の後、EAXを使用して同じことをテストしました。これはうまくコンパイルされます:

mov byte[EAX], byte 0x0

ここで何が欠けていますか?

4

1 に答える 1

14

[AX]無効なメモリ オペランド指定です。

有効な 16 ビットのものは次のとおりです。

[constant]  
[BX]  
[SI]  
[DI]  
[BX+constant]  
[BP+constant]  
[SI+constant]  
[DI+constant]  
[BX+SI]  
[BX+DI]  
[BP+SI]  
[BP+DI]  
[BX+SI+constant]  
[BX+DI+constant]  
[BP+SI+constant]  
[BP+DI+constant]  

[BP] は正式には無効ですが、多くのアセンブラーは静かに [BP+0] に変換します。

メモリ オペランドのエンコーディングと ModR/M および SIB バイトについては、CPU のマニュアルを参照してください。

于 2012-09-18T09:32:02.323 に答える