从键盘输入一个单个字符,显示该字符的ASCII码(十六进制),回车键退出循环,终止程序。

CODES SEGMENT
ASSUME CS:CODES
START:
MOV AH,01H
INT 21H
MOV bh,al ; 将输入的字符的ASCII码 放到BH
MOV cx,2 ; 设置两次循环

BR:
rol BX,1
rol BX,1 ; 采用循环左移 4次将ah中 高四位的值放到放到bl中
rol BX,1
rol BX,1

AND bl,0FH ; 用AND语句 实现bl中低四位为原值,高四位为0

CMP bl,00H ; 由于输入的是字符被存入的是ACSII码 只有字母和数字
JC SUN ; 判断是否是数字 是数字则跳转到NUM
CMP bl,09H
JBE num
CMP bl,0AH
JC SUN ; 字母中只能有ABCDEF所以除了ABCDEF外所有字母跳转到结束
CMP bl,0FH
jnbe SUN
ADD bl,37H ; 是字母就加上37H 就会转换为其字母对应的ACSII码
JMP output ; 例如 从A转换到41H

num:
ADD bl,30H
JMP output ; 是数字的话直接加上30H 转为其数字对应的ACSII码
output:
MOV dl,bl
MOV ah,02H
int 21H ; 输出
SUN:
loop BR
MOV ah,4ch
int 21H

CODES ENDS
END START

 

 

 

posted @ 2021-06-16 17:25  Bruce_Sun  阅读(1383)  评论(0)    收藏  举报