0

我有一个将数字转换为 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哪里 msgmsg db "abc"代码也不会去error套路。

如何解决这个问题?

4

1 回答 1

3

无符号除以 10 的余数永远不会小于 0 或大于 9,因此这些指令jljg指令永远不会跳转到error.

于 2013-02-23T03:31:25.227 回答