您的位置首页百科知识

CMP:CMP DL,39H 为什么和39h比较那,39h又是什么,这样有什么用?

CMP:CMP DL,39H 为什么和39h比较那,39h又是什么,这样有什么用?

我给你的程序加上了注释,你可以看哈!应该就会了,你说的后面一部分衫腔行和前面的是一样的!30H是0的ASCII码的16进制形式,算法比较简单的,为或哗了便于显示而加上了30H。39H就是9的ASCII码圆斗的16进制数!\x0d\x0a\x0d\x0a.MODEL SMALL \x0d\x0a.CODE \x0d\x0aASC PROC FAR \x0d\x0aPUSH DS \x0d\x0aXOR AX,AX \x0d\x0aPUSH AX \x0d\x0aMOV AH,1 \x0d\x0aINT 21H ;调用1号中断输入ASCII码\x0d\x0a\x0d\x0aMOV DL,AL \x0d\x0aMOV BL,AL ;AL里面是输入的\x0d\x0a\x0d\x0aMOV CL,4 \x0d\x0aSHR DL,CL;右移4位,去掉高4位,就是10进制数转化为16进制的算法4位4位\x0d\x0a;转化\x0d\x0aADD DL,30H ;加上30H便于显示,在这里的判断也可以与9的比较而不加30H\x0d\x0aCMP DL,39H ;39H是9的ASCII码的16进制形式\x0d\x0aJLE L1 ;跳说明它小于等于9,可以直接显示了\x0d\x0aADD DL,07H ;加7就变成A B C D E F等值 \x0d\x0a;后面的就是处理低位了,算法是一样的\x0d\x0aL1: MOV AH,2 \x0d\x0aINT 21H \x0d\x0aMOV DL,BL \x0d\x0aAND DL,0FH \x0d\x0aADD DL,30H \x0d\x0aCMP DL,39H \x0d\x0aJLE L2 \x0d\x0aADD DL,7 \x0d\x0aL2: MOV AH,2 \x0d\x0aINT 21H \x0d\x0aRET \x0d\x0aASC ENDP \x0d\x0aEND ASC