русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

CMPXCHG - Сравнение и обмен


Дата добавления: 2015-06-12; просмотров: 663; Нарушение авторских прав


-----------------------------------------------------------------|Код Команда Число Описание ||операции тактовых || циклов || ||0F A6/r CMPXCHG r/m8,r8 6/7, если срав- Сравнение AL с байтом || нение успешно, r/m. При равенстве ус- || и 6/10 иначе танавливает ZF и загру-|| жает байт регистра в || байт r/m. Иначе очищает|| ZF и загружает байт r/m|| в AL ||0F A7/r CMPXCHG 6/7, если срав- Сравнение AL со словом || r/m16,r16 нение успешно, r/m. При равенстве ус- || и 6/10 иначе танавливает ZF и загру-|| жает регистр-слово в || слово r/m. Иначе очищает|| ZF и загружает слово r/m|| в AX ||0F A7/r CMPXCHG 6/7, если срав- Сравнение AL с двойным || r/m32,r32 нение успешно, словом r/m. При равенс-|| и 6/10 иначе тве устан-т ZF и загру-|| жает регистр-двойное || слово r/m. Иначе очищает|| ZF и загружает двойное || слово r/m в EAX. |----------------------------------------------------------------- Работа команды IF аккумулятор = DEST ZF <- 1 DEST <- SRCELSE ZF <- 0 аккумулятор <- DEST ОписаниеКоманда CMPXCHG сравнивает аккумулятор (регистр AL, AX или EAX) с DEST.Если они равны, то SRC загружается в DEST. В противном случае DESTзагружается в аккумулятор.Изменяемые флагиФлаги CF, PF, AF, SF и OF изменяются таким образом, как если бы былавыполнена команда CMP с DEST и аккумулятором в качестве операндов. Флаг ZFустанавливается, если операнд назначения и аккумулятор равны; в противномслучае он очищается. Исключения защищенного режима#GP(0), если результат должен помещаться в сегмент, для которого запрещеназапись; #GP(0) в случае недопустимого исполнительного адреса операндапамяти в сегментах CS, DS, ES, FS или GS; #SS(0) в случае недопустимогоадреса в сегменте SS; #PF(код сбоя) в случае страничного сбоя; #AC дляневыравненной ссылки к памяти при текущем уровне привилегированности,равном 3. Исключения режима реальных адресовПрерывание 13, если какая-либо часть операнда лежит вне пространстваисполнительных адресов от 0 до 0FFFFH. Исключения виртуального режима 8086Те же исключения, что и для режима реальных адресов: #PF (код сбоя) длястраничных сбоев; #AC для невыравненной ссылки к памяти при текущем уровнепривилегированности, равном 3. ПримечанияЭта команда может быть использоваться с префиксом LOCK. Для упрощенияинтерфейса с шиной процессора операнд назначения принимает цикл записибезотносительно к результату сравнения. Если сравнение закончилосьнеудачно, то DEST записывается назад, а в противном случае в операндназначения записывается DEST. (Процессор никогда не выдает цикла чтения сзахватом без соответствующей записи с захватом). Эта команда процессорами386 не поддерживается. Использование команды CMPXCHG совместимым с 386образом см. в разделе 3.11.

CWD/CDQ - Преобразование слова в двойное слова
Преобразование двойного слова в учетверенное слово



-----------------------------------------------------------------|Код Команда Число Описание ||операции тактовых || циклов || || 99 CWD 3 DX:AX <- расширение знаком AX || 99 CDQ 3 EDX:EAX <- расширение знаком EAX |----------------------------------------------------------------- Работа команды IF OperandSize = 16 (* команда CWD *)THEN IF AX < 0 THEN DX <- 0FFFFH; ELSE DX <- 0; FI;ELSE (* OperandSize = 32, команда CDQ *) IF EAX < 0 THEN EDX <- 0FFFFFFFFH; ELSE EDX <- 0; FI;FI; ОписаниеКоманда CWD преобразует имеющее знак слово в регистре AX в имеющее знакдвойное слово в паре регистров DX:AX, расширяя старший бит регистра AX вовсе биты регистра DX. Команда CDQ преобразует имеющее знак двойное словоиз регистра EAX в имеющее знак 64-разрядное целое в паре регистровEDX:EAX, расширяя старший бит регистра EAX (знакового бита) во все битырегистра EDX. Отметим, что команда CWD отличается от команды CWDE. КомандаCWDE использует как назначение регистр EAX, вместо пары регистров DX:AX. Изменяемые флагиОтсутствуют Исключения защищенного режимаОтсутствуют Исключения режима реальных адресовОтсутствуют Исключения виртуального режима 8086Отсутствуют


<== предыдущая лекция | следующая лекция ==>
CMPS/CMPSB/CMPSW/CMPSD - Сравнение строковых операндов | DEC - Декремент на 1


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.707 сек.