使用查表法将十六进制数转换为对应的ASCII码
一、实验内容:
本实验的核心任务是利用查表法将单个十六进制数转换为其对应的ASCII码,并将转换结果存储在ASCI单元中。
三、编程指南:
由于本实验指定使用查表法,首先需要建立一个名为TABLE的表格。在此表格中,按照十六进制数由小到大的顺序排列它们各自对应的ASCII码值。
DATA SEGMENT
TABLE DB 30H,31H,32H,33H,34H,35H,36H,37H
DB 38H,39H,41H,42H,43H,44H,45H,46H
HEX DB X ; X为待转换的十六进制数
ASCI DB ? ; 存放转换后的ASCII码
DATA ENDS
三、实验报告:
1. 程序说明。说明程序的功能、结构。
功能:用查表的方法将一位十六进制数转换成与它相应的ASCII码
结构:
(1) 编译
(2) 连接
(3) 运行
单步执行
2. 写出源程序清单和执行结果。
源程序清单
DATA SEGMENT ; 定义数据段
TABLE DB 30H,31H,32H,33H,34H,35H,36H,37H ; 查找表,存储十六进制数对应的ASCII码(0-7)
DB 38H,39H,41H,42H,43H,44H,45H,46H ; 查找表的续表,存储十六进制数对应的ASCII码(8-15)
HEX DB 0BH ; 待转换的十六进制数,这里示例为0B
ASCI DB ? ; 存放转换后的ASCII码的空间
DATA ENDS
CODE SEGMENT ; 定义代码段
ASSUME CS:CODE,DS:DATA ; 假设代码段寄存器CS指向当前代码段,数据段寄存器DS指向数据段
START: ; 程序开始标记
MOV AX,DATA ; 将数据段地址加载到AX寄存器
MOV DS,AX ; 将AX寄存器的值(数据段地址)移至DS寄存器
MOV BX,OFFSET TABLE ; 将TABLE的偏移地址加载到BX寄存器
MOV AL,HEX ; 将待转换的十六进制数加载到AL寄存器
AND AL,0FH ; 与操作,仅保留AL的低四位(十六进制数的一位)
XLAT ; 使用查表指令,基于AL的值和BX的地址计算出对应的ASCII码,存入AL
MOV DL,AL ; 将得到的ASCII码存入DL寄存器
MOV AH,2 ; 设置AH寄存器的值为2,用于调用中断服务
INT 21H ; 调用中断服务,功能是显示DL寄存器中的字符
MOV ASCI,DL ; 将转换得到的ASCII码存储到ASCI单元
MOV AX,4C00H ; 设置退出程序的中断号和返回码
INT 21H ; 调用中断服务,退出程序
CODE ENDS
END START ; 程序结束标记
执行结果