標志寄存器 XLAT指令的內(nèi)容?
XLAT指令的內(nèi)容?查找指令xlat(xlat:字節(jié)查找轉(zhuǎn)換)。指令格式:xlattable,其中table是要查找的表的第一個地址。指令功能:將要查找的表的一個字節(jié)發(fā)送給Al累加器。在執(zhí)行指令之前,
XLAT指令的內(nèi)容?
查找指令xlat(xlat:字節(jié)查找轉(zhuǎn)換)。指令格式:xlattable,其中table是要查找的表的第一個地址。指令功能:將要查找的表的一個字節(jié)發(fā)送給Al累加器。在執(zhí)行指令之前,表應該被發(fā)送到BX寄存器,然后要檢查的字節(jié)和它從表中第一個地址的位移應該被發(fā)送到Al,即Al<--((BX)(Al))。執(zhí)行xlat將把要檢查的內(nèi)容發(fā)送給累加器。此指令也稱為轉(zhuǎn)換指令,其操作數(shù)是隱式的。在程序設計中,有時需要將一種代碼轉(zhuǎn)換成另一種代碼,如將數(shù)字0~9轉(zhuǎn)換成七段顯示設備所需的驅(qū)動程序等,可以通過xlat指令來實現(xiàn)。該指令只能進行字節(jié)運算,因此表的最大容量為256字節(jié)。指令不影響標志位。
匯編語言XLAT指令的使用方法?
Xlat是一個表查找指令,它將BX指向表的第一個地址。要轉(zhuǎn)換的參數(shù)放在al中。例如,下列程序段buf DB 3fh、06h、5bh、4fh、66h、6dh、7dh、07h、7FH、6fh lea BX、buf mov al、01h xlat被送到數(shù)碼管顯示,并顯示“1”。
也就是說,xlat可以用于代碼系統(tǒng)轉(zhuǎn)換
x DW 1122h、3344h、5566h、7788h
lea BX、x
mov Al、03h
xlat
結果Al為33H
xlat函數(shù):send((BX)(Al))to(Al)--簡單:將BX的第一個地址和Al的偏移地址的內(nèi)容發(fā)送到Al。
運行xlat之前,Al=3 BX=(x的第一個地址)
那么BX Al是33。。。為什么?注意高位地址放在下面
也就是說
-
22-----BX點在這里
11
44
33-----偏移地址Al是3的位置
-
xlat x
在執(zhí)行xlat之前,首先將X的地址發(fā)送給BX,并將偏移時間發(fā)送給al。
xlat是搜索指令(一個字節(jié))
XLAT指令的用法,能不能簡單的說一下?
xlat是表查找指令,它將BX指向表的第一個地址,al將參數(shù)放入以進行相互轉(zhuǎn)換。例如,將下列程序段bufdb3fh、06h、5bh、4fh、66h、6dh、7dh、07h、7FH、6fhleabx、bufmoval、01hxlat發(fā)送到數(shù)碼管進行顯示,并顯示“1”。也就是說,xlat可以用于代碼轉(zhuǎn)換
讓我給你舉個例子:
例如,在一個數(shù)據(jù)段中定義以下數(shù)據(jù):
數(shù)據(jù)段
xx1 DB?
XX2分貝?
Table DB“txsb”
data ends
然后執(zhí)行以下指令:
](MOV ax,data MOV DS,ax,我不會寫出來,你知道段寄存器指向數(shù)據(jù)段)
MOV Al,0
MOV BX,offset Table
xlat
執(zhí)行后,Al中的數(shù)據(jù)是t的ASCII碼。如果前一個Al是1,執(zhí)行后,Al中的數(shù)據(jù)是X的ASCII碼,2是s,3是b
xlat稱為換碼指令。顧名思義,必須改變。事實上,它的功能是將一個數(shù)據(jù)轉(zhuǎn)換為另一個數(shù)據(jù),前提是轉(zhuǎn)換后的數(shù)據(jù)和預轉(zhuǎn)換后的數(shù)據(jù)之間沒有相應的邏輯沒有人關心您是否要使用xlat。例如,txsb的ASCII碼與0、1、2、3之間沒有對應關系。Xlat對于快速數(shù)據(jù)轉(zhuǎn)換非常有用
另外,Xlat SS:[BP]你說的bluewander我試過了。編譯之后,它仍然是xlat。Xlat似乎忽略了所有的操作數(shù)。我查了一下說明書,好像沒有你說的表格?]我昨晚兩點鐘回答??戳藥讉€小時的動畫片后,我有點困惑-