2013-03-26 72 views
1

我是一個彙編語言的初學者..我對這段代碼有一個問題..它只是不斷給我這個錯誤 - 代碼 - 不是..:?此函數應該反轉一個數字組裝MOVS指令

rev proc _x:word 
uses EAX, EDX, EBX, ECX 
LOCALS 
MOV EBX, 0 
MOV Cx,10 
MOV AX, _x 
CWD 
DIV CX 
iMUL EBX,10 
MOVS EDX,DX ; error Operand types do not match.. 
push EAX 
MOV AX, DX 
Again:CWDE 
Add EBX, EAX 
POP EAX 
cmp EAX, 0 
JA again 
ret 
endp rev 
+0

您是否試圖將'DX'零延伸到'EDX'? – Mysticial 2013-03-26 00:10:03

+0

[operend類型不匹配&非法指令]可能重複(http://stackoverflow.com/questions/15621590/operend-type-do-not-match-illegal-instruction) – nrz 2013-03-26 00:12:02

+0

它應該被簽名.. Isn' t爲正值而零延伸:? – geekybedouin 2013-03-26 00:12:51

回答

2

彙編程序可能認爲您需要MOVSB/MOVSW/MOVSD指令。它的操作數(隱式)確實具有相同的大小。

MOVSX而不是MOVS