русс | укр

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

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

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

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


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

CMPS/CMPSB/CMPSW/CMPSD - Сравнение строковых операндов


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


-----------------------------------------------------------------|Код Команда Число Описание ||операции тактовых || циклов || ||A6 CMPS m8,m8 8 Сравнение байтов в ES:[(E)DI] || (второй операнд) с [(E)SI] || (первый операнд) ||A7 CMPS m16,m16 8 Сравнение слов ES:[(E)DI] || (второй операнд) с [(E)SI] || (первый операнд) ||A7 CMPS m32,m32 8 Сравнение двойных слов ES:[(E)DI]|| (второй операнд) с [(E)SI] || (первый операнд) ||A6 CMPSB 8 Сравнение байтов в ES:[(E)DI] || с DS:[SI] ||A7 CMPSW 8 Сравнение слов в ES:[(E)DI] || с DS:[SI] ||A7 CMPSD 8 Сравнение двойных слов ES:[(E)DI]|| с DS:[SI] |----------------------------------------------------------------- Работа команды IF (команда = CMPSD) OR (команда имеет операнды типа DWORD)THEN OperandSize <- 32;ELSE OperandSize <- 16;FI;IF AddressSize = 16THEN используйте SI как индекс источника и DI как индекс назначенияELSE (* AddressSize = 32 *) используйте ESI как индекс источника и EDI как индекс назначения;FI;IF команда байтового типаTHEN [индекс-источника] - [индекс-назначения]; (* сравнение байтов *) IF DF = 0 THEN IncDec <- 1 ELSE IncDec <- -1; FI;ELSE IF OperandSize = 16 THEN [индекс-источника] - [индекс-назначения]; (* сравнение слов *) IF DF = 0 THEN IncDec <- 2 ELSE IncDec <- -2; FI; ELSE (* OperandSize = 32 *) [индекс-источника] - [индекс-назначения]; (* сравнение двойных слов *) IF DF = 0 THEN IncDec <- 4 ELSE IncDec <- -4; FI; FI;FI;индекс-источника = индекс-источника + IncDec;индекс-назначения = индекс-назначения + IncDec; ОписаниеКоманда CMPS сравнивает байт, слово или двойное слово, на котороеуказывает регистр индекса-источника, с байтом, словом или двойным словом,на которое указывает регистр индекса-назначения.Если атрибут размера адреса этой команды равен 16 битов, то в качестверегистров индекса источника и назначения используются регистры SI и DI; впротивном случае используются регистры ESI и EDI. Перед выполнениемкоманды CMPS в SI и DI (или ESI и EDI) должны быть загружены правильныезначения индексов.Сравнение выполняется посредством вычитания операнда, индексированногорегистром индекса-назначения, из операнда, индексированного регистроминдекса-источника.Отметим, что направление вычитания для команды CMPS это [SI] - [DI] или[ESI] - [EDI]. Левый операнд (SI или ESI) является источником, а правыйоперанд (DI или EDI) это назначение. Это направление противоположнонаправлению, принятому по обычным соглашениям Intel, где левый операндявляется назначением, а правый - источником.Результат вычитания не записывается; он отражается только изменениемфлагов. Тип операндов определяет, сравниваются ли байты, слова или двойныеслова. Для первого операнда (SI или ESI) используется регистр DS, еслиотсутствует байт переопределения сегмента. Второй операнд (DI или EDI)должен позволять адресацию из регистра ES; переопределение сегментаневозможно.После того, как сравнение выполнено, происходит автоматическое продвижениев регистрах индекса источника и индекса назначения. Если флаг DF равен 0(т.е. была использована команда CLD), то происходит инкремент этихрегистров; если же флаг DF равен 1 (была выполнена команда STD), топроисходит декремент регистра. При сравнении байтов выполняется инкрементили декремент на 1, при сравнении слов на 2, а при сравнении двойных слов- на 4.Команды CMPSB, CMPSW и CMPSD являются синонимами команды CMPS lkzсравнения байтов, слов и двойных слов, соответственно.Команде CMPS может предшествовать префикс REPE или REPNE для блочногосравнения с использованием CX или ECX байтов, слов или двойных слов. Болееподробную информацию об этом см. в описании команды REP. Изменяемые флагиФлаги OF, SF, ZF, AF, PF и CF устанавливаются в соответствии с результатом. Исключения защищенного режима#GP(0) в случае недопустимого исполнительного адреса операнда памяти всегментах CS, DS, ES, FS или GS; #SS(0) в случае недопустимого адреса всегменте SS; #PF(код сбоя) в случае страничного сбоя; #AC дляневыравненной ссылки к памяти при текущем уровне привилегированности,равном 3. Исключения режима реальных адресовПрерывание 13, если какая-либо часть операнда лежит вне пространстваисполнительных адресов от 0 до 0FFFFH. Исключения виртуального режима 8086Те же исключения, что и для режима реальных адресов: #PF (код сбоя) длястраничных сбоев; #AC для невыравненной ссылки к памяти при текущем уровнепривилегированности, равном 3.


<== предыдущая лекция | следующая лекция ==>
CMP - Сравнение двух операндов | CMPXCHG - Сравнение и обмен


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


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

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

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


 


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

 
 

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

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