на начало
На главную страницу
Форум   

Статья :: 486+ XADD Обмен и сложение

 

486+ XADD Обмен и сложение

Команда xadd выполняет в одной операции сложение и обмен операндов. Команда требует двух операндов, причем первый операнд должен быть ячейкой памяти, а второй - регистром. После сложения операндов исходное содержимое памяти переносится во второй операнд (регистр), а полученная сумма записывается в память (на место первого слагаемого) (рис. П13). Команда воздействует на флаги OF, SF, ZF, AF, PF и CF.

Рис. П13. Действие команды xadd.

Пример


; В полях данных
mem dw 99
;В программном сегменте
mov AX,48
xadd mem,AX ;mem=147, AX=99

 

XCHG Обмен данными между операндами


Команда xchg пересылает значение первого операнда во второй, а второго - в первый. В качестве любого операнда можно указывать регистр (кроме сегментного) или ячейку памяти, однако не допускается определять оба операнда одновременно как ячейки памяти. Операнды могут быть байтами или словами и представлять числа со знаком или без знака. Команда не воздействует на флаги процессора.

Пример 1


mov AX,OFF01h
mov SI,1000h
xchg AX,SI ;AX=01000h, SI=FF01h

Пример 2


;В полях данных:
mem dw 0F0F0h
;В программном сегменте
mov CX,1256h
xchg CX,mem ;CX=F0F0h, mem=1256h

Пример 3


mov AX,6031h
xchg AH,AL ;AX=3160h

Допустимо использование 32-битовых операндов и дополнительных режимов адресации 32-разрядных процессоров.

Пример


xchg ESI,EDI ;ESI и EDI обмениваются содержимым

 

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, если соответствующие биты операндов совпадают.
В качестве первого операнда команды хог можно указывать регистр (кроме сегментного) или ячейку памяти, в качестве второго - регистр (кроме сегментного), ячейку памяти или непосредственное значение, однако не допускается определять оба операнда одновременно как ячейки памяти. Операнды могут быть байтами или словами. Команда воздействует на флаги OF, SF, ZF, PF и CF, причем флаги OF и CF всегда сбрасываются, а остальные флаги устанавливаются в зависимости от результата.

Правила побитового ИСКЛЮЧАЮЩЕГО ИЛИ:


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

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

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

Пример 1


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

Пример 2


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

Пример 3


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

Допустимо использование 32-битовьгх операндов и дополнительных режимов адресации 32-разрядных процессоров.

Пример


mov EAX,4444AAAAh
xor EAX,4441AAACh ;EAX=00050006h

 

486+ XADD Обмен и сложение

страницы в данном разделе 
Приложение. Система команд процессоров Intel Система команд процессоров Intel
ААА ASCII-коррекция регистра АХ после сложения ADC Целочисленное сложение с переносом
386+ BSF Прямое сканирование битов 386+ BTR Проверка и сброс бита
CLC Сброс флага переноса СМР Сравнение
486+ CMPXCHG Сравнение и обмен DAA Десятичная коррекция в регистре AL после сложения
HLT Останов INS Ввод строки из порта
INT Программное прерывание MP Безусловный переход
386+ LEAVE Выход из процедуры высокого уровня 386Р+ LGDT Загрузка регистра таблицы глобальных дескрипторов
LOCK Запирание шины 386+ LODSD Загрузка двойного слова из строки
386Р+ LTR Загрузка регистра задачи TR MOVS Пересылка данных из строки в строку
MUL Умножение целых чисел без знака OUTS Вывод строки в порт
POP Извлечение слова из стека PUSH Занесение операнда в стек
RCR Циклический сдвиг вправо через бит переноса RET Возврат из процедуры
ROL Циклический сдвиг влево SBB Целочисленное вычитание с займом
386+ SETcc Установка байта по условию 386P+ SIDT Сохранение в памяти содержимого регистра таблицы дескрипторов прерываний
STI Установка флага прерывания 386P+ STR Сохранение содержимого регистра состояния задачи
486+ XADD Обмен и сложение >  


Содержание сайта (выборка)
Apache
Протоколы TCP/IP (принципы, протоколы и архитектура)



PHP, PELR, JSP
PHP
JavaServer Pages (JSP)

Базы данных
Основы mysql
СУБД INFORMIX
СУБД POSTGRES
Основы проектирования реляционных баз данных

HTML, javascript
Спецификация HTML 4.01
Каскадные Таблицы Стилей, Уровень 2
Клиентский JavaScript. Справочник.
JavaScript руководство пользователя
Серверный JavaScript 1.4. Руководство по Использованию.

Паскаль, C, C++, C#
GCC (примеры)
FAQ Валентинa Озеровa DELPHI
C



 
© faq.pp.ru, справочник программиста