cmp al,'0'
je true
cmp al,'1'
je true
cmp al,'2'
je true
cmp al,'3'
je true
cmp al,'4'
je true
cmp al,'5'
je true
cmp al,'6'
je true
cmp al,'7'
je true
cmp al,'8'
je true
cmp al,'9'
je true
jne error
我很感兴趣如何使用间隔和ASCII码来减少数量的cmp。 谢谢。
答案 0 :(得分:3)
ASCII码是数字。当你写'0'时,汇编程序将它转换为30h = 48d。正如您在this ASCII table中看到的那样,字母'0'到'9'由连续数字30h..39h表示。因此,您可以撤销支票:如果al
低于'0'或al
高于'9',则转到error
。您只需要进行两次比较:
cmp al,'0'
jb error ; jump if below
cmp al,'9'
ja error ; jump if above
true: