
- •Основы микропроцессорной техники
- •Введение
- •1. Система команд микропроцессора 8080 Представление команд в числовой форме
- •Мнемоническое представление команд Ассемблер
- •Директивы Ассемблера процессора 8080
- •Методы адресации операндов команд
- •Биты признаков
- •Общее представление команд
- •Команды пересылок
- •Однобайтные пересылки
- •Двухбайтные пересылки
- •Команды передачи управления
- •Команды безусловных переходов
- •Команды условных переходов
- •Команды организации подпрограмм
- •Команды безусловных вызовов и возврата
- •Команды условных вызовов и возврата
- •Команды арифметических, логических и сдвиговых операций
- •Команды сложения
- •Команды вычитания
- •Команды логических операций
- •Команды сравнения
- •Команды сдвига
- •Специальные арифметическо-логические команды
- •Команды управления стеком
- •Команды ввода, вывода и управления состоянием процессора Команды ввода и вывода
- •Команды управления прерываниями
- •Команда перевода процессора в состояние останова
- •Учебная микро-эвм умк-80
- •Управление микро-эвм средствами Монитора
- •Чтение и модификация содержимого памяти хххх
- •Чтение и модификация содержимого регистров
- •Запуск программы пользователя
- •Отражение типа машинного цикла через слово состояния
- •Пошаговые режимы
- •Порядок выполнения работы Заполнение памяти средствами Монитора
- •Определение исходного положения области стека
- •Ввод программы средствами Монитора
- •Лабораторная работа № 1.2 Учебная микро-эвм умпк-80
- •Краткие сведения из теории Назначение умпк-80
- •Структура умпк-80 и распределения адресного пространства
- •Управление микро-эвм средствами Монитора
- •Тестирование микро-эвм и начальная установка
- •Порядок выполнения работы Исследование порядка включения умпк-80
- •Исследование содержимого памяти
- •Запись числа в память умпк-80
- •Запись числа в программно-доступные регистры
- •Запуск программы
- •Контроль выполнения команд программы
- •Содержание отчёта
- •Контрольные вопросы
- •Лабораторная работа № 2 Отдельные команды, простые программы
- •Краткие сведения из теории Типы команд
- •Форматы команд
- •Способы адресации операндов
- •Признаки результатов операций
- •Представление программы
- •Порядок выполнения работы Исследование отдельных команд арифметических и логических операций
- •Исследование команд пересылок и способов адресации операндов
- •Исследование команд арифметического сложения
- •Исследование операций сравнения однобайтных чисел
- •Содержание отчёта
- •Контрольные вопросы
- •Библиографический список
Команды сравнения
Программисту часто бывает необходимо организовать сравнение двух чисел, для того чтобы по результату этого сравнения выбрать один из возможных путей продолжения программы. Такое сравнение однобайтных чисел реализуется посредством оценки разности сравниваемых чисел. Командами сравнения CMP r, CMP M и CPI d8 организуется обычное однобайтное арифметическое вычитание (как в командах SUB r, SUB M и SUI d8), устанавливающее все биты признаков. Но в отличие от команд вычитания команды сравнения не сохраняют в аккумуляторе сам результат вычитания, поскольку целью сравнения является показ признаков вычитания. Имея состояния битов переноса CY и нулевого результата Z, и применяя команды условных ветвлений в программе, умеющих оценивать состояния признаков и выбирать пути продолжения программы, программист может воспользоваться результатами сравнения.
Три варианта команд сравнения различаются способом адресации операнда уменьшаемого. Команда CMP r адресует уменьшаемое в регистре r; команда CMP M адресует уменьшаемое в ячейке памяти M, адрес которой будет взят из регистровой пары HL; команда CPI d8 адресует уменьшаемое прямым определением его через байт d8 в составе команды.
Пример 1.45
По условиям алгоритма требуется обеспечить переход к метке M1, если байты в регистрах E и C равны, и переход к метке M2, в противном случае.
Метка Мнемокод Комментарий
MOV A,E ; подготовить в A 1-й байт для сравнения из E
CMP C ; выполнить вычитание F(CY,Z)(A)–(C)
JZ M1 ; перейти к M1, если числа равны (Z=1)
JMP M2 ; иначе перейти к M2
……………………………..
M1:
……………………………..
M2:
……………………………..
Пример 1.46
Требуется сравнить число в регистре D с числом 36h и записать большее в аккумулятор.
Метка Мнемокод Комментарий
MOV A,D ; подготовить в A 1-й байт для сравнения из D
CPI 36h ; выполнить вычитание F(CY,Z)(A)–36h
JC M1 ; к M1, если в результате операции потребовался
;заём, то есть он – отрицательный: (A)<36h
HLT ; иначе, когда останов (A)≥36h
M1: MVI A,36h ; записать 36h в A
HLT ; останов
Признак знака результата применять при сравнении не всегда корректно. В двоичной арифметике на схемотехническом уровне микропроцессора признак знака не имеет чисто математического смысла. Он отражает лишь состояние старшего бита результата, а единичное состояние старшего бита результата не всегда есть признак наличия заёма при вычитании из меньшего операнда большего.
Команды сдвига
Команды выполняют сдвиг содержимого аккумулятора на один разряд в указанном кодом команды направлении. Арифметически сдвиг двоичного числа влево даёт его удвоение, а сдвиг двоичного числа вправо приводит к уменьшению числа в два раза. Вместе с битами аккумулятора в этих операциях участвует бит CY регистра признаков. Причём, возможны два варианта участия бита CY в операциях сдвига. Схемы выполнения команд сдвигов приведены на рис. 1.2.
Рис.1.2. Выполнение операций сдвига
Команды сдвига влево RAL и RLC обеспечивают одновременное перемещение всех битов числа на один разряд влево: всякий бит с номером m устанавливается равным биту с номером m+1. Различия этих команд связаны с поведением бита CY при сдвиге. В команде RLC выполняется обычный сдвиг влево, при котором содержимое старшего бита уходит в бит CY, а прежнее состояние бита CY теряется. Получается, что команда RLC выполняет сдвиг без учёта предшествующего сдвигу состояния бита CY. В команде RAL бит CY становится как бы девятым битом сдвигаемого байта и его прежнее состояние не теряется, а сдвигается в бит D0. Получается, что команда RAL выполняет сдвиг с учётом состояния бита CY, предшествующего сдвигу. На этой основе можно организовывать сдвиги многобайтных чисел.
Команды сдвига вправо RAR и RRC обеспечивают одновременное перемещение всех битов числа на один разряд вправо: всякий бит с номером m устанавливается равным биту с номером m–1. Различия этих команд связаны с поведением бита CY при сдвиге. В команде RRC выполняется обычный сдвиг вправо, при котором содержимое младшего бита уходит в бит CY, а прежнее состояние бита CY теряется. Получается, что команда RRC выполняет сдвиг без учёта предшествующего сдвигу состояния бита CY. В команде RAR бит CY становится как бы девятым битом сдвигаемого байта и его прежнее состояние не теряется, а сдвигается в бит D7. Получается, что команда RAR выполняет сдвиг с учётом состояния бита CY, предшествующего сдвигу.
Пример 1.47
Требуется уменьшить в 2 раза двухбайтное число, хранящееся в регистровой паре HL.
Метка Мнемокод Комментарий
ANA A ; сброс бита CY
MOV A,H ; загружаем для сдвига старший байт
RAR ; выполняем сдвиг вправо или деление на 2
MOV H,A ; сохраняем старший байт результата
MOV A,L ; загружаем для сдвига младший байт
RAR ; сдвиг вправо с учётом переноса от
;предыдущего сдвига
MOV L,A ; сохраняем младший байт результата
В результате этих операций в регистровой паре HL окажется число вдвое меньше исходного.