一、什么是汇编查表法?
查表法:提前在数据段定义一张「数据表格」,根据索引值(下标)从表格中取出对应数据。
核心优势:
无需计算,速度极快
代码简单、不易出错
适合:平方表、立方表、数码管显示表、ASCII 转换、成绩映射
核心公式(必考)
有效地址 = 表首地址 + 索引 × 数据宽度
二、经典案例:数字 0~9 平方查表
需求:提前建立 0~9 的平方表,输入一个数字下标,查表得到对应平方值。
平方表:0,1,4,9,16,25,36,49,64,81
完整可运行代码
; 汇编查表法实战——平方表查询
DATA SEGMENT ; 定义0~9平方表,每个数据1字节
SQUARE_TABLE DB 0,1,4,9,16,25,36,49,64,81
NUM DB 3 ; 需要查询的下标(此处查询 3的平方)
RESULT DB ? ; 存放查询结果
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
; 初始化数据段 MOV AX,DATA
MOV DS,AX
; 查表核心代码
MOV BX,OFFSET SQUARE_TABLE ; BX = 表格首地址
MOV AH,0 ; 清空高位,保证BX偏移正确
MOV AL,NUM ; AL = 查询下标
XLAT ; 查表指令:DS:[BX+AL] -> AL
MOV RESULT,AL ; 保存结果
; 程序退出
MOV AH,4CH
INT 21H
CODE ENDS END START
三、核心指令 XLAT 详解(查表专用)
XLAT是汇编专属查表指令,专门用来做查表!
执行规则:
AL = DS:[BX + AL]
BX:存放数据表的首地址
AL:存放查询下标
执行后 AL 自动变成查表结果
本例中:下标为3,查表得到9,结果正确。
四、手动寻址查表(不使用XLAT,考试万能写法)
有些老师要求不能用XLAT,必须手动偏移寻址,这里给大家通用标准写法:
MOV BX,OFFSET SQUARE_TABLE
MOV AL,NUM
MOV AH,0
ADD BX,AX ; 首地址+偏移
MOV AL,[BX] ; 取出表格数据
MOV RESULT,AL
原理完全一致,考试、作业通用满分写法。
五、一字节/两字节查表区别(易错点)
上面案例是DB 1字节数据,下标直接用。
如果是DW 两字节数据(16位数据),需要下标×2!
公式:偏移 = 下标 * 2
这是期末考试最大坑点!
六、查表法万能步骤(背诵即可)
在数据段定义表格(DB/DW)
将表格首地址送入 BX
将查询下标送入 AL
XLAT 查表 / 手动偏移寻址
保存结果
七、总结
查表法核心:以空间换时间
XLAT是专属查表指令,极简高效
1字节直接查,2字节必须乘2
是汇编期末、实验、面试高频考点
点赞收藏,期末汇编不挂科!持续更新汇编必考知识点!