从键盘输入一个单个字符,显示该字符的ASCII码,回车键退出循环,终止程序
codesegment
assume cs:code
start:
mov ah,01H
int 21H
mov bh,al ;将输入的字符的ascii 放到bh中
mov cx,2 ;设置两次循环
lk:
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 zxc ;判断是否是数字 是数字则跳转到num
cmp bl,09H
jbe num
cmp bl,0AH
jc zxc ; 由于字母中只能有ABCDEF所以除了ABCDEF外所有字母跳转到结束
cmp bl,0FH
jnbe zxc
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 ; 输出
zxc:
loop lk
mov ah,4ch
int 21H
code ends
end start