规则:二进制转换成十六进制且输出,四位四位判断其值范围,如果在0000-1001范围加30H,如果在1010-1111范围加37H
例如:从键盘上输入A,系统存的是二进制数01000001B,先把8bit分成高低各4bit,先输出高四位,因为0100<1001,所以加30H,0100B=04H,04H+30H=34H,ASCII为34H对应的是数字4,所以输出4,再输出低四位,0001B<1001B,所以加30H,0001B=01H,01H+30H=31H,ASCII为31H对应的数字是1,所以屏幕上输出1,这样就完成了A的ASCII的显示(41)
再举一个例子:从键盘上输入Z,系统存的是01011010B,先处理高四位0101,因为0101B<1001B,所以加30H,0101B=05H,05H+30H=35H,ASCII为35H对应的是5,所以在屏幕上先输出5,再处理低四位1010,1010B>=1010B,所以加37H,1010B=0AH,0AH+37H=41H,ASCII为41H对应的是A,所以屏幕上输出A,这样就完成了Z的ASCII的显示(5A)
再举一个例子:从键盘上输入6,系统存的是00110110B,先处理高四位0011,0011B<1001B,所以+30H,0011B=03H,03H+30H=33H,ASCII为33H对应的是数字3,所以在屏幕上输出一个3,再处理低四位0110,0110B<1001B,所以+30H,0110B=06H,06H+30H=36H,ASCII为36H对应数字6,所以屏幕上输出6,这样就完成了6的ASCII的显示(36)
下面是代码
;由键盘输入任意一个字符,将该字符的ASCII码值显示在屏幕上
DATA SEGMENT
MES DB 'Please input a char',0AH,0DH,'$'
KONG DB 0AH,0DH,'$'
SD DB 'The ascII is $'
char1 DB 0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET MES ;显示提示信息
MOV AH,09H
INT 21H ;提示信息完成
MOV AH,1
INT 21H ;键盘输入字符
MOV char1,AL
MOV AH,09H
MOV DX,OFFSET KONG ;显示换行信息
INT 21H
MOV DX,OFFSET SD
MOV AH,09H
INT 21H ;显示提示信息
AND AL,0F0H ;取高四位
MOV CL,4
SHR AL,CL ;逻辑右移
CMP AL,0AH ;是否是A以上的数
JB C2
ADD AL,07H
C2: ADD AL,30H
MOV DL,AL ;显示字符
MOV AH,02H
INT 21H
MOV AL,char1
AND AL,0FH ;取低四位
CMP AL,0AH
JB C3
ADD AL,07H
C3: ADD AL,30H
MOV DL,AL
MOV AH,02H
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START