我給你舉個例子:
比如在資料段裡定義以下資料:
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點回答的,看了幾個小時的動畫片腦子有點亂了 - -
我給你舉個例子:
比如在資料段裡定義以下資料:
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點回答的,看了幾個小時的動畫片腦子有點亂了 - -