МПС
Система
команд микропроцессора Intel8080 (Лаба)
Цель работы: изучение выполнения отдельных
команд передачи данных и простых программ; исследование процесса выполнения
команд по машинным циклам, самостоятельная разработка программ на языке Ассемблер. Для
разработки программ необходимо знание архитектуры микропроцессора и
микропроцессорной системы. Архитектура отражает возможности прикладного
использования микропроцессора и содержит описание программной модели и системы
команд, обеспечивающих доступ к элементам модели. Программная модель системы
на основе МП Intel8080 содержит непосредственно
модель МП, модель памяти и модель портов ввода-вывода. Рис. Программная модель микропроцессорной системы на основе Intel 8080 Модель
МП содержит следующие элементы: 1)
шесть 8-разрядных регистров (B,C,D,E,H,L), которые могут использоватся автономно и
попарно как 3 16-разрядных регистра (BC,DE,HL). Регистры и регистровые пары
используются для временного хранения данных, адресов памяти и косвенной
адресации основной памяти (в качестве указателя памяти). Регистровая пара HL преимущественно используется как указатель памяти в
коротких однобайтных командах, причем ячейка памяти, адрес которой содержится
в HL паре, называется М-регистром. В
функциональном отношении этот регистр эквивалентен регистрам МП. 2)
16-разрядный регистр указатель стека (SP).
Используется для указания адреса вершины стека, который размещен в памяти. 3)
8-разрядный аккумулятор (А-регистр) – основной рабочий
регистр МП, который используется АЛУ для размещения одного из операндов
(данное участвующее в операции) и результата выполнения операции. Совместно с F-регистром образует регистровую пару, которая носит
название слово состояния программы (PSW). 4)
8-разрядный F-регистр (регистр
признаков, или флагов) – отражающий некоторые особенности выполнения
операций АЛУ. F-регистр фиксирует 5 различных
признаков (3 разряда не используются): S – бит
знака, равен 1, если число отрицательное (совпадает по значению со старшим
(седьмым) битом аккумулятора; Z – бит
нуля, равен 1, если результат операции равен нулю; P – бит
паритета, равен 1, если число единиц результата четное; CY – бит
переноса, равен 1, если при выполнении операции произошел перенос (или заем)
из старшего разряда АЛУ. Признак очень важен при выполнении операций с данными увеличенной
разрядности; AC – бит
вспомогательного переноса, равен 1, если при выполнении операции произошел
перенос из младшей тетрады (4 двоичных разряда) в
старшую.
Используется командой десятичной коррекции содержимого аккумулятора. Модель
памяти представляет собой упорядоченную и пронумерованную последовательность
8-разрядных структурных элементов – ячеек памяти. Номер ячейки является ее
адресом. Шина адреса МП является 16-разрядной поэтому
максимальное число адресуемых ячеек равно 216 (65536=64К). Адрес
любой ячейки памяти представляется 4-х разрядным шестнадцатеричным числом (от
0000H до 0FFFFH), а ее содержимое это 2-разрядное шестнадцатеричное число. Над каждой
ячейкой памяти могут быть выполнены операции записи байта в ячейку и чтения
содержимого ячейки. Память такого типа называют ОЗУ. Эта память используется
для хранения программ, исходных, промежуточных и результирующих данных. В
реальных МП системах фактическое число ячеек памяти может быть меньше адресного
пространства и, кроме того, разделено на части по конструктивным признакам. В
нашем лабораторном макете, например, используются только первые 4К адресного
пространства и первые 2К – это постоянное ЗУ. Модель
портов ввода-вывода представляет собой также упорядоченную пронумерованную
последовательность 8-разрядных регистров. Эти регистры адресуются по 8 младшим
линиям шины адреса, поэтому максимальное число портов – 256. Внешние устройства
обмениваются информацией с МП через соответствующий порт ввода или вывода. Система
команд – набор элементарных операций выполняемых МП. Набор команд МП Intel8080 содержит 78 базовых команд имеющих 244 модификации.
Функциональные возможности системы команд определяются форматом обрабатываемых
данных, форматом команд и способами адресации операндов в командах. Малая
разрядность регистров МП приводит к необходимости использования различных
способов непрямой адресации памяти, сокращающих длину команды и размеры программ.
В МП Intel8080 используются следующие
способы адресации операндов: – Прямая
адресация – во втором и третьем байтах команды содержится адрес памяти, по
которому находится операнд. Регистровая
адресация – операнд в одном из регистров МП и команда указывает на этот
регистр. Косвенная
регистровая адресация – адрес операнда находится в регистровой паре, на которую
указывает команда. Непосредственная
адресация – операнд размещен непосредственно в команде (во втором, или во
втором и третьем, байте команды). Стековая
адресация – адрес памяти определяется регистром указателем стека. Формат
команды – одно-, двух- или трехбайтовое число. Первый байт команды представляет
собой код операции, второй и третий – данные или адрес. Команды
с регистровым, косвенным регистровым и стековым методом адресации –
однобайтовые; с прямым – трехбайтовые; с непосредственным – двух- или
трехбайтовые. В трехбайтовых командах действует принцип – младший байт
по младшему адресу, т. е. в коде команды сначала идет младший байт адреса, потом
старший. Все
команды МП Intel8080 подразделяются на 5
функционально специализированных групп: команды
передачи данных; команды
арифметических операций; команды
логических операций; команды
передачи управления; команды
стека, ввода–вывода и управления. 2. Команды передачи данных Такие
команды обеспечивают выполнение операций размещения, обмена, загрузки и
перемещения данных. 1)
МОV R1,R2 . Передача данных из регистра R2 в R1. Однобайтовая команда с
регистровым способом адресации. В качестве R1(R2) могут выступать регистры
общего назначения (B,C,D,E,H,L), аккумулятор (А) и ячейка памяти (М). В последнем случае адрес ячейки
должен находиться в регистровой паре HL. Формат
команды 01DDDSSS , где
DDD–код регистра приемника, SSS–код регистра источника (таблица
1). Примеры:
MOV B,D (копирование содержимого
регистра D в регистр B); MOV A,M (копирование содержимого ячейки
памяти в аккумулятор, адрес ячейки находится в регистровой паре HL). 2)
MVI R,data. Передача в регистр
непосредственных данных. Двухбайтовая команда с непосредственным способом
адресации. Регистр R определяется
как и в предыдущем случае. Формат
команды 00DDD110
КОП (байт кода операции); XXXXXXXX
Данные (1 байт). Примеры:
MVI H,0A7H (загрузка непосредственного числа 0А7Н в регистр Н); MVI M,0FH (загрузка непосредственного
числа 0FН в ячейку памяти, адрес ячейки в регистровой паре HL). Таблица 1
3)
LXI RP,data16. Непосредственная загрузка регистровой пары.
Трехбайтовая команда с непосредственным способом адресации. Загружает два байта а регистровую пару BC, DE, HL или SP. Формат
команды: 00RP0001
КОП; XXXXXXXX
младший байт данных; XXXXXXXX
старший байт данных. Таблица 2
4)
LDA addr. Прямая загрузка аккумулятора. STA addr. Прямое запоминание аккумулятора. Команда
загружает из памяти данные в аккумулятор (из аккумулятора в память), причем
адрес ячейки памяти берется прямо из команды. Форматы команд: LDA STA 00111010 00110010 КОП; xxxxxxxx xxxxxxxx младший байт адреса; xxxxxxxx xxxxxxxx старший байт адреса. 5)
LHLD addr. Прямая загрузка регистровой пары HL. SHLD addr. Прямое запоминание регистровой пары HL. Команда
загружает из памяти данные в регистровую пару HL (из регистровой пары HL в память), причем адрес ячейки
памяти берется прямо из команды. Форматы команд: LHLD SHLD 00101010 00100010 КОП; xxxxxxxx xxxxxxxx младший байт адреса; xxxxxxxx xxxxxxxx старший байт адреса. 6)
LDAX RP. Косвенная загрузка аккумулятора. STAX RP. Косвенное запоминание
аккумулятора. Команда
загружает из памяти данные в аккумулятор (из аккумулятора в память), причем
адрес ячейки памяти берется из регистровой пары BC или DE. Форматы команд: LDAX STAX 00RP1010 00RP0010 7.XCHG. Обмен содержимого регистровых пар DE и HL. Формат
команды: 11101011 1.2. Команды
передачи управления Команды
используются для создания разветвляющихся и циклических программ. В качестве
проверяемого условия выступают значения битов флагового
регистра. 1)
JMP adress. Передача управления команде находящейся по адресу
adress. Формат
команды 11000011 КОП ХХХХХХХХ младший байт адреса ХХХХХХХХ старший байт адреса 2)
Jусл adress. Передача управления команде находящейся по адресу
adress если выполнено условие, в противном случае переход к следующей по порядку
команде. Формат
команды 11ссс010 КОП (ссс –
код условия из таблицы 3); ХХХХХХХХ младший байт адреса; ХХХХХХХХ старший байт адреса. Таблица 3.
3)
CALL adress. Передача управления подпрограмме находящейся по
адресу adress.Содержимое программного счетчика
записывается в стек, а adress записывается в программный счетчик. Формат
команды 11001101 КОП ХХХХХХХХ младший байт адреса ХХХХХХХХ старший байт адреса 4)
Cусл adress. Передача управления подпрограмме находящейся по
адресу adress (содержимое программного
счетчика записывается в стек, а adress записывается в программный счетчик) если выполнено
условие, в противном случае переход к следующей по порядку команде. Формат
команды 11ссс100 КОП (ссс – код
условия из таблицы 3) ХХХХХХХХ младший байт адреса ХХХХХХХХ старший байт адреса Код условия Значение Коментарий 5)
RET.
Возврат из подпрограммы. Из стека в программный счетчик записывается
значение адреса основной программы. Формат
команды 11001001 КОП ХХХХХХХХ младший байт адреса ХХХХХХХХ старший байт адреса 6)
Rусл adress. Возврат из подпрограммы, если выполнено условие,
в противном случае переход к следующей по порядку команде. Формат
команды 11ссс000 КОП (ссс –
код условия); ХХХХХХХХ младший байт адреса; ХХХХХХХХ старший байт адреса. В
данной работе мы будем использовать 4 команды из группы арифметических команд: 1)
INR R . Инкремент (увеличение на 1) содержимого регистра R. DCR R . Декремент (уменьшение на 1)
содержимого регистра R. Однобайтовые команды с
регистровым способом адресации. В качестве R могут выступать регистры общего назначения (B,C,D,E,H,L),аккумулятор (А) и ячейка
памяти (М). В последнем случае адрес ячейки должен находиться в регистровой
паре HL. Содержимое регистра R увеличивается (уменьшается) на 1 и результат помещается
в тот же регистр. Команды влияют на все биты флагового
регистра микропроцессора за исключением бита переноса, который не изменяется. Формат
команды 00SSS10D , где
SSS – код регистра, D=0 – инкремент, D=1 – декремент. 2)
INX RR. Инкремент содержимого регистровой
пары. DCX RR. Декремент содержимого
регистровой пары. Однобайтовые команды с регистровым способом адресации. В
качестве операнда используются регистровые пары BC, DE, HL и SP. На состояние битов флагового регистра команды не влияют. Формат
команды 00RRD011
, где
RR – код регистровой пары, D=0 – инкремент, D=1 – декремент. 3. Исследование выполнения
программ Рассмотрим
программу, записывающую число 0А0Н в память по адресу 0900Н. Программа
1 (общий вид записи) Адрес Машинный код
Мнемокод Комментарий 0800 3E A0 MVI A,0A0;
загрузить число в аккумулятор 0802 32 00 09 STA 0900 ; записать число по адресу 0900 0805 76 HLT ; останов Порядок
выполнения: 1.
Ввести в УМК программу 1. 2.
Записать по адресу 0900 любое число. 3.
Осуществить пуск программы. Последовательно нажать клавиши "СБ",
"СТ", ввести адрес 0800 и нажать клавишу "ВП". Выждать 1–2с
и нажать клавишу "ПР", при этом на адресном дисплее отобразится адрес
ячейки, следующий за командой HLT. 4.
Проверить результат выполнения программы путем считывания числа из ячейки 0900. В
приведенной выше программе 1 используется прямой способ адресации. Программа
2 (с использованием косвенного способа адресации). Адрес Машинный код
Мнемокод Комментарий 0800 21 00 09 LXI H,0900;
записать в регистры H,L ; число 0900 0803 3Е A0 MVI A,0A0 ; записать непосредственное ; число 0A0 в аккумулятор 0805 77 MOV M,A ; записать число из аккуму- ; лятора по адресу, указан- ; ному в регистрах, H и L 0806 76 HLT ; останов Порядок выполнения 1.
Ввести в УМК программу 2. 2.
Записать по адресу 0900 любое число. 3.
Осуществить пуск программы с адреса 0800. Проверить результат выполнения
программы по числу, записанному по адресу 0900. 4.
Исследовать процесс выполнения программы по машинным циклам. 5.
В точках останова исследовать содержимое аккумулятора, регистров H,L и ячейки памяти 0900. Программа
3. Программа формирования в памяти, начиная с адреса 0900Н, массива из 10
последовательных чисел. Адрес Машинный
код Мнемокод Комментарий 0800 0E 14 MVI C,0АH ;загрузка в регистр С
коли- ;чества чисел 0802 3E 01 MVI A,01H ;загрузка в А
первого числа 0804 21 00 09 LXI H,0900H;в пару
HL -
адрес памяти 0807 7E MOV A,M ;содержимое А копируется в ;память 0808 0809 23 INX H ;инкремент указателя памяти 080A 0D DCR C ;декремент
счетчика 080B C2 07 08 JNZ0807 ;возврат к шагу 0807 080E 76 HLT ;останов Порядок выполнения 1.
Ввести в УМК программу 3. 2.
Осуществить пуск программы с адреса 0800. Проверить результат выполнения программы
по числам, записанным по адресу 0900 и далее. 3.
Исследовать процесс выполнения программы по машинным циклам. 4.
В некоторых точках исследовать содержимое аккумулятора, регистров H,L и ячеек памяти 0900. Используя
команды передачи данных составить программу пересылки данных из ячеек 0900 и
0901 по адресам 0910 и 0911, занести ее в УМК и проверить ее выполнение.
Составить программу пересылки массива из 10 байтов, расположенных в памяти
последовательно начиная с адреса 0900Н, в 10 ячеек начиная с адреса 09А0Н,
причем данное в исходном массиве находящееся по младшему адресу в полученном
массиве должно располагаться по старшему адресу. Содержание отчета 1.
Программная модель МП Intel8080. 2.
Команды передачи данных. 3.
Ассемблерные записи программ с
комментариями. 4.
Пошаговый разбор работы программ. |
|||||||||||||||||||||||||||||||||||||