
- •Основы микропроцессорной техники
- •Введение
- •1. Система команд микропроцессора 8080 Представление команд в числовой форме
- •Мнемоническое представление команд Ассемблер
- •Директивы Ассемблера процессора 8080
- •Методы адресации операндов команд
- •Биты признаков
- •Общее представление команд
- •Команды пересылок
- •Однобайтные пересылки
- •Двухбайтные пересылки
- •Команды передачи управления
- •Команды безусловных переходов
- •Команды условных переходов
- •Команды организации подпрограмм
- •Команды безусловных вызовов и возврата
- •Команды условных вызовов и возврата
- •Команды арифметических, логических и сдвиговых операций
- •Команды сложения
- •Команды вычитания
- •Команды логических операций
- •Команды сравнения
- •Команды сдвига
- •Специальные арифметическо-логические команды
- •Команды управления стеком
- •Команды ввода, вывода и управления состоянием процессора Команды ввода и вывода
- •Команды управления прерываниями
- •Команда перевода процессора в состояние останова
- •Учебная микро-эвм умк-80
- •Управление микро-эвм средствами Монитора
- •Чтение и модификация содержимого памяти хххх
- •Чтение и модификация содержимого регистров
- •Запуск программы пользователя
- •Отражение типа машинного цикла через слово состояния
- •Пошаговые режимы
- •Порядок выполнения работы Заполнение памяти средствами Монитора
- •Определение исходного положения области стека
- •Ввод программы средствами Монитора
- •Лабораторная работа № 1.2 Учебная микро-эвм умпк-80
- •Краткие сведения из теории Назначение умпк-80
- •Структура умпк-80 и распределения адресного пространства
- •Управление микро-эвм средствами Монитора
- •Тестирование микро-эвм и начальная установка
- •Порядок выполнения работы Исследование порядка включения умпк-80
- •Исследование содержимого памяти
- •Запись числа в память умпк-80
- •Запись числа в программно-доступные регистры
- •Запуск программы
- •Контроль выполнения команд программы
- •Содержание отчёта
- •Контрольные вопросы
- •Лабораторная работа № 2 Отдельные команды, простые программы
- •Краткие сведения из теории Типы команд
- •Форматы команд
- •Способы адресации операндов
- •Признаки результатов операций
- •Представление программы
- •Порядок выполнения работы Исследование отдельных команд арифметических и логических операций
- •3Результаты исследования команд арифметических и логических операций
- •Исследование команд пересылок и способов адресации операндов
- •Исследование команд арифметического сложения
- •Исследование операций сравнения однобайтных чисел
- •Содержание отчёта
- •Контрольные вопросы
- •Библиографический список
Команды безусловных вызовов и возврата
Команда CALL adr безусловного вызова подпрограммы, расположенной по адресу adr, выполняется по следующей схеме:
stack(PC)
(PC)adr
На момент завершения дешифрации данной команды в счётчике команд процессора (PC) сформируется адрес команды стоящей в программе вслед за данной командой. Выполнением данной команды сначала запишется в стек этот адрес из (PC), а затем загрузкой в счётчик команд двухбайтного адреса adr из состава выполняемой команды управление процессором будет передано первой команде подпрограммы. Команда занимает в памяти 3 байта, состоит из 5 машинных циклов и требует на выполнение 17 тактов, то есть это одна из наиболее длительных по времени команд.
Команды вызова подпрограмм типа RST N, где N – номер команды (0..7), также обеспечивают безусловный вызов подпрограммы. Но при этом адрес подпрограммы фиксирован и определяется номером команды adr=N*8. Например, для команды RST 0 адрес подпрограммы будет 0000h, для RST 1 адрес подпрограммы будет 0008h, для RST 2 адрес подпрограммы будет 0010h и т.д. По формату команда однобайтная, требует на выполнение 11 тактов. Выполняются по той же схеме, что и команда CALL adr.
Команда безусловного возврата из подпрограммы RET обеспечивает возврат в подпрограмму простым образом. При выполнении команды читается двухбайтное число из вершины стека и принимается в счётчик команд. При корректной работе со стеком это число должно оказаться адресом команды следующей за вызовом подпрограммы, которая была сохранена в стеке командой вызова этой подпрограммы. Чтобы команда привела к нужному результату, программисту следует обратить внимание на корректное использование стековых операций на этапе действий подпрограммы. Пример организации взаимодействия вызывающей программы и подпрограммы с применением команд безусловных вызовов и возвратов представлен на рис. 1.1.
Рис. 1.1. Пример организации вызовов подпрограмм
Команды условных вызовов и возврата
Команды условных вызовов подпрограмм и условных возвратов из подпрограмм позволяют выполнить всё то, что делают соответствующие безусловные команды, но только в том случае, если поставленное командой условие окажется выполненным. При обнаружении невыполнения условия вызов или возврат выполнены не будут, а вместо них процессор станет выполнять следующую по порядку команду.
Общая схема выполнения условных вызовов подпрограмм команд
CALL if cnd (вызов, если выполнено условие cnd)
Условиями могут быть выбранные состояния битов регистра признаков. Например, Z=0, Z=1, CY=0, CY=1, так далее. Для каждого из пяти битов признаков возможны по два условия. Поэтому имеется всего 10 команд условных переходов.
Общий формат мнемоник таких команд
Ccnd adr
где adr – адрес перехода для случая выполнения условия, а вместо точек добавляются символы выбранного условия:
CNZ adr – вызов, если обнаружен ненулевой результат,
CZ adr – вызов, если обнаружен нулевой результат,
CNC adr – вызов, если обнаружено отсутствие переноса,
CC adr – вызов, если обнаружен наличие переноса,
CPO adr – вызов, если обнаружено нечётное число битов “1” результата,
CPE adr – вызов, если обнаружено чётное число битов “1” результата,
CP adr – вызов, если обнаружен положительный знак результата,
CM adr – вызов, если обнаружен отрицательный знак результата.
Все команды – трёхбайтные по формату. В отличие от большинства других, эти команды могут иметь два варианта времени выполнения, в зависимости от результата анализа условия.
Если обнаружено невыполнение условия, то фаза выполнения команды завершится в последнем машинном цикле чтения 3-го байта команды, поскольку дополнительных действий по организации вызова подпрограммы не потребуется. Процессору потребуется в таком случае всего 11 тактов.
Другой вариант – когда обнаружено выполнение условия, поставленного командой. Тогда процессору потребуется выполнить в полном объёме все действия команды вызова подпрограммы, включая 2 машинных цикла записи в стек. И, в целом, тогда на команду потратится 17 тактов.
Общая схема выполнения условных возвратов из подпрограмм команд
RET if cnd (возврат, если выполнено условие cnd)
Общий формат мнемоник таких команд R.., где вместо точек добавляются символы выбранного условия:
RNZ –возврат, если обнаружен ненулевой результат,
RZ – возврат, если обнаружен нулевой результат,
RNC – возврат, если обнаружено отсутствие переноса,
RC – возврат, если обнаружен наличие переноса,
RPO – возврат, если обнаружено нечётное число битов “1” результата,
RPE – возврат, если обнаружено чётное число битов “1” результата,
RP – возврат, если обнаружен положительный знак результата,
RM – возврат, если обнаружен отрицательный знак результата.
Все команды – однобайтные по формату. В отличие от большинства других, эти команды могут иметь два варианта времени выполнения, в зависимости от результата анализа условия.
Если обнаружено невыполнение условия, то фаза выполнения команды завершится в последнем машинном цикле чтения кода команды, поскольку дополнительных действий по организации возврата из подпрограммы не потребуется. Процессору потребуется в таком случае всего 5 тактов.
Другой вариант – когда обнаружено выполнение условия, поставленного командой. Тогда процессору потребуется выполнить в полном объёме все действия команды возврата из подпрограммы, включая 2 машинных цикла чтения из стека. И в целом тогда на команду потратится 10 тактов.