русс | укр

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

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

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

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


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

SCAS/SCASB/SCASW/SCASD - Сравнение строковых данных


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


-----------------------------------------------------------------|Код Команда Число Описание ||операции тактовых || циклов || ||AE SCAS m8 6 Сравнение байтов AL-ES:[DI], || обновление (E)DI ||AF SCAS m16 6 Сравнение слов AX-ES:[DI], || обновление (E)DI ||AF SCAS m32 6 Сравнение двойных слов || EAX-ES:[DI], обновление (E)DI ||AE SCASB 6 Сравнение байтов AL-ES:[DI], || обновление (E)DI ||AF SCASW 6 Сравнение слов AX-ES:[DI], || обновление (E)DI ||AF SCASD 6 Сравнение двойных слов || EAX-ES:[DI], обновление (E)DI |----------------------------------------------------------------- Работа команды IF AddressSize = 16THEN использование DI в качестве индекса-назначения;ELSE (* AddressSize = 32 *) использование EDI в качестве индекса- назначения;FI;IF байтовый тип командыTHEN AL - [индекс-назначения]; (* Сравнение байта в AL и назначения *) IF DF = 0 THEN IncDec <- 1 ELSE IncDec <- -1; FI;ELSE IF OperandSize = 16 THEN AX - [индекс-назначения]; (* Сравнение слова в AL и назначения *) IF DF = 0 THEN IncDec <- 2 ELSE IncDec <- -2; FI; ELSE (* OperandSize = 32 *) EAX - [индекс-назначения]; (* Сравнение двойного слова в EAX и назначения *) IF DF = 0 THEN IncDec <- 4 ELSE IncDec <- -4; FI; FI;FI;индекс-назначения = индекс-назначения + IncDec; ОписаниеКоманда SCAS вычитает байт или слово памяти, задаваемое регистромназначения, из регистров AL, AX или EAX. Результат отбрасывается;происходит только установка флагов. Операнд должен адресоваться изрегистра ES; переопределение сегмента не допускается.Если атрибут размера адреса команды равен 16 битам, в качестве регистраназначения используется регистр DI; в противном случае атрибут размераадреса равен 16 битам, и используется регистр EDI.Адрес сравниваемых данных памяти определяется исключительно содержимымрегистра назначения, а не операндом команды SCAS. Операнд удостоверяетадресуемость сегмента ES и определяет тип данных. Перед выполнениемкоманды SCAS следует загрузить в регистр DI или EDI правильное значениеиндекса.После того, как сравнение выполнено, регистр назначения автоматическиобновляется. Если флаг направления равен 0 (была выполнена команда CLD),происходит инкремент регистра назначения; если флаг направления равен 1(была выполнена команда STD), происходит декремент регистра назначения.При сравнении байтов инкремент или декремент равен 1; при сравнении словинкремент или декремент равен 2; При сравнении двойных слов инкремент илидекремент равен 4.Команды SCASB, SCASW и SCASD являются синонимами команды SCAS, работающимис байтом, словом и двойным словом, соответственно, не требующимиоперандов. Их проще программировать, но они не обеспечивают проверки типаили сегмента.Команде SCAS может предшествовать префикс 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.


<== предыдущая лекция | следующая лекция ==>
SBB - Целочисленное вычитание с заемом | SETcc - Установка байта по условию


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


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

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

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


 


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

 
 

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

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