Файл: В.В. Демьянов Изучение системы команд микропроцессора серии К580 на учебно-отладочной микроЭВМ.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 15.06.2024
Просмотров: 72
Скачиваний: 0
25
Программа 2
Адрес |
|
Код |
Метка |
Мнемокод |
Комментарий |
|||
|
команды |
|
|
|
|
|
|
|
8200 |
06 |
0A |
|
MVI B, 0A |
Занести |
количество |
перио- |
|
|
|
|
|
|
|
дов =10 |
|
|
8202 |
11 |
FF83 |
|
LXI 83FF |
|
Занести адрес ячейки инди- |
||
|
|
|
|
|
|
кации в регистры DE |
||
8205 |
3E00 |
M1 |
MVI A, 00 |
Занести 0 в аккумулятор |
||||
8207 |
12 |
|
|
STAX |
|
Занести 0 в ячейку индика- |
||
|
|
|
|
|
|
ции |
|
|
8208 |
CD 2082 |
|
CALL DLIT |
Вызвать |
подпрограмму за- |
|||
|
|
|
|
|
|
держки |
|
|
820B |
3E FF |
|
MVI A, FF |
Занести FF в аккумулятор |
||||
820D |
12 |
|
|
STAX D |
|
Занести FF в ячейку инди- |
||
|
|
|
|
|
|
кации |
|
|
820E |
CD 2082 |
|
CALL DLIT |
Вызвать |
подпрограмму за- |
|||
|
|
|
|
|
|
держки |
|
|
8211 |
05 |
|
|
DCR B |
|
B-1→ B |
|
|
8212 |
C2 0582 |
|
JNZ M1 |
|
Если B≠ 0, идти к M1 |
|
||
8215 |
E7 |
|
|
RST4 |
|
Окончание программы |
||
8220 |
C5 |
|
DLIT |
PUSH B |
|
Подпрограмма выдержки |
||
8221 |
D5 |
|
PUSH D |
|
Сохранение данных в реги- |
|||
|
|
|
|
|
|
страх B, C, D, E |
|
|
8222 |
01 |
F8C8 |
|
LXI |
B, |
Счетчик |
B=200, |
счетчик |
|
|
|
|
C8F8 |
|
С=248 |
|
|
8225 |
15 |
|
DLI |
DCR |
|
“пустой оператор” |
|
|
8226 |
05 |
|
|
DCR B |
|
B-1→ B |
|
|
8227 |
C2 2582 |
|
JNZ DLI |
|
Выдержка 10мкс |
|
||
822A |
06 C8 |
|
MVI B, 01 |
Загрузить счетчик B=200 |
||||
822C |
0D |
|
DCR C |
|
C-1→ C |
|
|
|
822D |
C2 2582 |
|
JNZ DLI |
|
Кратные выдержки |
|
||
8230 |
D1 |
|
POP D |
|
Восстановление содержимо- |
|||
|
|
|
|
|
|
го регистровых пар |
|
|
8231 |
C1 |
|
|
POP B |
|
|
|
|
8232 |
C9 |
|
|
RET |
|
Возврат из подпрограммы |
25
26
2. ЗАДАНИЕ ДЛЯ ДОМАШНЕЙ ПОДГОТОВКИ
1. Изучите группу логических команд и команд условной передачи управления.
2.Ознакомьтесь с разрядами регистра признаков МП серии К580 и правилами записи в них единицы.
3.Ознакомьтесь с программой 1.
4.Разработайте программу занесения числа 12 по адресу 8400, если содержимое аккумулятора больше 3, но меньше 10, иначе в ячейку памяти занести нуль.
5.Видоизмените программу 1 так, чтобы микроЭВМ реагировала на нуль в пятом разряде при записанных 1 во всех остальных разрядах.
6.Вычислите временную задержку, реализованную подпрограммой DLIТ в программе 2.
7.Видоизмените программу 2 так, чтобы обеспечить выдержку времени 0,2с, если машинный такт равен 0,5 мкс.
3.ЗАДАНИЕ К ЛАБОРАТОРНОЙ РАБОТЕ
3.1. Исследовать программу 1
Ввести в микроЭВМ программу 1, занести в аккумулятор число и запустить программу. Представить число в двоичном коде и проанализировать его на 1 в пятом разряде. Проанализировать содержание десяти ячеек, начиная с адреса 8400. Проанализировать содержание регистра признаков при пошаговом выполнении программы.
3.2. Исследовать программу 2
Ввести в микроЭВМ программу 2, изменить начальное значение счетчиков (регистров В и С) в командах LXI B (адрес 8222) и MOV B (адрес 822А) на 02 и исследовать выполнение программы, просматривая содержание регистра В, признака Z, указателя стека и вершины стека в пошаговом режиме. Запустить программу на выполнение в режиме прогона, предварительно установив указанные в программе 2 начальные значения счетчиков, замерить время выдержки. Установить такие значения счетчиков, чтобы выдержка времени была равной 0,2 ±
26
27
0,02с. Заменить команду POP на любую однобайтовую команду в программе 2 и проанализировать результаты выполнения программы.
4. РАБОТА НА УЧЕБНОЙ МИКРОЭВМ
Доступ к регистровым парам осуществляется по команде ADDR, X; где X - имя регистровой пары (В, D, H, S - указатель стека, P - вершина стека).
5. СОДЕРЖАНИЕ ОТЧЕТА
Отчет должен содержать:
1) перечень команд передачи управления по условию;
2)полный перечень команд вызова и возврата из подпрограммы;
3)видоизмененные программы 1 и 2 в соответствии с заданием для домашней подготовки;
4)выражение для расчета времени выдержки для программы 2;
5)перечень команд работы со стеком.
6. КОНТРОЛЬНЫЕ ВОПРОСЫ
1. При выполнении каких команд в программе 1 задействуются разряды регистра признаков МП?
2.По каким условиям записывается 1 в каждый из разрядов регистра признаков?
3.Какой разряд регистра признаков соответствует каждому из признаков?
4.Перечислите логические операции, выполняемые МП серии
К580.
5.Сколько машинных тактов нужно для выполнения команд CALL
иRET?
6.В какой последовательности происходит запись и считывание из стека по командам PUSH и POP?
7.С помощью каких команд можно обозначить область памяти, отведенную под стек?
8.С помощью каких команд сохраняется и извлекается содержимое регистровых пар МП при выполнении подпрограммы?
9.Укажите порядок выполнения команды RET.
27
28
10. Укажите область адресов, занимаемую стеком в программе 2. Какие значения принимает при этом указатель стека?
Лабораторная работа №5
ВЫПОЛНЕНИЕ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ
ЦЕЛЬ РАБОТЫ: изучение способов организации и исследование программ выполнения арифметических операций.
1. КРАТКИЕ СВЕДЕНИЯ ИЗ ТЕОРИИ
В микроЭВМ, построенных на базе МП серии К580, наибольшее распространение получил способ определения чисел с фиксированной запятой, т.к. в этом МП отсутствуют специальные команды для работы с числами с плавающей запятой. Двоичное же восьмиразрядное число можно представить как двоичное число со знаком, имеющее значение от -128 до +127. При этом отрицательные числа представлены в дополнительном коде, а старший разряд числа используется как знаковый.
Число с фиксированной запятой можно представить двоичным числом без знака, имеющим значения от 0 до 255.
Для МП серии К580 можно представить числа без знака и в виде двоично - десятичного числа, при котором каждый байт рассматривается как два полубайта - две тетрады, каждая из которых кодирует десятичную цифру. Такое представление позволяет занести в один байт числа от 0 до 99.
Проведение арифметических операций сложения, вычитания, умножения и деления рассмотрены на примерах соответствующих программ.
Программа сложения массивов однобайтных чисел с получением двухбайтного результата MAIN - программа 1. Слагаемые должны быть расположены в последовательных адресах памяти. Входными параметрами подпрограммы ADDB являются адрес первого слагаемого, записанный в регистровой паре НL, и число слагаемых, записанное в регистре В. Выходным параметром программы MAIN является сумма, старший байт которой записан в регистре С, а младший - в аккумуляторе А. Особенность алгоритма сложения в данной программе состоит в том, что после прибавления каждого элемента массива определяется
28
29
переполнение аккумулятора (признак СY=1), и если это имеет место, то содержимое регистра С увеличивается на 1.
МикроЭВМ может проводить арифметические операции с числами с двойной или большей длиной машинного слова. Так как МП серии К580 имеет восьмиразрядное арифметическо-логическое устройство (АЛУ), то операции с числами должны производиться по байтам, начиная с младших. При этом целесообразно использовать команды ADC для сложения и SBB для вычитания, которые учитывают значение признака переноса (займа) СY.
Программа нахождения разности двух чисел, имеющих одинаковую длину, - программа 2. Входные параметры: регистр С - длина чисел (в байтах), регистровые пары Н - адрес младшего байта вычитаемого, D - адрес младшего байта уменьшаемого. Результат заносится в область памяти, отведенную под вычитаемое. В том случае, если уменьшаемое меньше вычитаемого, по адресу 8000 заносится 1.
Программа 1
Адрес |
Код |
Метка |
Мнемокод |
Комментарий |
|
|
команды |
|
|
|
|
8200 |
21 0084 |
MAIN |
LXI H, 8400 |
Записать в |
регистры HL |
|
|
|
|
адрес первого слагаемого |
|
8203 |
06 05 |
|
MVI B, 05 |
Загрузить в B количество |
|
|
|
|
|
слагаемых |
|
8205 |
CD 0982 |
|
CALL |
Вызов программы сложе- |
|
|
|
|
ADDB |
ния |
|
8208 |
E7 |
|
RST4 |
Прервать |
выполнение |
|
|
|
|
программы |
|
8209 |
AF |
ADD |
XRA A |
Очистить аккумулятор |
|
|
|
B |
|
|
|
820A |
4F |
|
MOV C,A |
Очистить |
счетчик пере- |
|
|
|
|
носов |
|
820B |
86 |
CNT |
ADD M |
Прибавить к содержимо- |
|
|
|
|
|
му аккумулятора число из |
|
|
|
|
|
массива слагаемых |
|
820C |
D2 1082 |
|
JNC TRM |
Если признак C=0, идти к |
|
|
|
|
|
TRM |
|
29
30
Продолжение программы 1
Адрес |
Код |
Метка |
|
Мнемокод |
Комментарий |
||||
|
команды |
|
|
|
|
|
|
|
|
820F |
0C |
|
|
INR C |
Содержимое |
регистра C |
|||
|
|
|
|
|
увеличить на 1 |
|
|||
8210 |
23 |
TRM |
|
INX H |
Указать |
|
на |
следующий |
|
|
|
|
|
|
адрес слагаемого |
|
|||
8211 |
05 |
|
|
DCR B |
Уменьшить на 1 содер- |
||||
|
|
|
|
|
жимое |
счетчика |
слагае- |
||
|
|
|
|
|
мых |
|
|
|
|
8212 |
C2 0B82 |
|
|
JNC CNT |
Если не все слагаемые, |
||||
|
|
|
|
|
идти к CNT |
|
|
||
8215 |
C9 |
|
|
RET |
|
|
|
|
|
|
|
|
Программа 2 |
|
|
|
|
|
|
Адрес |
Код |
Метка |
|
Мнемокод |
Комментарий |
||||
|
команды |
|
|
|
|
|
|
|
|
8200 |
AF |
SBN |
|
XRA |
Очистить |
аккумулятор и |
|||
|
|
|
|
|
признак CY |
|
|
||
8201 |
32 0080 |
|
|
STA 8000 |
Очистить ячейку с адре- |
||||
|
|
|
|
|
сом 8000 |
|
|
|
|
8204 |
1A |
CNT |
|
LDA X, D |
Записать |
в аккумулятор |
|||
|
|
|
|
|
уменьшаемое |
|
|
||
8205 |
9E |
|
|
SBB M |
Вычесть из содержимого |
||||
|
|
|
|
|
аккумулятора |
вычитае- |
|||
|
|
|
|
|
мое |
|
|
|
|
8206 |
77 |
|
|
MOV M,A |
Записать разность на ме- |
||||
|
|
|
|
|
сто вычитаемого |
|
|||
8207 |
23 |
|
|
INX H |
Указать |
|
на |
следующий |
|
|
|
|
|
|
байт вычитаемого |
|
|||
8208 |
13 |
|
|
INX D |
Указать |
|
на |
следующий |
|
|
|
|
|
|
байт уменьшаемого |
||||
8209 |
0D |
|
|
DCR C |
Уменьшить на 1 содер- |
||||
|
|
|
|
|
жимое |
счетчика |
длины |
||
|
|
|
|
|
числа |
|
|
|
|
820A |
C2 0482 |
|
|
JNC C T |
Если число не кончилось, |
||||
|
|
|
|
|
идти к CNT |
|
|
||
|
|
|
|
|
|
|
|
|
30 |