- •3 Методическое пособие для лабораторных работ по курсу «Организация эвм и периферийные устройства» Оглавление
- •1.Введение в архитектуру эвм.
- •1.1.Структура персонального компьютера.
- •2.Архитектура реального режима работы м/п семейства 8086
- •2.1.Форматы данных микропроцессора
- •2.1.1.Числа
- •2.1.2.Символы
- •2.1.3.Указатели
- •2.1.4.Цепочки
- •2.2.Адресация памяти
- •2.3.Внутренние регистры процессора
- •2.3.1.Регистры общего назначения
- •2.3.2.Сегментные регистры
- •2.3.3.Регистры смещения
- •2.3.4.Регистр флагов
- •2.4.Режимы адресации
- •2.4.5.Базовая адресация
- •2.5.1.1. Общие команды.
- •2.5.1.2. Команды push и pop .
- •2.5.1.3. Команды ввода-вывода.
- •2.5.1.4. Адресные команды (пересылки адреса)
- •2.5.1.5. Флажковые команды (команды пересылки флагов).
- •2.5.2.Арифметические команды.
- •2.5.2.1. Команды сложения.
- •2.5.2.2.Команды вычитания.
- •2.5.2.3.Команды умножения и деления.
- •2.5.2.4.Команды расширения знака.
- •2.5.2.5.Десятичная арифметика.
- •2.5.3.Логические команды.
- •2.5.3.1.Булевы команды.
- •2.5.3.2.Команды сдвигов.
- •2.5.3.3.Команды циклических сдвигов.
- •2.5.3.4.Команды двойного сдвига
- •2.5.3.5.Команды работы с двоичными цепочками
- •2.5.4.Команды передачи управления.
- •2.5.4.1.Команды безусловной передачи управления.
- •2.5.4.2. Команды условных переходов.
- •2.5.4.3.Команды SetCondition
- •2.5.4.4 Команды управления циклами.
- •2.5.5.Цепочечные (строковые) команды.
- •2.5.5.1.Команды пересылки цепочки.
- •2.5.5.2.Команды сравнения цепочек.
- •2.5.5.3.Команды сканирования цепочек.
- •2.5.5.4.Команды загрузки.
- •2.5.5.5.Команды сохранения цепочек.
- •2.5.5.6.Команды ввода и вывода цепочек.
- •2.5.5.7.Замена сегмента.
- •2.5.6.Команды управления микропроцессором.
- •2.5.6.1.Команды управления флагами.
- •2.5.6.2.Команды синхронизации.
- •2.5.6.3.Команда холостого хода.
- •2.5.6.4.Команды прерываний.
- •2.5.7.Новые команды микропроцессора 80486
- •3.Директивы и операторы ассемблера
- •3.1.Структура программы
- •3.2.Организация программы.
- •3.2.1. Модели памяти
- •3.2.2. Процедуры
- •3.2.3. Директивы задания набора допустимых команд
- •3.3.Примеры использования директив в программах типа .Exe и .Com.
- •4.Архитектура и система команд арифметического сопроцессора
- •4.1.Форматы чисел сопроцессора
- •4.1.1.`Целые числа
- •4.1.2. Вещественные числа
- •4.1.3.Диапазоны вещественных чисел в х87.
- •4.2.Особые случаи вещественной арифметики
- •4.3.Формирование специальных значений в особых случаях
- •4.3.1. Случай неточного результата.
- •4.3.2.Численное антипереполнение.
- •4.3.3. Денормализованный операнд.
- •4.3.4. Деление на ноль.
- •4.3.5.Численное переполнение.
- •4.3.6.Недействительная операция.
- •4.4.Регистры математического сопроцессора.
- •4.4.1.Численные регистры (регистровый стек).
- •4.4.2.Регистр управления (cw)
- •4.4.3.Регистр состояния.
- •4.4.4. Регистр тэгов (признаков).
- •4.4.5.Указатели особого случая.
- •4.5.Система команд арифметического сопроцессора.
- •4.5.1.Команды передачи данных.
- •4.5.2.Арифметические команды
- •4.5.3.Дополнительные арифметические команды
- •4.5.4.Команды сравнений
- •4.5.5.Трансцендентные команды
- •4.5.6.Административные команды
- •4.6.Совместная работа двух процессоров в системе.
- •4.6.1.Синхронизация по командам.
- •4.6.2.Синхронизация по данным.
- •5.Примеры программ
- •Список рекомендуемой литературы
2.5.4.3.Команды SetCondition
SETCC |
СС - код условия совпадает с кодами условий в командах JCC условного перехода |
Формат команд:
SETCC reg/ mem 8- если условияСС удовлетворяется, то в байт- операнд помещается код 01H, иначе - код 00Н.
2.5.4.4 Команды управления циклами.
Команды управления циклами обеспечивают передачи управления при организации циклов. У микропроцессора регистр СX служит счётчиком числа повторений циклов. Каждая команда управления циклами уменьшает содержимое регистра CX на 1, а затем использует его новое значение для “принятия решения” о выполнении или не выполнении перехода. Основная команда этой группы LOOP уменьшает содержимое регистра CX на 1 и передаёт управление операнду 'близкая' метка, если содержимое регистра CX не равно 0.
Например:
MOV CX, 100 ; Загрузить счётчик циклов (CX 0 в начале цикла!!)
START: ...;
...;
LOOP START ; Если CX 0, то перейти к метке START, иначе выйти из цикла
...;
Выход из цикла до достижения CX=0 обеспечивают команды LOOPE/LOOPZ (повторять, если равно) и LOOPNE/LOOPNZ (повторять, пока не равно). Команда LOOPE / LOOPZ уменьшает содержимое CX на 1, затем осуществляет переход, если CX 0 и флаг нуля ZF=1. Обычно LOOPE используют для поиска первого ненулевого результата в серии операций. Команда LOOPNE / LOOPNZ уменьшает CX на 1, затем осуществляет переход, если CX0 и флаг нуля ZF=0. Обычно LOOPNE используется для поиска первого нулевого результата в серии операций. Для того чтобы определить, по какому условию произошел выход из цикла можно использовать команду JCXZ (CX=0).
2.5.5.Цепочечные (строковые) команды.
Под цепочкой (строкой) понимается последовательность байт, слов или двойных слов в памяти, а цепочечной операцией называется операция, которая выполняется над каждым элементом цепочки. Микропроцессор имеет набор команд, которые сокращают время выполнения операций по обработке цепочек. Сокращение времени достигается за счёт мощного набора примитивных команд, ускоряющих обработку каждого элемента цепочки и за счёт устранения служебных действий, которые обычно требуются между обработкой последовательных элементов. Перечень цепочечных команд приведен в таблице 2.15.
Таблица 2.15. Перечень цепочечных команд.
Мнемоника |
Описание |
Модифицирует |
MOVS (передать цепочку ) |
источник приемник |
SI, DI (ESI,EDI) |
CMPS (сравнить цепочки ) |
источник- приемник |
SI, DI (ESI,EDI) |
SCAS (сканировать цепочку ) |
AL (AX,EAX)- приемник |
DI (EDI) |
*INS (ввести цепочку ) |
входной порт приемник |
DI (EDI) |
*OUTS (вывести цепочку ) |
источник выходной порт |
SI (ESI) |
LODS (загрузить цепочку ) |
источник AL (AX,EAX) |
SI (ESI) |
STOS (запомнить цепочку) |
AL (AX,EAX) приемник |
DI (EDI) |
* В операциях над словами вместо AL используется AX, для двойных слов- EAX. По умолчанию микропроцессор предполагает, что цепочка-приёмник находится в дополнительном сегменте и адресуется парой регистров ES : DI (или для 32 разрядной адресации - ES:EDI), а цепочка-источник в текущем сегменте данных и адресуется парой регистров DS : SI (для 32 разрядной адресации - ES:ESI ). Цепочечные команды автоматически модифицируют указатели для адресации следующего элемента цепочки. Флаг направления DF определяет направление обработки цепочки. Если DF = 0, то значения регистров DI и SI увеличиваются, а если DF = 1, то значения регистров DI и SI уменьшаются. В первом случае мы двигаемся по цепочке в прямом направлении (слева - направо), во втором случае - в обратном (справа - налево).
Состоянием флага DF можно управлять с помощью двух команд: CLD (DF 0) и STD (DF1). Одна команда обработки цепочки обрабатывает один элемент цепочки длиной 8, 16 или 32 бит.
Для того чтобы одна команда обработала группу последовательных элементов перед ней надо указать префикс повторения. При этом число повторений извлекается из регистра CX. Префикс REP даёт указание повторять команду, пока не обнаружится конец цепочки, то есть CX = 0. Префиксы REPE и REPZ (повторять пока равно) повторяют цепочечную команду, пока флаг ZF = 1 и CX 0.
Например:
MOV CX, 100; поэлементное сравнение
REPE CMPS DEST, SOURCE; DEST и SOURCE до первого несовпадения
REPNE / REPNZ; (повторять, пока не равно) обеспечивают повторение команды, пока ZF = 0 и CX 0. Если в предыдущем примере REPNE CMPS DEST, SOURCE будет повторяться до первого совпадения.
Префиксы REPE / REPZ и REPNE / REPNZ используются с командами сравнения или сканирования цепочки, так как они воздействуют на флаг ZF.