
- •Основы микропроцессорной техники
- •Введение
- •1. Система команд микропроцессора 8080 Представление команд в числовой форме
- •Мнемоническое представление команд Ассемблер
- •Директивы Ассемблера процессора 8080
- •Методы адресации операндов команд
- •Биты признаков
- •Общее представление команд
- •Команды пересылок
- •Однобайтные пересылки
- •Двухбайтные пересылки
- •Команды передачи управления
- •Команды безусловных переходов
- •Команды условных переходов
- •Команды организации подпрограмм
- •Команды безусловных вызовов и возврата
- •Команды условных вызовов и возврата
- •Команды арифметических, логических и сдвиговых операций
- •Команды сложения
- •Команды вычитания
- •Команды логических операций
- •Команды сравнения
- •Команды сдвига
- •Специальные арифметическо-логические команды
- •Команды управления стеком
- •Команды ввода, вывода и управления состоянием процессора Команды ввода и вывода
- •Команды управления прерываниями
- •Команда перевода процессора в состояние останова
- •Учебная микро-эвм умк-80
- •Управление микро-эвм средствами Монитора
- •Чтение и модификация содержимого памяти хххх
- •Чтение и модификация содержимого регистров
- •Запуск программы пользователя
- •Отражение типа машинного цикла через слово состояния
- •Пошаговые режимы
- •Порядок выполнения работы Заполнение памяти средствами Монитора
- •Определение исходного положения области стека
- •Ввод программы средствами Монитора
- •Лабораторная работа № 1.2 Учебная микро-эвм умпк-80
- •Краткие сведения из теории Назначение умпк-80
- •Структура умпк-80 и распределения адресного пространства
- •Управление микро-эвм средствами Монитора
- •Тестирование микро-эвм и начальная установка
- •Порядок выполнения работы Исследование порядка включения умпк-80
- •Исследование содержимого памяти
- •Запись числа в память умпк-80
- •Запись числа в программно-доступные регистры
- •Запуск программы
- •Контроль выполнения команд программы
- •Содержание отчёта
- •Контрольные вопросы
- •Лабораторная работа № 2 Отдельные команды, простые программы
- •Краткие сведения из теории Типы команд
- •Форматы команд
- •Способы адресации операндов
- •Признаки результатов операций
- •Представление программы
- •Порядок выполнения работы Исследование отдельных команд арифметических и логических операций
- •Исследование команд пересылок и способов адресации операндов
- •Исследование команд арифметического сложения
- •Исследование операций сравнения однобайтных чисел
- •Содержание отчёта
- •Контрольные вопросы
- •Библиографический список
Команды арифметических, логических и сдвиговых операций
Данная группа включает в себя команды, непосредственное выполнение которых обеспечивает арифметическо-логическое устройство (АЛУ) процессора 8080. Поэтому способ выполнения и возможности этих команд целиком определяются архитектурными особенностями АЛУ.
Возможности арифметических команд ограничиваются только операциями сложения и вычитания. Умножение, деление и более сложные арифметические операции можно организовать, составив соответствующие подпрограммы на основе имеющихся в распоряжении команд. Кроме того, возможности АЛУ позволяют одной команде оперировать лишь с однобайтными (и немного с двухбайтными) числами. Реализовать операции с многобайтными числами можно программным путём, понимая и используя признаки результатов однобайтных операций, которые устанавливаются командами этой группы в регистре признаков. К арифметическим командам относятся также команды сравнения, поскольку сравнение производится путём вычитания и установки признаков Z и CY, способных отразить равенство сравниваемых чисел или указать на большее из них.
Логические команды предоставляют возможности непосредственно выполнить следующие операции с однобайтными числами: “И” (конъюнкция), “ИЛИ” (дизъюнкция), “исключающее ИЛИ” (сложение по модулю два), “НЕ” (инверсия).
Сдвиговые команды служат для одновременного перемещения битов однобайтного числа либо в сторону старших разрядов, либо в сторону младших разрядов.
К этой же группе относится специальная арифметическая команда, обеспечивающая десятичную коррекцию, а также команды управление битом переноса CY.
Схема выполнения практически всех арифметических и логических операций может быть представлена следующим образом:
(A) (A) <op> <2-й операнд>
где <op> – символ операции: “+”, “–”, “&” и т.д. Второй операнд может храниться в регистре процессора, в ячейке памяти или быть в составе самой команды. Первый операнд (или единственный операнд для операций с одним операндом) всегда хранится в аккумуляторе. Результат операции отправляется командой в аккумулятор, а признаки этого результата устанавливаются в регистре признаков.
Команды сложения
Команды сложения позволяют выполнять операции сложения однобайтных или двухбайтных операндов.
Команды сложения однобайтных операндов различаются по методам адресации второго операнда и по участию или неучастию в операции бита переноса CY. Общим для них является то, что первое слагаемое и результат хранятся в аккумуляторе.
Команды сложения двухбайтных операндов работают с операндами только в регистровых парах: первое слагаемое и результат все такие команды хранят в регистровой HL (регистровая пара HL выступает в роли аккумулятора для однобайтных операций), второе слагаемое можно определять в любой из регистровых трёх пар процессора. Двоичное сложение выполняется в соответствии с правилами двоичной арифметики, представленными в Табл.9.1.
Таблица 1.8
Правила двоичного сложения
1 |
0 + 0 = 0 |
2 |
0 + 1 = 1 |
3 |
1 + 1 = 0 + перенос 1 в следующий разряд |
4 |
1 + 1 + 1 = 1 + перенос 1 в следующий разряд |
Сначала рассмотрим команды сложения однобайтных чисел.
Команды типа ADD r, ADС r обеспечивают выбор второго операнда регистровым методом. Выполняемое командой ADD r действие:
(A) (A) + (r)
Эти команды предполагают, что исходные операнды будут предварительно записаны в аккумулятор и в регистр r.
Пример 1.31
Требуется сложить числа 8Eh и C5h.
Адрес Число Мнемокод Комментарий
0800 3E 8E MVI A,8Eh ;поместить в аккумулятор 1-е слагаемое
0802 06 C5 MVI B,C5h ; поместить в регистр B 2-е слагаемое
0804 80 ADD B ; выполнить сложение: (A) (A) + (B)
Операция сложения должна дать такой результат:
1 0 0 0 1 1 0 0 8 C
+ 1 1 1 0 0 1 0 1 + E 5
1 0 1 1 1 0 0 0 1 1 7 1
Процессор, выполнив команду ADD B, сохранит младшие 8 разрядов результата в аккумуляторе, а 9-й старший разряд – в бите CY регистра признаков. Бит CY в этом случае как бы дополняет до 9 количество разрядов хранения результата. Другие команды могут использовать бит CY для новых операций сложения, когда выполняется сложение следующих байтов многобайтных чисел.
Команды типа ADC r обеспечивают сложение двух операндов подобно команде ADD r, но кроме того к результату ещё суммируется бит CY регистра признаков:
(A) (A) + (r) + (CY)
Применение таких команд позволяет, программируя операции сложения многобайтных чисел, организовать учёт переноса от сложения младших байтов при сложении старших байтов.
Пример 1.32
Запрограммировать сложение двухбайтных чисел 358Eh+24C5h.
Адрес Число Мнемокод Комментарий
0800 01 8E 35 LXI B,358E ; поместить в BC 1-е слагаемое
0803 11 C5 24 LXI D,24C5 ; поместить в DE 2-е слагаемое
0806 79 MOV A,C ; подготовить и
0807 83 ADD E ; выполнить сложение младших байтов без
;учёта переноса
0808 6F MOV L,A ; поместить младший байт результата в L
0809 78 MOV A,B ; подготовить и
080A 8A ADC D ; выполнить сложение старших байтов с
;учётом переноса
080B 67 MOV H,A ; поместить старший байт результата в H
Команды типа ADD M, ADС M обеспечивают выбор второго операнда косвенно-регистровым методом, когда адрес операнда определяется в регистровой паре HL. Выполняемое командой ADD M действие:
(A) (A) + M(HL)
Выполняемое командой ADC M действие:
(A) (A) + M(HL) + (CY)
Пример 1.33
Выполнить сложение 8Eh+C5h, если 2-е слагаемое C5h находится в ячейке с адресом 0B00h.
Адрес Число Мнемокод Комментарий
0800 3E 8E MVI A,8E ; поместить в аккумулятор 1-е слагаемое
0802 21 00 0B LXI H,0B00 ; подготовить в HL адрес ячейки M
0804 86 ADD M ; выполнить сложение: (A) (A) + M(HL)
Команды типа ADI d8, ACI d8 обеспечивают выбор второго операнда непосредственным методом, то есть путём указания числа в составе самой команды. Выполняемое командой ADI d8 действие:
(A) (A) + d8
Выполняемое командой ACI d8 действие:
(A) (A) + d8 + (CY)
Пример 1.34
Выполнить сложение 8Eh+C5h.
Адрес Число Мнемокод Комментарий
0800 3E 8E MVI A,8E ; поместить в аккумулятор 1-е слагаемое
0802 C6 C5 ADI C5 ; выполнить сложение: (A) (A) + C5h
Ещё один тип команд сложения обеспечивает сложение задаваемого операнда с числом 1, то есть инкремент операнда. Операнд может быть определён одним из двух способов. В команде INR r операнд определён регистровым способом и схема выполнения команды выглядит следующим образом:
(r) (r) + 1
В команде INR M операнд определён косвенно-регистровым способом по адресу в регистровой паре HL и схема выполнения команды выглядит следующим образом:
M(HL) M(HL) + 1
В отличие от большинства других арифметическо-логических команд, воздействующих на все признаки, данные команды инкремента никак не влияют на один из битов признаков – бит CY.
Пример 2.35
Пусть в исходном состоянии было: M(0B00)=8Eh, M(0B01)=C5h. Затем выполнятся следующие команды.
Адрес Число Мнемокод Комментарий
0800 21 00 0B LXI H,0B00 ; подготовить в HL адрес ячейки M
0803 34 INR M ; инкремент содержимого ячейки M(0B00)
0804 2C INR L ; инкремент содержимого регистра ;(L)(L)+1
0805 34 INR M ; инкремент содержимого ячейки M(0B01)
и после выполнения этих команд в памяти данных будет: M(0B00)=8Fh, M(0B01)=C6h.
На основе таких команд удобно организовывать суммирующие счётчики повторений каких-либо циклов операций.
Кроме команд сложения однобайтных операндов есть среди команд сложения команды сложения двухбайтных операндов – DAD B, DAD D, DAD H, DAD SP. Схема их выполнения
(HL) (HL) + (rp),
где rp – регистровая пара BC, DE, HL или регистр SP. Характерным отличием таких команд сложения от команд однобайтных операций является то, что эти команды воздействуют своим выполнением не на все признаки регистра признаков, а только на один из них – на признак CY. Команды двухбайтных операций с участием бита CY вообще отсутствуют, поэтому для суммирования многобайтных чисел (более 3-х байтов) их применять не рекомендуется, а лучше использовать команды однобайтных операций.
Пример 1.36
Адрес Число Мнемокод Комментарий
0800 09 DAD B ; выполнить сложение: (HL)(HL)+(BC)
Существуют также команды сложения двухбайтного операнда регистровой пары с числом 1 то есть инкремент регистровых пар: INX B, INX D, INX H. Схема их выполнения
(rp) (rp) + 1
Отличает их от других арифметическо-логических команд полное отсутствие влияния на биты признаков. Применение этих команд может быть эффективным, например, в случае последовательной работы с ячейками области памяти для организации в регистровой паре указателя ячеек области, когда применяется косвенная адресация к этим ячейкам (пример приведён далее при рассмотрении команд декремента).