x86汇编_Irvine32链接库的子过程isdigit源代码讲解_笔记42

Irvine32链接库的isdigit源代码

首先回顾一下0~9这10个字符以ASCII码表示,它们的二进制、十六进制、十进制分别是什么。

二进制十进制十六进制字符
001100004830H0
001100014931H1
001100105032H2
001100115133H3
001101005234H4
001101015335H5
001101105436H6
001101115537H7
001110005638H8
001110015739H9

Isdigit子过程的功能是,检查存放在AL寄存器里的内容,按照ASCII标准是否可以解释为字符0~9,如果是ZF=1,否则ZF=0。源代码如下:

Isdigit PROC
    cmp al, 00110000b
    jb ID1             ;al如果小于00110000b那么相减会得负数,证明al小于0。ZF自动被设置为0。
    cmp al, 00111001b
    ja ID1             ;al如果大于00111001b那么相减结果正数,证明al大于0。ZF自动被设置为0。
    test ax,0          ;如果以上都通过,利test将ZF设置为1。
ID1: ret
Isdigit ENDP

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值