🔄 Команда 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 — мощный инструмент для преобразования значений по таблице, например:
- Таблицы символов (шифрование, кодировки)
- Таблицы команд (эмуляторы процессоров)
- Графические палитры (старые игры)
Но из-за жёстких ограничений по памяти и регистрах сегодня используется редко.