2013-03-26 70 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