簡介
彙編語言查表指令,英文縮寫為XLAT,是一種指令程式。
內容
查表指令XLAT (XLAT:位元組查錶轉換)。
指令格式:XLAT TABLE 其中TABLE為一待查表格的首地址。
指令功能:把待查表格的一個位元組內容送到AL累加器中。在執行該指令前,應將TABLE先送至BX暫存器中,然後將待查位元組與其在表格中距表首地址位移量送AL,即AL<--((BX)+(AL)). 執行XLAT將使待查內容送到累加器。
該指令又可以稱為翻譯指令,其運算元是隱含的。在程式設計中,有時要把一種代碼轉化為另一種代碼,如:數字0~9轉化為7段顯示器件所需要的驅動代碼等,就可以採用XLAT指令來實現。
該指令只能是位元組操作,所以表格的最大容量為256位元組。指令不影響標誌位。
舉例
例一
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即為查找指令 (一個位元組)。
例二
;xlat指令測試。
; 彙編語言查表指令 XLAT。
; 查表指令 XLAT。
; 即(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。
例三
如圖,數據段中存放有一張ASCII碼轉換表,設首地址為2000H,現欲查出表中第12個代碼的ASCII碼。
可用如下指令實現:
MOV BX,2000H ;BX←表首地址
MOV AL,0BH ;AL←序號
XLAT ;查錶轉換
執行後:AL = 42H
還可用其他方法實現,如:
MOV BX,0BH
MOV AL,[BX+2000H]