русс | укр

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

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

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

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


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

REP/REPE/REPZ/REPNE/REPNZ - Повторение следующей строковой команды


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


-----------------------------------------------------------------|Код Команда Число Описание ||операции тактовых || циклов || ||F3 6C REP INS 16+8(E)CX, Ввод (E)CX байтов из || r/m8,DX pm=10+8(E)CX *1/ порта DX в ES:[(E)DI] || 30+8(E)CX *2, || VM=29+8(E)CX ||F3 6D REP INS 16+8(E)CX, Ввод (E)CX слов из || r/m16,DX pm=10+8(E)CX *1/ порта DX в ES:[(E)DI] || 30+8(E)CX *2, || VM=29+8(E)CX ||F3 6D REP INS 16+8(E)CX, Ввод (E)CX двойных слов|| r/m32,DX pm=10+8(E)CX *1/ из порта DX в ES:[(E)DI]|| 30+8(E)CX *2, || VM=29+8(E)CX ||F3 A4 REP MOVS 5 *3, 13 *4, Пересылка (E)CX байтов || m8,m8 12+3(E)CX *5 из [(E)SI] в ES:[(E)DI]||F3 A5 REP MOVS 5 *3, 13 *4, Пересылка (E)CX слов || m16,m16 12+3(E)CX *5 из [(E)SI] в ES:[(E)DI]||F3 A5 REP MOVS 5 *3, 13 *4, Пересылка (E)CX двойных|| m32,m32 12+3(E)CX *5 слов || из [(E)SI] в ES:[(E)DI]||F3 6E REP OUTS 17+5(E)CX, Вывод (E)CX байтов из || DX,r/m8 pm=11+5(E)CX *1/ [(E)SI] в порт DX || 31+5(E)CX *2, || VM=30+5(E)CX ||F3 6F REP OUTS 17+5(E)CX, Вывод (E)CX слов из || DX,r/m16 pm=11+5(E)CX *1/ [(E)SI] в порт DX || 31+5(E)CX *2, || VM=30+5(E)CX ||F3 6F REP INS 17+5(E)CX, Вывод (E)CX двойных слов|| DX,r/m32 pm=11+5(E)CX *1/ из [(E)SI] в порт DX || 31+5(E)CX *2, || VM=30+5(E)CX ||F2 AC REP LODS 5 *3, Загрузка (E)CX байтов || m8 7 +4(E)CX *6 из [(E)SI] в AL ||F2 AD REP LODS 5 *3, Загрузка (E)CX слов || m16 7 +4(E)CX *6 из [(E)SI] в AX ||F2 AD REP LODS 5 *3, Загрузка (E)CX двойных|| m32 7 +4(E)CX *6 слов || из [(E)SI] в EAX ||F3 AA REP STOS 5 *3, Заполнение(E)CX байтов || m8 7 +4(E)CX *6 в ES:[(E)DI] из AL ||F3 AB REP STOS 5 *3, Заполнение(E)CX слов || m16 7 +4(E)CX *6 в ES:[(E)DI] из AX ||F3 AB REP STOS 5 *3, Заполнение(E)CX двойных|| m32 7 +4(E)CX *6 слов || в ES:[(E)DI] из EAX ||F3 A6 REPE CMPS 5 *3, Поиск несовпадающих || m8,M8 7 +7(E)CX *6 байтов || в ES:[(E)DI] и [(E)SI] ||F3 A7 REPE CMPS 5 *3, Поиск несовпадающих || m16,m16 7 +7(E)CX *6 слов || в ES:[(E)DI] и [(E)SI] ||F3 A7 REPE CMPS 5 *3, Поиск несовпадающих || m32,m32 7 +7(E)CX *6 двойных слов || в ES:[(E)DI] и [(E)SI] ||F3 AE REPE SCAS 5 *3, Поиск не равных AL || m8 7 +5(E)CX *6 байтов, начиная с || ES:[(E)DI] ||F3 AF REPE SCAS 5 *3, Поиск не равных AX || m16 7 +5(E)CX *6 слов , начиная с || ES:[(E)DI] ||F3 AF REPE SCAS 5 *3, Поиск не равных EAX|| m32 7 +5(E)CX *6 двойных слов, начиная с|| ES:[(E)DI] ||F2 A6 REPNE CMPS 5 *3, Поиск совпадающих || m8,M8 7 +7(E)CX *6 байтов || в ES:[(E)DI] и [(E)SI] ||F2 A7 REPNE CMPS 5 *3, Поиск совпадающих || m16,m16 7 +7(E)CX *6 слов || в ES:[(E)DI] и [(E)SI] ||F2 A7 REPNE CMPS 5 *3, Поиск совпадающих || m32,m32 7 +7(E)CX *6 двойных слов || в ES:[(E)DI] и [(E)SI] ||F2 AE REPNE SCAS 5 *3, Поиск равных AL || m8 7 +5(E)CX *6 байтов, начиная с || ES:[(E)DI] ||F2 AF REPNE SCAS 5 *3, Поиск равных AX || m16 7 +5(E)CX *6 слов , начиная с || ES:[(E)DI] ||F2 AF REPNE SCAS 5 *3, Поиск равных EAX|| m32 7 +5(E)CX *6 двойных слов, начиная с|| ES:[(E)DI] |-----------------------------------------------------------------Примечания: *1 если CPL <= IOPL *2 если CPL > IOPL *3 (E)CX = 0 *4 (E)CX = 1 *5 (E)CX > 1 *6 (E)CX > 0 Работа команды IF AddressSize = 16THEN в качестве CountReg используется CX;ELSE (* AddressSize = 32 *) в качестве CountReg используется ECX;FI;WHILE CountReg <> 0DO обслуживание подвешенных прерываний (если они есть); выполнение примитивной строковой команды; CountReg <- CountReg - 1; IF примитивная операция это CMPB,CMPW,SCAB или SCAW THEN IF (команда REP/REPE/REPZ) AND (ZF=1) THEN выход из цикла WHILE ELSE IF (команда REPNZ или REPNE) AND (ZF=0) THEN выход из цикла WHILE; FI; FI; FI;OD; ОписаниеПрефиксы REP, REPE (повторять пока равно) и REPNE (повторять пока неравно) применяются в строковых операциях. Каждый префикс вызываетповторение следующей за ним строковой команды столько раз, сколько указаносчетным регистром или (для префиксов REPE и REPNE) пока не перестанетудовлетворяться условие, указанное флагом ZF.Синонимическими формами префиксов REPE и REPNE являются префиксы REPZ иREPNZ, соответственно.Префиксы REP одновременно применяются только к одной строковой команде.Для повторения блока команд используйте команду LOOP или другуюконструкцию цикла. Точное описание действий при каждой итерации следущее:1. Если атрибут размера адреса равен 16 битам, в качестверегистра-счетчика используется CX; Если же атрибут размера адреса равен 32битам, в качестве регистра-счетчика используется ECX;2. Проверяется регистр CX. Если он равен 0, происходит выход из итерации ипереход к следующей команде.3. Уведомление о любых подвешенных прерываниях.4. Однократное выполнение строковой операции.5. Декремент регистра CX или ECX на единицу; флаги не модифицируются.6. Если строковая команда это SCAS или CMPS, проверяется флаг ZF. Еслиусловие повтоения не выполняется, то происходит выход из итерации ипереход к следующей команде. Выход из итерации происходит, если префиксэто REPE, а флаг ZF равен 0 (последнее сравнение показало не-равенство),либо если префикс это REPNE, а флаг ZF равен 1 (последнее сравнениепоказало равенство).7. Возврат к шагу 1 для следующей итерации.Выход из повторяющихся команд CMPS и SCAS возможен, когда либо счетчикотсчитал нужное число раз, либо флаг ZF показал, что условие повторения невыполняется. Эти два случая можно различить, используя для этого либокоманду JCXZ, либо условные переходы, проверяющие флаг ZF (команды JZ, JNZи JNE). Изменяемые флагиФлаг ZF изменяется конструкциями REP CMPS и REP SCAS, как было описановыше. Исключения защищенного режимаОтсутствуют Исключения режима реальных адресовОтсутствуют Исключения виртуального режима 8086Отсутствуют ПримечаниеНе все порты ввода/вывода способны поддерживать скорость, с которойвыполняются команды REP INS и REP OUTS. При использовании с не-строковой командой префикс повторения игнорируется.


<== предыдущая лекция | следующая лекция ==>
RCL/RCR/ROL/ROR - Циклический сдвиг | RET - Возврат из процедуры


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


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

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

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


 


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

 
 

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

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