Цель работы: исследование выполнения отдельных команд и простых программ; использование различных методов адресации в программах; запись программ.
МП KP580BM80 имеет фиксированный набор команд. Время выполнения команды определяется процессом получения, декодирования и выполнения команды. Это время можно представить состоящим из ряда временных интервалов. Наиболее короткий временной интервал, равный периоду синхросигналов МП, называется машинным тактом. Время, необходимое для извлечения 1 байта информации из памяти или внешнего устройства или выполнения команды, определяемой одним машинным словом, называется машинным циклом. Машинный цикл для МП может включать в себя 3-5 машинных тактов. В зависимости от вида команды время выполнения может состоять из 1-5 машинных циклов. Для МП имеется 10 различных типов машинных циклов: извлечение кода команды (цикл M1), чтение данных из памяти, запись данных в память, извлечение данных из стека, запись данных в стек, ввод данных из внешнего устройства, Запись данных во внешнее устройство, цикл обслуживания прерывания, останов, обслуживание прерывания в режиме останова. Первым машинным циклом при извлечении любой команды является цикл M1.
На каждом машинном цикле МП проверяет состояние сигнала READY на своем входе. Нулевой сигнал на этом входе приостанавливает нормальную работу МП и переводит в режим ОЖИДАНИЕ, при этом на магистралях микроЭВМ присутствует вся информация, передаваемая на рассматриваемом машинном цикле. В учебной микроЭВМ это используется для исследования выполнения команд по машинным циклам. В этом режиме информация на магистралях микроЭВМ отображается светодиодами состояния.
Программа записывается в микроЭВМ в последовательных ячейках памяти.
Рассмотрим простейшую программу (программа 1), извлекающую число из адреса памяти 0C00h, инвертирующую его и записывающую результат в адрес памяти 0C01h.
Программа 1 (в мнемокодах)
Мнемокод Комментарий
LDA 0C00h Загрузить в аккумулятор число из адреса 0C00h (или 0B00h)
CMA Инвертировать число в аккумуляторе
STA 0C01h Сохранить результат из аккумулятора по адресу 0C01h (или 0B01h)
RST 1 Прервать выполнение программы
При записи программ все числа представляются в шестнадцатеричной системе счисления.
Для записи программы в память микроЭВМ необходимо перевести мнемокоды команд в машинные коды. Команды в программе могут быть одно-, двух- или трехбайтовые и должны в памяти занимать соответственно один, два или три адреса.
Программа 1 (размещение по адресам памяти)
Адрес
|
Число
|
Комментарий
|
0800
|
3A
|
Код команды LDA
|
0801
|
00
|
Младший байт адреса
|
0802
|
0С
|
Старший байт адреса
|
0803
|
2F
|
Код команды СМА
|
0804
|
32
|
Код команды STA
|
0805
|
01
|
Младший байт адреса
|
0806
|
0С
|
Старший байт адреса
|
0807
|
CF
|
Код команды RST 1
|
Предварительную запись программ удобно проводить в более компактной форме. В программе указывается начальный адрес каждой команды и при этом понимается, что в зависимости от длины (одно-, двух- или трехбайтная) команды в памяти будут занимать от одной до трех последовательных ячеек. При такой записи в левом столбце указываются лишь адреса команд в программе. Это позволяет сократить объем при описании программ и сделать более простым их анализ.
Программа 1 (общий вид записи)
Адрес
|
Код
|
Метка
|
Мнемокод
|
Комментарий
|
0800
|
3A 00 0C
|
|
LDA 0C00h
|
; Загрузить в аккумулятор число из адреса 0C00h
|
0803
|
2F
|
|
CMA
|
; Инвертировать число
|
0804
|
32 01 0C
|
|
STA 0C01h
|
; Сохранить результат из аккумулятора
|
|
|
|
|
; по адресу 0C01h
|
0807
|
CF
|
|
RST 1
|
; Прервать выполнение программы
|
Здесь используется прямой способ адресации. Рассмотрим аналогичную программу, но с использованием косвенного способа адресации (программа 2).
Программа 2
Адрес
|
Код
|
Метка
|
Мнемокод
|
Комментарий
|
0800
|
21 00 0C
|
|
LXI H, 0C00h
|
; Записать в регистры Н, L число 0C00h
|
0803
|
7E
|
|
MOV A, M
|
; Получить число из адреса, указанного в
; регистрах H, L
|
0804
|
2F
|
|
CMA
|
; Инвертировать число в аккумуляторе
|
0805
|
23
|
|
INX H
|
; Увеличить на 1 число в регистрах H, L
|
0806
|
77
|
|
MOV M, А
|
; Записать число из аккумулятора по
; адресу, указанному в H, L
|
0807
|
CF
|
|
RST 1
|
; Прервать выполнение программы
|
Задания
1. Ознакомьтесь со структурой команд МП i8080A (см. приложение).
2. Изучите порядок выполнения команд МП i8080A.
3. Изучите методы программирования на языке Ассемблера и в машинных кодах для МП i8080A.
4. Рассмотрите правила выполнения команд INR А (ЗC), DCR А (3D), ADD А (87), ANA А (A7) , XRA А (AF), CMP А (BF).
5. Исследуйте программу 1.
5.1. Введите в микроЭВМ программу 1.
5.2. Запишите по адресу 0C00h исследуемое число (см. вариант в табл. 3).
5.3. Осуществите пуск программы 1 с адреса 0800h. Проверьте результат выполнения программы путем исследования числа, записанного по адресу 0C01h.
5.4. Исследуйте процесс выполнения программы по командам. После выполнения каждой команды проанализируйте содержимое всех программно-доступных регистров МП.
5.5. Исследуйте процесс выполнения команд в программе 1 по машинным циклам. Обратите внимание на последовательность передачи и преобразования информации в микроЭВМ при выполнении каждой команды.
6. Исследуйте программу 2.
6.1. Введите в микроЭВМ программу 2.
6.2. Запишите по адресу 0C00h исследуемое число (см. вариант в табл. 3).
6.3. Осуществите пуск программы 2 с адреса 0800h. Проверьте результат выполнения программы путем исследования числа, записанного по адресу 0C01h.
6.4. Исследуйте процесс выполнения программы по командам. После выполнения каждой команды проанализируйте содержимое всех программно-доступных регистров МП.
6.5. Исследуйте процесс выполнения команд в программе 2 по машинным циклам. Обратите внимание на последовательность передачи и преобразования информации в микроЭВМ при выполнении каждой команды.
6.6. Заменяя в программе 2 команду CMA (2F) на команды INR А (3C) DCR А (3D), ADD А (87), ANA А (A7), XRA А (AF), CMP A (BF), исследуйте результат выполнения указанных команд по числу, записанному по адресу 0C01h. Результат выполнения программы при различных командах, записанных в программе 2 по адресу 0804h, занесите в табл. 2.
Таблица 2.
Число, записанное по адресу 0C00h
|
Команда, записанная по адресу 0804h
|
Число, записанное по адресу 0С01h
|
|
|
|
7. Разработайте программы: а) увеличения на 5 числа, записанного по адресу 0C00h и записи результата по адресу 0C01h (программа 3); б) сложения чисел, записанных по адресам 0C00h и 0CA0h, и записи результата по адресу 0C01h (программа 4); в) сравнения чисел в адресах 0C00h и 0C01h и записи большего из них в регистр В (программа 5).
7.1. Введите в микроЭВМ программу 3.
7.2. Осуществите пуск программы 3 и проверьте результат ее выполнения по числу, записанному по адресу 0C01h, при числах 05h, FEh, записанных по адресу 0C00h.
8. Исследуйте программу 4.
8.1. Введите в микроЭВМ программу 4.
8.2. Проверить результат выполнения программы по числу, записанному по адресу 0C01h, последовательно записывая по адресам 0C00h и 0CA0h соответственно числа 0Bh и B0h, FEh и B5h и осуществляя пуск программы.
8.3. Видоизмените и исследуйте программу 4 для случая, когда сумма двух чисел будет превышать восьмиразрядное число.
9. Исследуйте программу 5
8.1. Введите в микроЭВМ программу 5.
8.2. Запишите по адресам 0C00h и 0C01h исследуемые числа.
8.3. Осуществите пуск программы.
8.4. Проверьте результат ее выполнения по числу, записанному в регистре В.
При выполнении лабораторной работы на учебной микроЭВМ следует иметь ввиду, что:
1. Ввод исследуемой программы осуществляется путем ее последовательной записи в ячейки памяти. Для записи числа по адресу используются клавиши "ОтА", "ЗпУв" и цифровые клавиши на клавиатуре.
2. Пуск программы осуществляется нажатием на клавишу "П".
3. Выполнение программы по командам осуществляется нажатием на клавишу "Шк". После выполнения каждой команды микроЭВМ позволяет выводить на дисплей содержимое программно-доступных регистров МП с помощью клавиш "ОтРг" и "ЗпУв".
4. Выполнение программы по машинным циклам осуществляется последовательным нажатием на клавишу "Шц", при этом информация на дисплей микроЭВМ не выводится, а отображается лишь на светодиодах магистралей. Окончание режима производится нажатием на клавишу "Ст", при этом на дисплей выводится адрес текущей команды, выполняемой микроЭВМ на момент выхода из режима выполнения команд по машинным циклам.
Таблица 3.
Вариант
|
Исследуемое число
|
1
|
03h
|
2
|
15h
|
3
|
27h
|
4
|
39h
|
5
|
4Ah
|
6
|
5Bh
|
7
|
6Ch
|
8
|
7Dh
|
9
|
8Eh
|
10
|
9Fh
|
11
|
3Ah
|
12
|
5Bh
|
13
|
7Ch
|
14
|
9Dh
|
15
|
AEh
|
16
|
BFh
|
17
|
3Fh
|
18
|
5Eh
|
19
|
7Dh
|
20
|
9Ch
|
21
|
ABh
|
22
|
BAh
|
23
|
C9h
|
24
|
D7h
|
25
|
E3h
|
26
|
F1h
|
27
|
39h
|
28
|
57h
|
29
|
A6h
|
30
|
6Fh
|
Содержание отчета
Отчет должен содержать: 1. Цель работы. 2. Информацию о содержании программно-доступных регистров МП при выполнении программы 1 по командам. 3. Результат выполнения программы 2, при различных командах, записанных по адресу 0804h (табл. 2). 4. Текст программы 3 и результат ее выполнения. 5. Текст программы 4 и результат ее выполнения. 6. Текст программы 5 и результат ее выполнения. 7. Выводы.
|