所以我在[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命令的观点。
答案 0 :(得分:0)
写作时
add ax,[ebp-4]
你还在[ebp-3]添加高字节。这很可能不是空的。我甚至猜它包含一个0xA值(换行)...
解决方案可能是
movzx bx,[ebp-4]
add ax,bx