8086从键盘输入待转换的两位16进制数,实现当给定一个需要转换的16进制数时,就可以快速的在表格中找出对应的ASC码值
时间: 2024-12-21 10:23:46 浏览: 38
在8086汇编语言中,为了实现这个功能,你需要通过以下几个步骤:
1. **设置输入和处理**:
- 首先,使用INT 21H中断向量读取用户输入的两个十六进制字符。这个中断服务程序会将两个字符存储在AH和AL寄存器中。
```assembly
; 模拟读取两个十六进制字符
MOV AH, 01h ; INT 21H - 输入函数
INT 21h ; 读入第一个字符到AL
MOV BH, AL ; 存储第一个字符
MOV AL, 0 ; 清空AL准备读第二个字符
INT 21h ; 再次读入第二个字符到AL
```
2. **解析十六进制字符**:
- 将两个字符分别转换为十进制数值。`AL`和`BH`现在包含两个十六进制数,可以使用`OR`操作符合并并右移一位来获取每个数字(因为最右边的一位是十六进制的A-15)。
```assembly
MOV DL, AL ; 分离高位字节
AND DL, 0Fh ; 取模16得到十进制数
ADD DL, 7 ; 十六进制转十进制加7(A=10, B=11, ... F=15)
MOV CL, BH ; 分离低位字节
AND CL, 0Fh ; 同上,取模16并转换
ADD CL, 7 ;
```
3. **查找ASCII值**:
- 现在你可以将这两个十进制值相加,因为16进制数的每一位对应ASCII表中的一个字符,通常是连续的。比如十六进制的A对应ASCII的65,B对应66,以此类推。
```assembly
ADD DL, CL ; 总和作为ASC码的高8位
```
4. **显示结果**:
- 转换完成后,可以用INT 21H的02h中断向量将总和输出到屏幕上,或者直接保存到内存地址,以便后续查看。
```assembly
MOV AH, 02h ; INT 21H - 输出字符
ADD DL, '0' ; ASC码加上ASCII '0'表示实际的十进制字符
INT 21h ; 输出字符
阅读全文
相关推荐

















