
- •Основы микропроцессорной техники
- •Введение
- •1. Система команд микропроцессора 8080 Представление команд в числовой форме
- •Мнемоническое представление команд Ассемблер
- •Директивы Ассемблера процессора 8080
- •Методы адресации операндов команд
- •Биты признаков
- •Общее представление команд
- •Команды пересылок
- •Однобайтные пересылки
- •Двухбайтные пересылки
- •Команды передачи управления
- •Команды безусловных переходов
- •Команды условных переходов
- •Команды организации подпрограмм
- •Команды безусловных вызовов и возврата
- •Команды условных вызовов и возврата
- •Команды арифметических, логических и сдвиговых операций
- •Команды сложения
- •Команды вычитания
- •Команды логических операций
- •Команды сравнения
- •Команды сдвига
- •Специальные арифметическо-логические команды
- •Команды управления стеком
- •Команды ввода, вывода и управления состоянием процессора Команды ввода и вывода
- •Команды управления прерываниями
- •Команда перевода процессора в состояние останова
- •Учебная микро-эвм умк-80
- •Управление микро-эвм средствами Монитора
- •Чтение и модификация содержимого памяти хххх
- •Чтение и модификация содержимого регистров
- •Запуск программы пользователя
- •Отражение типа машинного цикла через слово состояния
- •Пошаговые режимы
- •Порядок выполнения работы Заполнение памяти средствами Монитора
- •Определение исходного положения области стека
- •Ввод программы средствами Монитора
- •Лабораторная работа № 1.2 Учебная микро-эвм умпк-80
- •Краткие сведения из теории Назначение умпк-80
- •Структура умпк-80 и распределения адресного пространства
- •Управление микро-эвм средствами Монитора
- •Тестирование микро-эвм и начальная установка
- •Порядок выполнения работы Исследование порядка включения умпк-80
- •Исследование содержимого памяти
- •Запись числа в память умпк-80
- •Запись числа в программно-доступные регистры
- •Запуск программы
- •Контроль выполнения команд программы
- •Содержание отчёта
- •Контрольные вопросы
- •Лабораторная работа № 2 Отдельные команды, простые программы
- •Краткие сведения из теории Типы команд
- •Форматы команд
- •Способы адресации операндов
- •Признаки результатов операций
- •Представление программы
- •Порядок выполнения работы Исследование отдельных команд арифметических и логических операций
- •Исследование команд пересылок и способов адресации операндов
- •Исследование команд арифметического сложения
- •Исследование операций сравнения однобайтных чисел
- •Содержание отчёта
- •Контрольные вопросы
- •Библиографический список
Команды вычитания
Команды вычитания позволяют выполняют операции только с однобайтными операндами. По схеме выполнения и способам определения 2-го операнда, а также по участию или неучастию в операциях бита CY эти команды аналогичны командам однобайтного сложения. Команды выполняют вычитание по правилам двоичного вычитания из двоичной арифметики, представленным в Табл.9.2.
Таблица 1.9
Правила двоичного вычитания
1 |
0 – 0 = 0 |
2 |
1 – 0 = 1 |
3 |
1 – 1 = 0 |
4 |
0 – 1 = 1 – заём 1 из следующего разряда |
Команды вычитания SUB r и SBB r определяют второй операнд (вычитаемое) регистровым способом. Команды SUB r выполняется по схеме:
(A) (A) – (r)
Эти команды предполагают, что исходные операнды будут предварительно записаны в аккумулятор (уменьшаемое) и в регистр r (вычитаемое).
Пример 1.37
Требуется вычесть из числа 8Eh число C5h.
Адрес Число Мнемокод Комментарий
0800 3E 8E MVI A,8E ; поместить в аккумулятор уменьшаемое
0802 06 C5 MVI B,C5 ; поместить в регистр B вычитаемое
0804 90 SUB 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 1 0 1 0 0 1 1 1 1 A 7
В результате операции присутствует заём, так как уменьшаемое меньше вычитаемого. Выполняя команду SUB B, процессор сохранит младшие 8 разрядов результата в аккумуляторе, а наличие заёма отразит состоянием бита CY регистра признаков: CY=1. Для операций вычитания бит CY, таким образом, становится битом заёма. Следующие команды вычитания могут использовать бит CY для новых операций вычитания, когда требуется выполнять вычитание более старших байтов многобайтных чисел.
Команда SBB r работает так же как команда SUB r, но кроме того из результата вычитания двух операндов вычитается ещё бит CY.
(A) (A) – (r) – (CY)
Применение таких команд позволяет, программируя операции вычитания многобайтных чисел, организовать учёт заёма от вычитания младших байтов при вычитании старших байтов.
Пример 1.38
Запрограммировать вычитание двухбайтных чисел 358Eh–24C5h.
Адрес Число Мнемокод Комментарий
0800 01 8E 35 LXI B,358E ; поместить в BC уменьшаемое
0803 11 C5 24 LXI D,24C5 ; поместить в DE вычитаемое
0806 79 MOV A,C ; подготовить и выполнить вычитание
0807 93 SUB E ; младших байтов без учёта заёма
0808 6F MOV L,A ; поместить младший байт результата в L
0809 78 MOV A,B ; подготовить и выполнить вычитание
080A 9A SBB D ; старших байтов с учётом заёма
080B 67 MOV H,A ; поместить старший байт результата в H
Команды типа SUB M, SBB M обеспечивают выбор операнда-вычитаемого косвенно-регистровым методом, когда адрес операнда определяется в регистровой паре HL. Выполняемое командой SUB M действие:
(A) (A) – M(HL)
Выполняемое командой SBB M действие:
(A) (A) – M(HL) – (CY)
Пример 1.39
Выполнить вычитание 8Eh–C5h, если вычитаемое C5h находится в ячейке с адресом 0B00h.
Адрес Число Мнемокод Комментарий
0800 3E 8E MVI A,8E ; поместить в аккумулятор уменьшаемое
0802 21 00 0B LXI H,0B00 ; подготовить в HL адрес ячейки M
0804 96 SUB M ; выполнить вычитание: (A) (A) – M(HL)
Команды типа SUI d8, SBI d8 обеспечивают выбор операнда-уменьшаемого прямым методом, то есть путём указания числа в составе самой команды. Выполняемое командой SUI d8 действие:
(A) (A) – d8
Выполняемое командой SBI d8 действие:
(A) (A) – d8 – (CY)
Пример 1.40
Выполнить вычитание 8Eh–C5h.
Адрес Число Мнемокод Комментарий
0800 3E 8E MVI A,8E ; поместить в аккумулятор уменьшаемое
0802 D6 C5 SUI C5 ; выполнить вычитание: (A) (A) – C5h
Ещё один тип команд вычитания обеспечивает вычитание из задаваемого операнда числа 1, то есть декремент операнда. Операнд может быть определён одним из двух способов. В команде DCR r операнд определён регистровым способом и схема выполнения команды выглядит следующим образом:
(r) (r) – 1
В команде DCR M операнд определён косвенно-регистровым способом по адресу в регистровой паре HL и схема выполнения команды выглядит следующим образом:
M(HL) M(HL) – 1
В отличие от большинства других арифметическо-логических команд, воздействующих на все признаки, данные команды декремента никак не влияют на один из битов признаков – бит CY. На основе таких команд удобно организовывать вычитающие счётчики повторений каких-либо циклов операций с контролем количества повторений по признаку Z (см. пример 9.11).
Существуют также команды вычитания из двухбайтного операнда регистровой пары числа 1 то есть декремент регистровых пар: DCX B, DCX D, DCX H. Схема их выполнения:
(rp) (rp) – 1
Отличает их от других арифметическо-логических команд полное отсутствие влияния на биты признаков. Поэтому на их основе организовывать вычитающие счётчики повторений сложнее, чем соответствующими однобайтными командами. Ниже приведён пример типичного использования команд инкремента и декремента.
Пример 1.41
Требуется выполнить обнуление области из 55h ячеек памяти, начинающейся по адресу 0B00.
Метка Мнемокод Комментарий
MVI C,55h ;загрузка счётчика повторений цикла
LXI H,0BF0h ;загрузка в HL указателя начала области
MVI A,00 ;обнуление аккумулятора
M00: MOV M,A ;обнуление очередной ячейки
INX H ;HLHL+1 продвижение указателя ячеек
DCR C ;CC–1 подсчёт ячеек и установка Z
JNZ M00 ;переход к M00, если не выполнено Z=1
HLT ;останов, если Z=1
На основе команды декремента DCR C здесь организуется счётчик проходов цикла, а на основе команды инкремента регистровой пары INX H реализуется модификация указателя ячеек рабочей области памяти. Вместо этой команды можно с тем же успехом применить команду DCX H, при этом число исходного значения указателя должно быть 0C45h.