
比如在数据段里定义以下数据:
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:[bp]
我试了一下,编译之后还是xlat啊?xlat好像会忽略所有的 *** 作数吧?我查指令参考好像也没有你说的那种形式啊?
---------------------------------------
哦,我是用masm5试的,用masm6试了一下出来段了
xlat好像确实没用了
因为现在的cpu可以执行这条指令了:
mov
eax,[ebx+eax]
昨天晚上2点回答的,看了几个小时的动画片脑子有点乱了
-
-
XLAT是查表指令,将BX指向表的首地址,AL中放得是要做相互转换的参数,比如说如下程序段:
BUF DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
LEA BX,BUF
MOV AL,01H
XLAT
再送去数码管显示,就会显示出“1”了,也就是说XLAT可以用于码制转换。
扩展资料:
查表指令XLAT (XLAT:字节查表转换)。
指令格式:XLAT TABLE 其中TABLE为一待查表格的首地址。
指令功能:把待查表格的一个字节内容送到AL累加器中。在执行该指令前,应将TABLE先送至BX寄存器中,然后将待查字节与其在表格中距表首地址位移量送AL,即AL<--((BX)+(AL)). 执行XLAT将使待查内容送到累加器。
参考资料来源:百度百科-XLAT指令
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)