2011-12-23 79 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" 

爲什麼NA​​SM給我這個錯誤消息:操作碼和操作數的組合無效? (86 DOS)

第5行錯誤:操作碼的無效組合和操作數

mov byte [str1+2], [char] 

在此行中我試圖將存儲在*char上的字節移動到地址*str1+2

回答

7

英特爾架構處理器通常不能在一條指令中將數據從內存傳輸到內存。你需要寫類似:

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

有一個execption,'movs'確實從內存轉移到存儲在一個指令,但它不會讓你自由選擇的尋址模式。 – hirschhornsalz 2011-12-23 09:47:22

+0

此答案需要添加標籤:*「如何附加/編輯/修改字節數組」*。我有一個不是NULL終止的緩衝區('1 + 2;')。當我到達';'時,我想附加一個'0x00'字節。這終於讓我瞭解了這一點。真棒! – IAbstract 2015-04-21 14:32:08