8086汇编语言---查找表

通过查表的方法实现十六进制数转换为 ASCII 码。0~9 的 ASCII 码为 30H~39H,而 A~F 的 ASCII 码为 41H~46H,这样就可以将 0~9 与 A~F 对 应的 ASCII 码保存在一个数据表格中。

SSTACK SEGMENT STACK 
    DW 32 DUP(?) 
SSTACK ENDS 
PUBLIC ASCH, ASCL, HEX ;定义全局变量 
DATA SEGMENT ;十六进制数 0~9,A,B,C,D,E,F 对应 ASC 码表 
TAB DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H 
 DB 41H,42H,43H,44H,45H,46H 
HEX DB ? ;待转换的十六进制数 
ASCH DB ? ;高 4 位转换的 ASCII 码 
ASCL DB ? ;低 4 位转换的 ASCII 码 
DATA ENDS 
CODE SEGMENT 
 ASSUME CS:CODE, SS:SSTACK, DS:DATA 
START: PUSH DS 
       XOR AX, AX 
       MOV AX, DATA 
       MOV DS, AX 
AA1: MOV AL, HEX ;需转换的十六进制数 
       MOV AH, AL 
       AND AL, 0F0H 
       MOV CL, 04H 
       SHR AL, CL 
       MOV BX, OFFSET TAB ;表首地址存放于 BX 中 
       XLAT 
       MOV ASCH, AL ;存放十六进制数高 4 位的 BCD 码 
       MOV AL, AH 
       AND AL, 0FH 
       XLAT 
       MOV ASCL, AL ;存放十六进制数低 4 位的 BCD 码 
       NOP 
       JMP AA1 ;在此处设臵断点,观察转换结果 
CODE ENDS 
     END START 

代码分析:

1、备份原始的需要转换的十六进制数HEX值到AL AH当中,防止HEX丢失

2、此时AL,AH都存有HEX的值,将AL和F0H相与,然后就可以只保留AL的高四位,随后SHR使得高四位移动到低四位的位置,高位补0

3、将表首地址存放于BX当中,随后XLAT通过处理过的AL从TAB表中查找并获得行营的ASCII码,赋值给AL

4、将AL中的数值存入ASCH当中。

5、随后将储存好的AH的内容重新移入AL,使得AL当中依然保留HEX的值,然后重新实现以上查找表的功能。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值