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どこに msgあるとしても、ルーチンにはなりません。msg db "abc"error

これを修正する方法は?

4

1 に答える 1

3

10 による符号なし除算の剰余が 0 未満または 9 を超えることは決してないため、それらjljg命令が にジャンプすることはありませんerror

于 2013-02-23T03:31:25.227 に答える