<<<    Index    >>>
3-716
INSTRUCTION SET REFERENCE
XLAT/XLATB—Table Look-up Translation
Description
This instruction locates a byte entry in a table in memory, using the contents of the AL register
as a table index, then copies the contents of the table entry back into the AL register. The index
in the AL register is treated as an unsigned integer. The XLAT and XLATB instructions get the
base address of the table in memory from either the DS:EBX or the DS:BX registers (depending
on the address-size attribute of the instruction, 32 or 16, respectively). The DS segment may be
overridden with a segment override prefix.
At the assembly-code level, two forms of this instruction are allowed: the “explicit-operand”
form and the “no-operand” form. The explicit-operand form (specified with the XLAT
mnemonic) allows the base address of the table to be specified explicitly with a symbol. This
explicit-operands form is provided to allow documentation; however, note that the documenta-
tion provided by this form can be misleading. That is, the symbol does not have to specify the
correct base address. The base address is always specified by the DS:(E)BX registers, which
must be loaded correctly before the XLAT instruction is executed.
The no-operands form (XLATB) provides a “short form” of the XLAT instructions. Here also
the processor assumes that the DS:(E)BX registers contain the base address of the table.
Operation
IF AddressSize = 16
THEN
AL 
<
 (DS:BX + ZeroExtend(AL))
ELSE (* AddressSize = 32 *)
AL 
<
 (DS:EBX + ZeroExtend(AL));
FI;
Flags Affected
None.
Protected Mode Exceptions
#GP(0)
If a memory operand effective address is outside the CS, DS, ES, FS, or
GS segment limit.
If the DS, ES, FS, or GS register contains a null segment selector.
#SS(0)
If a memory operand effective address is outside the SS segment limit.
#PF(fault-code)If a page fault occurs.
Opcode
Instruction
Description
D7
XLAT m8
Set AL to memory byte DS:[(E)BX + unsigned AL]
D7
XLATB
Set AL to memory byte DS:[(E)BX + unsigned AL]
<<<    Index    >>>