🔄 Команда XLAT (eXchange Look-up Table) — Трансляция по таблице

Команда XLAT (или XLATB) используется для поиска значения в таблице.
Она заменяет содержимое регистра AL значением из таблицы, используя AL как индекс.


📌 Синтаксис:

XLAT [адрес]
XLATB
  • [адрес]необязательный аргумент, который просто служит комментарием.
  • XLATB — то же самое, что XLAT, просто альтернативное обозначение.

🛠 Как работает XLAT?

  • Берёт таблицу (массив байтов) по адресу DS:BX.
  • Использует AL как индекс.
  • Читает байт с адреса DS:BX + AL и записывает его обратно в AL.

🔹 Алгоритм:

AL ← DS:[BX + AL]

📌 Пример кода: преобразование символов

Допустим, у нас есть таблица шифрования (простая подстановка символов).

.data
table db 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'  ; Таблица символов (A-Z)
 
.code
mov bx, offset table  ; Указываем BX на начало таблицы
mov al, 3             ; Индекс 3 (ожидаем 'D')
xlat                  ; AL ← table[3]
; Теперь AL = 'D'

🔥 Особенности XLAT

Позволяет быстро искать значения в таблице
Работает за одну инструкцию (эффективнее ADD + MOV)
Работает только с 256-элементными таблицами (т.к. AL — 8 бит)
Не поддерживает индексы больше 255


🏆 Заключение

XLAT — мощный инструмент для преобразования значений по таблице, например:

  • Таблицы символов (шифрование, кодировки)
  • Таблицы команд (эмуляторы процессоров)
  • Графические палитры (старые игры)

Но из-за жёстких ограничений по памяти и регистрах сегодня используется редко.