2011-12-23 7 views
1
org 100h 

mov ah, 9 
mov dx, str1 
mov byte [str1+2], [char] 
int 21h 

mov ah, 4Ch 
int 21h 

str1 db 'String$' 
char db "o" 

なぜNASMは私に、このエラーメッセージ出すん:私はこの行のオペコードの組み合わせが無効とオペランドオペコードとオペランドの組み合わせが無効ですか? (x86のDOS)

mov byte [str1+2], [char] 

:5行目

エラー*charに格納されているバイトをアドレス*str1+2に移動しようとしています。

答えて

7

Intelアーキテクチャのプロセッサは、一般に、1命令でメモリからメモリにデータを転送できません。 execption、 `movs`は1つの命令でメモリからメモリへの転送を行いますが、それはあなたが自由にアドレッシングモードを選択することはできませんがあり

mov byte al, [char] 
mov byte [str1+2], al 
+1

:あなたのような何かを記述する必要があります。 – hirschhornsalz

+0

この回答には、タグが追加されている必要があります。*「バイト配列を追加/編集/変更する方法」*。私はNULLで終了していないバッファ( '1 + 2;')を持っています。私が ';'に行くと、 '0x00'バイトを追加したかったのです。これはついにそれを私にもたらしました。驚くばかり! – IAbstract

関連する問題