Иллюстрированный самоучитель по Assembler

V, X

XLAT Табличная трансляция

Команда xlat осуществляет выборку байта из массива байтов, который в этом случае называют таблицей трансляции. В регистре ВХ должен находиться относительный адрес таблицы, а в регистре AL – смещение в таблице к выбираемому байту (его индекс). Выбранный байт загружается в регистр AL, замещая находившееся в нем смещение. Длина таблицы может достигать 256 байт. Таблица должна находиться в сегменте данных, адресуемом через сегментный регистр DS. Замена сегмента не допускается. Команда xlat не имеет параметров, но требует предварительной настройки регистров ВХ и AL. Команда не воздействует на флаги процессора.

Пример:

;Пример демонстрирует преобразование первых 14 скен-кодов
;(фактически это скен-коды клавиш верхнего ряда
;клавиатуры) в коды ASCII соответствующих символов
; В полях данных:
table db 0.27, ' 1234567890 – = \'; Таблица кодов ASCII
;В программном сегменте
lea BX,table
mov AL,5; Скен-код 5 клавиши <4/$>
xlat; AL=34h, код ASCII символа 4

386+ XLAT. 386+ XLATB.

Команда xlatb эквивалентна команде xlat МП 86 за исключением того, что для 32-разрядных приложений относительный адрес таблицы размещается в расширенном регистре ЕВХ.

Команда xlat может иметь в качестве операнда относительный адрес таблицы трансляции; в этом случае помещение адреса таблицы в регистр ЕВХ не требуется. Действие команды от этого не изменяется, однако возможна замена сегмента.

Пример:

;В сегменте, адресуемом через сегментный регистр ES:
table db 0.27,'1234567890-=\';Таблица кодов ASCII
;В программном сегменте
mov AL,13; Скен-код клавиши <=/+>
xlat ES:table; AL=3Dh, код ASCII символа =

XOR Логическое Исключающее ИЛИ

Команда хог выполняет операцию логического (побитового) ИСКЛЮЧАЮЩЕГО ИЛИ над своими двумя операндами. Результат операции замещает первый операнд; второй операнд не изменяется. Каждый бит результата устанавливается в 1, если соответствующие биты операндов различны, и сбрасывается в 0, если соответствующие биты операндов совпадают.

В качестве первого операнда команды хоr можно указывать регистр (кроме сегментного) или ячейку памяти, в качестве второго – регистр (кроме сегментного), ячейку памяти или непосредственное значение, однако не допускается определять оба операнда одновременно как ячейки памяти. Операнды могут быть байтами или словами. Команда воздействует на флаги OF, SF, ZF, PF и CF, причем флаги OF и CF всегда сбрасываются, а остальные флаги устанавливаются в зависимости от результата.

Правила побитового Исключающего ИЛИ:

Первый операнд-бит 0101

Второй операнд-бит 0011

Бит результата 0110

Пример 1:

mov AX,0Fh
хоr AX,0FFFFh; AX=FFF0h

Пример 2:

хоr ВХ,ВХ; Обнуление ВХ

Пример 3:

mov SI,0AAAAh
mov BX,5555h
xor SI,BX; SI=FFFFh,BX=5555h

Иллюстрированный самоучитель по Assembler › Приложение. Система команд процессоров Intel. › V, X Допустимо использование 32-битовых операндов и дополнительных режимов адресации 32-разрядных процессоров.

Пример:

mov EAX,4444AAAAh
xor EAX,4441AAACh; EAX=00050006h
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.