xlat指令(XLAT指令的用法,能不能简单的说一下)

本文目录
XLAT指令的用法,能不能简单的说一下
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即为查找指令 (一个字节)
xalt 换码指令正确吗
xalt换码指令正确
XLAT(换码指令)实现的功能:实现编码的快速转换实现的机理:初始化条件是在数据段建立一个转换表table,将该表的首地址加载给BX,在AL中加载要转换的编码。
汇编指令xlat
我给你举个例子:
比如在数据段里定义以下数据:
data
segment
xxx1
db
?
xxx2
db
?
table
db
’txsb’
data
ends
然后执行下面的指令:
(mov
ax,data
mov
ds,ax
我就不写出来了,你知道段寄存器指向数据段就行了)
mov
al,0
mov
bx,offset
table
xlat
执行之后,al中的数据就是t的ascii码了,如果前面的al中的值为1的话那么执行之后al中就是x的ascii码,2就是s,3就是b
xlat叫做换码指令,顾名思义,它肯定要换,其实它的作用就是将一个数据换成另一个数据,前提是转换后和转换前的数据没有对应的逻辑关系,当然有关系的你愿意用xlat也没人管你,比如上面的txsb的ascii码和0,1,2,3就没有对应的关系,xlat对于快速转换数据是非常有用的
另外
bluewanderer
你说的那个
xlat
ss:
我试了一下,编译之后还是xlat啊?xlat好像会忽略所有的操作数吧?我查指令参考好像也没有你说的那种形式啊?
---------------------------------------
哦,我是用masm5试的,用masm6试了一下出来段了
xlat好像确实没用了
因为现在的cpu可以执行这条指令了:
mov
eax,
昨天晚上2点回答的,看了几个小时的动画片脑子有点乱了
-
-
用三条mov指令实现xlat指令
xlat指令用于将AL寄存器中的值作为地址,从内存中取出一个字节并将其放入AL寄存器中。为了用三条mov指令来实现xlat指令,我们需要做以下步骤:
将AL寄存器中的值存储到一个临时寄存器中(例如,BX寄存器):
Copy code
mov bx, ax
将BX寄存器中的值作为地址,从内存中取出一个字节并将其放入AL寄存器中:
mov al,
恢复BX寄存器中的原始值:
mov bx, ax
这三条指令的组合可以实现与xlat指令相同的功能。
XLAT指令//这个指令什么单词的组合
XLAT: 换码指令(应该不是单词的组合,而是translate的缩写,就如xchg是exchange的缩写一样,“X”即“ex”相当於前缀“trans”都是“交换、转化”的意思。)。
执行操作: (AL) ← ((DS)×16+(BX)+(AL))
这条指令根据AL寄存器提供的位移量,将BX指示的字节表格中的代码换存在AL中。该指令还可写为:XLAT opr,opr为字节表格的首地址,因为opr所表示的偏移地址已存入BX寄存器,所以opr在换码指令中可有可无,有则可提高程序的可读性。
XLAT指令的举例
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,
XLAT指令的介绍
XLAT指令(Translate):换码操作:以DS:为地址,提取存储器中的一个字节再送入AL。
XLAT指令
这是一条查表指令,AL的值是3,就是查表中第三个单元,第三个单元的值是16H,(AL)=34H

更多文章:
maven仓库jar网站(如何在maven仓库中添加jar包)
2026年10月10日 19:50
利用地理空间数据云下载dem数据怎么知道具体位置?DEM数据获取
2026年10月10日 18:30
单例模式的几种实现方式(么是单例模式,并写出单例模式的2种实现方式)
2026年10月10日 17:10
easyui和elementui哪个好(element-ui 可以做网站吗)
2026年10月10日 14:00
tcp ip协议体系大致可以分成(TCP/IP体系共有几个层次)
2026年10月10日 12:30
写出sql语句五个(帮忙写5个sql语句,全部写对给70分,写对一条给10分)
2026年10月10日 12:10
diversity and distribution(贵州省英文简介)
2026年10月10日 11:20





