Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 检查是否为数字_Assembly_X86_Nasm - Fatal编程技术网

Assembly 检查是否为数字

Assembly 检查是否为数字,assembly,x86,nasm,Assembly,X86,Nasm,我有一个将数字转换为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 &g

我有一个将数字转换为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   
即使对于
mov eax,msg
其中
msg
msg db“abc”
代码也不会出现
错误
例程


如何解决这个问题?

无符号除10的余数永远不会小于0或大于9,因此那些
jl
jg
指令永远不会跳转到
错误

无符号除10的余数永远不会小于0或大于9,所以那些
jl
jg
指令永远不会跳转到
error

,但是有一个
addedx,48
。如果看到非数字,则该值可能大于“9”,对吗?请进行数学运算0'=48,...,'9'=57. 因此,无论您是直接将余数与0…9进行比较,还是先将48相加,然后再将总和与48…57进行比较,结果都不会改变。但是有一个
add edx,48
。如果看到非数字,则该值可能大于“9”,对吗?请进行数学运算0'=48,...,'9'=57. 所以,不管你是直接将余数与0…9进行比较,还是先加48,然后再与48…57进行比较,结果都不会改变。
    cmp edx,'0'     
    jl error        
    cmp edx,'9'     
    jg error