- •Системное программирование
- •Контрольные вопросы
- •2. Программная модель микропроцессора 8086
- •2.1. Представление информации
- •2.2. Регистры микропроцессора
- •2.3. Формат машинной команды
- •2.4. Способы задания операндов команды
- •Контрольные вопросы
- •3. Основные понятия языка ассемблера
- •3.1. Предложения
- •3.2. Директивы определения данных
- •3.3. Выражения
- •Контрольные вопросы
- •4. Сегментированная модель памяти
- •4.1. Сегментирование адресов
- •4.2. Директивы сегментации
- •4.3. Общая структура программы
- •4.4. Модели памяти
- •Контрольные вопросы
- •5. Основные группы команд
- •5.1. Соглашению по описанию команд
- •5.2. Команды пересылки данных
- •5.3. Арифметические команды
- •5.4. Логические команды
- •5.5. Команды переходов
- •5.6. Команды организации циклов
- •5.7. Команды обработки строк
- •5.8. Стековые команды
- •5.9. Команды ввода-вывода
- •5.10. Команды прерываний
- •5.11. Команды управления микропроцессором
- •Контрольные вопросы
- •6. Подпрограммы
- •Контрольные вопросы
- •7. Разработка одномодульной программы
- •7.1. Трансляция и компоновка программы
- •7.2. Отладка программы
- •Контрольные вопросы
- •8. Разработка многомодульных программ
- •8.1. Принципы разработки модулей
- •8.2. Расширенное применение директивы сегментации
- •9. Упражнения
- •Контрольные вопросы
- •Программирование микропроцессорных устройств
- •10. Программирование системного таймера
- •10.1. Описание таймера-счетчика 8254
- •10.2. Режимы работы таймера
- •10.3. Структура регистров таймера
- •10.4. Упражнения
- •Контрольные вопросы
- •11. Программирование контроллера прерываний
- •11.1. Механизм обработки прерываний
- •11.2. Типы прерываний
- •11.3. Приоритеты прерываний
- •11.4. Контроллер прерываний 8259
- •11.5. Идентификация прерываний
- •11.6. Прерывания bios и ms-dos
- •11.7. Упражнения
- •Контрольные вопросы
- •12. Программирование параллельного порта
- •12.1. Интерфейс Centronics
- •12.2. Работа с параллельным портом на низком уровне
- •12.3. Стандартные средства работы с параллельным портом
- •12.4. Упражнения
- •Контрольные вопросы
- •13. Программирование последовательного порта
- •13.1. Основы последовательной передачи данных
- •13.2. Последовательный интерфейс rs-232c
- •13.3. Универсальный асинхронный приемо-передатчик 8250
- •13.4. Порты асинхронного адаптера
- •13.5. Стандартные средства программирования последовательного порта
- •13.6. Упражнения
- •Контрольные вопросы
- •Литература
- •141 Кафедра Вычислительной Техники и Программирования Московского Государственного Открытого Университета
5.11. Команды управления микропроцессором
Команды управления работой микропроцессора включают три группы: команды управления флагами,команды внешней синхронизацииикоманда холостого хода.
По команде CLC флаг переноса CF обнуляется (табл. 65). Остальные флаги не изменяются. По команде STC флаг CF устанавливается. Команда CMC инвертирует флаг CF. Команды полезны для установки нужного состояния флага CF перед исполнением команд циклического сдвига RCL и RCR.
Табл. 65. Команды изменения флага CF.
Код |
Инструкция |
Описание |
F8 |
CLC |
CF = 0 |
F9 |
STC |
CF = 1 |
F5 |
CMC |
CF = NOT CF |
По команде CLD сбрасывается флаг направления DF регистра флагов (табл. 66). Остальные флаги не изменяются. Когда флаг DF сброшен, строковые команды выполняются в направлении увеличения адресов памяти (производится инкремент регистров SI и DI). Команда STD устанавливает флаг направления DF. Установка флага DF обеспечивает выполнение строковых операций с уменьшением адресов операндов, находящихся в регистрах SI и DI.
Табл. 66. Команды изменения флага DF.
Код |
Инструкция |
Описание |
FC |
CLD |
DF = 0 |
FD |
STD |
DF = 1 |
Команда CLI обнуляет флаг разрешения прерывания IF регистра флагов (табл. 67). Остальные флаги не изменяются. Когда флаг IF сброшен, запрещаются внешние прерывания. Команда STI устанавливает флаг IF и обработка внешних прерываний разрешена.
Табл. 67. Команды изменения флага IF.
Код |
Инструкция |
Описание |
FA |
CLI |
IF = 0 |
FB |
STI |
IF = 1 |
К группе команд внешней синхронизации относятся команды ESC/WAIT/HLT (табл. 68).
Табл. 68. Команды внешней синхронизации.
Код |
Инструкция |
Описание |
11011xxx ModRegR/M |
ESC op, r/m |
Выполнение операции сопроцессора op над операндом r/m. |
9B |
WAIT |
Переход в ожидание готовности сопроцессора. |
F4 |
HLT |
Останов процессора. |
Команда ESC обеспечивает выполнение заданной инструкции сопроцессора. Архитектура микропроцессоров семейства 8086 позволяет подключить к ним сопроцессор любого назначения, выполняющий дополнительные команды и согласующий свою работу с основным процессором. Исторически сложилось так, что был разработан и получил распространение только арифметический сопроцессор 8087. Флаги ESC команда не изменяет.
Команда WAITприостанавливает выполнение программы до тех пор, пока не будет закончена обработка последней команды сопроцессора (до поступления сигнала готовности от сопроцессора). Команда используется после инструкций математического сопроцессора. Флаги команда не изменяет.
По команде HLTпроцессор прекращает дальнейшее выполнение операций и переходит в состояние останова. Флаги команда не изменяет. Работа может быть возобновлена выполнением сброса или по прерыванию. При возобновлении работы по прерыванию в стек будет записан адрес команды, следующей за инструкцией HLT.
Последней командой является NOP (табл. 69). Эта однобайтовая команда не выполняет никаких действий, за исключением приращения указателя счетчика команд IP. Флаги команда не изменяет. Заметим, что команда на самом деле является инструкцией XCHG AX, AX. Примером применения команды NOP является возможность удаления (замены) кодов команд в исполняемом модуле без необходимости повторной трансляции программы, например, в целях отладки.
Табл. 69. КомандаNOP.
Код |
Инструкция |
Описание |
90 |
NOP |
Нет операции. |
И еще одна команда управления процессором LOCK на самом деле является префиксом (табл. 70). Он указывает процессору выставить на время выполнения следующей команды сигнал, блокирующий доступ к памяти со стороны других процессоров и внешних устройств. Префикс полезен в реализации многозадачного режима и используется только с инструкциями ADD, ADC, AND, DEC, INC, NEG, NOT, OR, SBB, SUB, XOR и XCHG. Флаги не изменяются, но могут быть изменены инструкцией, с которой он применяется.
Табл. 70. КомандаLOCK.
Код |
Инструкция |
Описание |
F0 |
LOCK |
Блокирование доступа к шине. |