
- •Основы микропроцессорной техники
- •Введение
- •1. Система команд микропроцессора 8080 Представление команд в числовой форме
- •Мнемоническое представление команд Ассемблер
- •Директивы Ассемблера процессора 8080
- •Методы адресации операндов команд
- •Биты признаков
- •Общее представление команд
- •Команды пересылок
- •Однобайтные пересылки
- •Двухбайтные пересылки
- •Команды передачи управления
- •Команды безусловных переходов
- •Команды условных переходов
- •Команды организации подпрограмм
- •Команды безусловных вызовов и возврата
- •Команды условных вызовов и возврата
- •Команды арифметических, логических и сдвиговых операций
- •Команды сложения
- •Команды вычитания
- •Команды логических операций
- •Команды сравнения
- •Команды сдвига
- •Специальные арифметическо-логические команды
- •Команды управления стеком
- •Команды ввода, вывода и управления состоянием процессора Команды ввода и вывода
- •Команды управления прерываниями
- •Команда перевода процессора в состояние останова
- •Учебная микро-эвм умк-80
- •Управление микро-эвм средствами Монитора
- •Чтение и модификация содержимого памяти хххх
- •Чтение и модификация содержимого регистров
- •Запуск программы пользователя
- •Отражение типа машинного цикла через слово состояния
- •Пошаговые режимы
- •Порядок выполнения работы Заполнение памяти средствами Монитора
- •Определение исходного положения области стека
- •Ввод программы средствами Монитора
- •Лабораторная работа № 1.2 Учебная микро-эвм умпк-80
- •Краткие сведения из теории Назначение умпк-80
- •Структура умпк-80 и распределения адресного пространства
- •Управление микро-эвм средствами Монитора
- •Тестирование микро-эвм и начальная установка
- •Порядок выполнения работы Исследование порядка включения умпк-80
- •Исследование содержимого памяти
- •Запись числа в память умпк-80
- •Запись числа в программно-доступные регистры
- •Запуск программы
- •Контроль выполнения команд программы
- •Содержание отчёта
- •Контрольные вопросы
- •Лабораторная работа № 2 Отдельные команды, простые программы
- •Краткие сведения из теории Типы команд
- •Форматы команд
- •Способы адресации операндов
- •Признаки результатов операций
- •Представление программы
- •Порядок выполнения работы Исследование отдельных команд арифметических и логических операций
- •Исследование команд пересылок и способов адресации операндов
- •Исследование команд арифметического сложения
- •Исследование операций сравнения однобайтных чисел
- •Содержание отчёта
- •Контрольные вопросы
- •Библиографический список
Специальные арифметическо-логические команды
Специальные арифметическо-логические команды не имеют операндов и занимают в памяти всего один байт.
Команда DAA осуществляет десятичную коррекцию результата операции однобайтного сложения. Она преобразует двоичный код содержимого аккумулятора в двоично-десятичный код. Это помогает интерпретировать результат сложения в привычной десятичной форме.
Алгоритм выполнения процессором команды DAA представлен на рис.9.1.
Если воспользоваться известными командами Бейсика, то схему выполнения команды DAA можно представить в следующем виде:
IF ((A)0Fh)>09h OR AC=1 THEN (A)(A)+06h
IF ((A)F0h)>90h OR CY=1 THEN (A)(A)+60h
Пример 1.48
Метка Мнемокод Комментарий
MVI A,13 ; первое слагаемое подготавливаем в A
MVI B,77 ; второе слагаемое подготавливаем в B
ADD B ; сложение: A=13+77=8A AC=0 CY=0
DAA ; выполняем коррекцию числа в аккумуляторе
После этого в аккумуляторе окажется число 90.
Рис. 1.3. Блок-схема алгоритма выполнения команды DAA
Другие специальные арифметическо-логические команды предназначены работы с битом переноса CY регистра признаков.
Команда STC устанавливает в 1 бит переноса CY регистра признаков.
Команда CMC инвертирует бит переноса CY регистра признаков.
Команды управления стеком
Часто в ходе выполнения процессором какой-то последовательности основных действий возникает необходимость переключиться на выполнение другой последовательности действий, а выполнив её снова вернуться к продолжению основной последовательности действий. Успешная реализация такого рода переключений предполагает наличие возможности сохранения в памяти состояния регистров процессора на момент использования этих регистров в действиях, на которые выполнено переключение. Сохранение необходимо для того, чтобы сначала вернуть сохранённое состояние регистров назад в процессор, а затем только вернуться к продолжению основных действий.
Часто в ходе выполнения процессором какой-то основной программы возникает необходимость переключаться на выполнение разных подпрограмм, а выполнив их снова возвращаться к продолжению основной программы (см. пример на рис.8.1). Успешная реализация такого рода переключений предполагает наличие возможности сохранения в памяти состояния регистров процессора на момент использования этих регистров в подпрограммах.
Сохранение необходимо для того, чтобы сначала вернуть сохранённое состояние регистров назад в процессор, а только затем вернуться к продолжению основных действий.
Эффективными такие действия могут быть только в том случае, если можно будет быстро сохранять в памяти и возвращать назад состояния регистров. Это возможно если организовать взаимодействие с памятью не обычным образом, как это делается в командах пересылок, по принципу стека.
Стеком называется структура данных, в которой новый элемент всегда записывается в её начало (вершину) и очередной читаемый элемент также всегда выбирается из её начала. Примером стека может служить магазин пистолета.
Структура данных стекового типа организуется в оперативной памяти. Начало области стека (вершина стека) определяется через адрес, который процессор хранит всегда в своём регистре SP, который поэтому называется указателем стека. Механизм взаимодействия процессора со стеком предполагает автоматическое изменение адреса в SP при каждом очередном обращении процессора к стеку: при записи в стек очередного байта происходит автоматический декремент указателя стека, а при чтении из стека очередного байта происходит автоматический инкремент указателя стека. За счёт того, что адрес памяти при стековых операциях формировать не приходится (он всегда имеется в регистре SP) время обращения к памяти сильно сокращается по сравнению с обычными операциями.
Для организации стековых операций в системе команд процессора 8080 имеются команды
инициализации стека,
записи в стек,
чтения стека,
обмена стека с регистровой парой HL.
Инициализация стека заключается в исходной установке его вершины, то есть в загрузке адреса в регистр указателя стека SP. Она может быть выполнена одной из двух команд. Либо при помощи команды двухбайтной пересылки LXI SP,d16, представленной в группе команд пересылок. В этой команде вершина стека определяется непосредственно числом d16, которое является её адресом. Другой способ инициализации стека обеспечивается командой SPHL, которая загружает указатель стека содержимым регистровой пары HL:
(SP)(HL)
Команды записи в стек – PUSH B, PUSH D, PUSH H, PUSH PSW. Они обеспечивают запись в стек последовательно двух байт из выбираемых командами регистровых пар.
Одной из пар в данном случае может быть пара, именуемая в мнемонике PSW (Processor Status Word) и состоящая из аккумулятора A (в качестве младшего регистра в паре) и регистра признаков F. Общая схема выполнения команд записи из регистровой пары rp в стек: stack(rp). При выполнении команд происходят последовательно следующие операции:
1. Декремент регистра SP для продвижения по стеку вперёд: (SP)(SP)–1
2. Запись в стек байта старшего регистра: M(SP)старший регистр
3. Декремент регистра SP для продвижения по стеку вперёд: (SP)(SP)–1
4. Запись в стек байта младшего регистра: M(SP)младший регистр
В результате после выполнения команды адрес в указателе стека уменьшается на 2, и вершина стека сдвигается в сторону младших адресов.
Команды чтения стека – POP B, POP D, POP H, POP PSW. Они обеспечивают возврат из стека в выбираемую командами регистровую пару того, что туда отправлялось командами записи. При выполнении команд происходят последовательно следующие операции:
1. Чтение байта из стека в младший регистр: M(SP) младший регистр
2. Инкремент регистра для продвижения по стеку назад: SP (SP)(SP)+1
3. Чтение байта из стека в старший регистр: M(SP) старший регистр
4. Инкремент регистра для продвижения по стеку назад: (SP)(SP)+1
В результате после выполнения команды адрес в указателе стека увеличивается на 2, и вершина стека сдвигается в сторону старших адресов.
Команда XTHL обеспечивает обмен двухбайтными операндами. Первый операнд читается из вершины стека, а второй операнд берётся из регистровой пары HL:(HL)stack. В результате данной операции содержимое регистра SP остаётся без изменений. По своему формату команда является однобайтной. Поэтому фаза выборки команды займёт всего один машинный цикл. Зато для фазы выполнения потребуется четыре машинных цикла: сначала – на два чтения из стека, затем на две записи в стек. И в целом, данная команда оказывается самой продолжительной по времени среди всех возможных команд. На её выполнение процессор затрачивает 18 машинных тактов.
Далее показан пример, иллюстрирующий применение команд управления стеком для организации переключений между основной программой и подпрограммой TIX.
Пример 1.50
Метка Мнемокод Комментарий
;******************** Основная программа
LXI SP,1FFFh ; Установка вершины стека
…………………………….
LXI B,03E8h ; Определение задержки – 1с (3E8h=1000мс)
CALL TIX ; Вызов подпрограммы временной задержки
MOV B,A ; продолжение основной программы
…………………………….
;
;******************** Подпрограмма временной задержки
; Вход: BC – интервал временной задержки в мс
TIX: PUSH B ; сохранение в стеке (BC)
TI2: PUSH PSW ; сохранение в стеке (A)&(F)
PUSH D ;сохранение в стеке (DE)
; ******************** Организация цикла программной паузы
XRA A
TI1: MVI D,80
TI0: DCR D
JNZ TI0
DCX B ; BC=BC–1
CMP B
JNZ TI1
;*********************
POP D ; чтение из стека в (DE)
POP PSW ; чтение из стека в (A)&(F)
POP B ; чтение из стека в (BC)
RET ;возврат из подпрограммы