在汇编中,我是否错过了使用cmp命令的内容?

时间:2014-10-11 06:18:03

标签: assembly

所以我在[ebp-2]和[ebp-4]上都置零,我尝试将单独的字符转换为它们的实际整数值。我的问题是当我输入' 00' ,程序不会跳转到我指定的标签。

sub byte[ebp-2],30h   ; convert characters to integer
sub byte[ebp-4],30h
mov al,10       ;multiply by 10 for the tens value
mul byte[ebp-2] 
add ax,[ebp-4] ; add the ones to the computed tens value which is contained in ax
cmp ax,0
je cond_while1

起初,我认为ax可能没有获得值但是没有,ax获得整数的实际值。我通过打印值来测试它。以下是我测试的方法:

mov [ebp+4],ax
add byte[ebp+4],30h  ;convert it back to character
mov eax,4  ;print it out
mov ebx,1
lea ecx,[ebp+4]
mov edx,1
int 80h

上面的代码在输入00时输出0,在输入01时输出1,这意味着我转换值没有任何问题。我错过了cmp命令吗?我还在学习汇编,所以我不知道我是否错过了关于cmp命令的观点。

1 个答案:

答案 0 :(得分:0)

写作时

add ax,[ebp-4]

你还在[ebp-3]添加高字节。这很可能不是空的。我甚至猜它包含一个0xA值(换行)...
解决方案可能是

movzx bx,[ebp-4]
add ax,bx