操作碼 |
指令 |
說明 |
D7 |
XLAT m8 |
將 AL 設定為記憶體位元組 DS:[(E)BX + 無符號 AL] |
D7 |
XLATB |
將 AL 設定為記憶體位元組 DS:[(E)BX + 無符號 AL] |
將 AL 暫存器的內容用作表格索引,確定記憶體表格中的位元組項,然後將該表格項的內容複製回 AL 暫存器。AL 暫存器中的索引視作無符號整數。XLAT 與 XLATB 指令從 DS:EBX 或 DS:BX 暫存器獲取記憶體中表格的基址(具體取決於指令的地址大小屬性,分別為 32 或 16)。(DS 段可以使用跨段字首覆蓋)。
在彙編程式碼級別,此指令允許採用兩種形式:“顯式運算元”形式與“無運算元”形式。顯式運算元形式(使用 XLAT 助記符指定)可以使用符號明確指定表格的基址。提供此顯式運算元形式是爲了便於記錄;不過請注意,此形式提供的記錄可能會令人誤解。也就是說,符號不必指定正確的基址。基址總是由 DS:(E)BX 暫存器指定,在執行 XLAT 指令之前,必須正確載入這些暫存器。
無運算元形式 (XLATB) 提供“簡短形式”的 XLAT 指令。這裡處理器還假設 DS:(E)BX 暫存器包含表格的基址。
IF AddressSize 16
THEN
AL (DS:BX + ZeroExtend(AL))
ELSE (* AddressSize 32 *)
AL (DS:EBX + ZeroExtend(AL));
FI;
無。
#GP(0) - 如果記憶體運算元有效地址超出 CS、DS、ES、FS 或 GS 段限制。如果 DS、ES、FS 或 GS 暫存器包含空的段選擇器。
#SS(0) - 如果記憶體運算元有效地址超出 SS 段限制。
#PF(錯誤程式碼) - 如果發生頁錯誤。
#GP - 如果記憶體運算元有效地址超出 CS、DS、ES、FS 或 GS 段限制。
#SS - 如果記憶體運算元有效地址超出 SS 段限制。
#GP(0) - 如果記憶體運算元有效地址超出 CS、DS、ES、FS 或 GS 段限制。
#SS(0) - 如果記憶體運算元有效地址超出 SS 段限制。
#PF(錯誤程式碼) - 如果發生頁錯誤。