汇编当中XLAT查表指令的用法
2014-06-05 17:52阅读:
查表指令 XLAT (XLAT: 字节查表转换)。
指令格式:XLAT TABLE
其中TABLE为一待查表格的首地址。
指令功能:把待查表格的一个字节内容送到AL累加器中。在执行该指令前,应将TABLE先送至BX寄存器中,然后将待查字节与其在表格中距表首地址位移量送AL,即AL<--((BX)+(AL)).
执行XLAT将使待查内容送到累加器。
本指令不影响状态标位,表格长度不超过256字节。
3.1 例一
X DW 1122H,3344H,5566H,7788H。
LEA BX,X。
MOV AL,03H。
XLAT。
结果AL为33H。
XLAT作用:将((BX)+(AL))送给(AL)----简单:将BX为首
地址的,
偏移地址为AL的内容送给AL。
在运行XLAT之前,AL=3 BX=(X的首地址)。
这时BX+AL就是33....为什么?注意高地址放在下面。
也就是。
--------------
22------BX指向这里。
11。
44。
33-----偏移地址AL为3的位置就是这里。
--------------
XLAT X。
在执行XLAT之前,先将X的地址送给BX,偏移次数送给AL。
XLAT即为查找指令 (一个
字节)。
3.2 例二
;
xlat指令测试。
;
汇编语言查表指令 XLAT。
; 查表指令 XLAT。
; 指令格式:XLAT TABLE 其中TABLE为一待查表格的首
地址。
; 指令功能:把待查表格的一个字节内容送到AL
累加器中。在执行该指令前,
; 应将TABLE先送至BX寄存器中,然后将待查字节与其在表格中距表首地址位移量送AL,
; 即(AL)<--((BX)+(AL)). 执行XLAT将使待查内容送到累加器。
注意:是将bx和al中的值相加再取地址
; 本指令不影响状态标位,表格长度不超过256字节。
assume cs:code,ds:data。
data segment。
tab db 1000000b,1111001b,0100100b,0110000b。
db 0011001b,0010010b,0000010b,1111000b。
db 0000000b,0010000b,0001000b,0000011b。
db 1000110b,0100001b,0000110b,0001110b。
db 0010110b,0100001b,0010010b,0110000b.
XCODE db 9。
YCODE db ?。
data ends。
code segment。
start:
mov ax,data。
mov ds,ax。
mov bx,offset tab。
mov al,XCODE。
and al,0fH。
xlat 。
mov YCODE,al。
mov ah,4cH。
int 21H。
code ends。
end start。
3.3 例三

如图,
数据段中存放有一张ASCII码转换表,设首
地址为2000H,现欲查出表中第11个代码的ASCII码。
可用如下指令实现:
MOV BX,2000H ;BX←表首地址
MOV AL,0BH ;AL←序号
XALT ;查表转换
执行后:AL = 42H
还可用其他方法实现,如:
MOV BX,0BH
MOV AL,[BX+2000H]