- •Введение
- •Программная модель микропроцессора Intel8086
- •Структура и формат команд
- •Примеры некоторых форматов команд
- •Базовый - индексный способ адресации
- •Относительный базовый – индексный способ адресации
- •Система команд мп Intel8086 Команды перемещения данных
- •Загрузка в стек (с декрементом sp )
- •Команда безусловного перехода
- •Вызов подпрограммы
- •Возврат из подпрограммы ret
- •Команды организации циклов
- •Команды прерывания
- •Команды строчной обработки
- •Команды манипуляции со флажками
- •Команды управления микропроцессором
Команды прерывания
Команды прерывания обеспечивают действие, аналогичное сигналам прерывания, т.е. переключение с одной программы на другую. Адрес перехода содержится в таблице векторов в памяти ЭВМ.
Команда INT имеет три формата
INT |
11001100 |
|
INTO |
11001110 |
|
INT mun |
11001101 |
Mun |
Тип прерывания задает адрес вектора в таблице векторов.
Адрес=mun*4
INT – специальное прерывание по контрольной точке, соответствуетINT#
INTO – специальное прерывание по переполнению, соответствуетINT4
При возникновении прерывания или выполнении команды прерывания в МП реализуется последоваельность прерывания, обеспечивающая запись в стек текущего значения регистров F, CS, IP.
В IP иCS помещается новое значение из двойного слова таблицы векторов, адрес которого определяется типом прерывания. Флажки регистра флаговIF иTF сбрасываются. Новое значениеIP иCS определяет начальный адрес процедуры прерывания. Возврат в прерванную программу осуществляется специальной командой:
IRET |
11001110 |
|
По этой команде извлекаются из стека три слова и загружается последовательно в регистры IP, CS иF. Тем самым восстанавливается состояние, имевшее место при прерывании.
Команды строчной обработки
Команды строчной обработки или цепочечные команды имеют длину один байт и могут оперировать как со словом,так и с байтом. Вне префикса повторенияREP они оперируют только одним словом или байтом. Такие одиночные цепочечные команды называются примитивами. Независимо от формата примитива операнды определяются содержимым регистровSI, DI, DS, ES.Кроме выполнения указанной операции примитив автоматически вызывает инкремент или декремент регистровSI и (или)DI. Такое автоиндексирование позволяет повторяющееся использование примитива для последовательной обработки смежных байт или слов. Направление изменения индекса определяется флажкомDF, еслиDF=0, то автоинкремент. Иначе – автодекремент.
Использование цепочечных команд по сравнению с обычными дает следующие преимущества:
Длина команды – 1 байт
Оба операнда в памяти
Автоиндексирование делает ненужным явные команды изменения индексов, что увеличивает производительность.
Циклы с примитивами могут быть организованы обычным образом, с помощью команд ветвления или LOOP, а также с помощью префикса повторенияREP.
Машинный код префикса REP |
1111001Z |
ПрефиксREP обеспечивает автоматическое изменение регистраCX, проверку на конец и повторение указанного примитива.
С префиксом REP=F3 примитивы MOVS, LODS, STOS (не изменяющие флажков в регистреF) повторяются в соответствии со следующими правилами:
Если CX = 0 закончить операцию
Декремент CX на 1
Выполнить примитив
Повторить сначала
При работе с примитивами, изменяющими флажки регистра F (CMPS иSCAS) повторение будет идти со следующими правилами:
Если CX = 0 илиZ = ZF закончить операцию (Z – нулевой бит кода операцииREP)
Декремент CX на 1
Выполнить примитив
Повторить сначала
- Пересылка байта/слова
MOVS / MOVSB / MOVSW dst src |
1010010 w |
- Сравнить байты/слова
CMPS / CMPSB / CMPSW dst src |
1010011 w |
(src) – (dst) и установка признаков
- Сравнить байты/слова с содержимым аккумулятора
SCAS / SCASB / SCASW dst src |
1010111 w |
(src) – (dst) и установка признаков
- Загрузка байта/слова в аккумулятор
LODS / LODSB / LODSW src |
1010110 w |
- Запись содержимого аккумулятора в память
STOS / STOSB / STOSW dst |
1010101 w |