我有一个将数字转换为ASCII的例程。问题是数字检查,不起作用。
.loop1:
xor edx,edx ;0
mov ebx,10 ;divisor
div ebx ;eax = eax/ebx
add edx,48 ;eax += 48
cmp edx,'0' ;if(edx < '0')
jl error ; error()
cmp edx,'9' ;if(edx > '9')
jg error ;error()
push edx ;put value into STACK
add esi,1
test eax,eax
jz loop2
jmp loop1
问题是:
cmp edx,'0'
jl error
cmp edx,'9'
jg error
即使对于mov eax,msg
msg
msg db "abc"
error
,代码也不会{{1}}例程。
如何解决这个问题?
答案 0 :(得分:3)
无符号除法除以10的余数永远不会小于0或大于9,因此jl
和jg
指令永远不会跳转到error
。< / p>