如何正确使用查表指令XLAT ?
XLAT指令简介
①功能:完成一个字节的查表转换功能。将DS:[BX+AL]指向的字节单元的内容送给AL。其中,BX存放的是DS段内表首元素的偏移地址,AL存放的是表内元素相对于表首的偏移
量。(可以看作是对一维数组的访问)
②说明:使用该指令需要先在数据段中建立一张字节类型的表,该表的最大长度为256字节。
简单举个例子
- 建立一个字符数组,其中为26个大写英文字 母,使用XLAT指令,获取其中的字母“z”,并进行输出
data segment
arr db 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov es,ax
lea bx,arr
mov al,25
xlat ;把al中的值变为[bx+al],即al地址变为bx+al
mov dl,al
mov ah,2
int 21h
mov ax,4ch
int 21h
ends
end start
实例:
设计程序(非子程序实现)利用XLAT指令把十六进制数转换成ASCII码。假设ASCII码存放在以DAT1为首地址的数据区中,对应的16进制数放在以DAT2为首地址的数据区中,转换结果送以DAT3为首地址的数据区中。分析:在数据区中建立所需要的ASCII码表。在非子程序结构中直接使用。
DATA SEGMENT
DAT1 DB
30H,31H,32H,33H,34H,35H,36H,37H,38H,39H
DAT2 DB 5
DAT3 DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
LEA BX,DAT1;将表首地址送给BX
MOV AL,DAT2 ;将偏移量送给AL
XLAT
MOV DAT3,AL
MOV AH,4CH
INT 21H
CODE ENDS
END START
查表程序设计