7 Содержание отчёта
Наименование и цели работы.
Условия, проверочные программы и результаты выполнения заданий № 1…4 в виде таблиц.
Ручной расчёт ожидаемого результата.
Краткие пояснения по ходу выполнения и результатам для каждого задания.
Ответы на контрольные вопросы.
8 Контрольные вопросы
Поясните разницу между командами ADD E и ADC E.
Поясните разницу между командами ADI, 50H и ACI, 50H.
Укажите, какой командой выполняется сложение 16-разрядных чисел.
Укажите, за сколько циклов и тактов выполняется команда SBB M и поясните, какие действия выполняет МП в каждом цикле.
Укажите, за сколько циклов и тактов выполняется команда ACI, 0FH и поясните, какие действия выполняет МП в каждом цикле.
9 Требования к знаниям и умениям студентов
В результате выполнения лабораторной работы студенты должны знать:
систему команд МП КР580ВМ80;
арифметические команды;
назначение команд системной программы МОНИТОР УМК.
Должны уметь:
составлять программы, содержащие арифметические команды;
готовить к работе УМК;
вводить и выполнять программы в автоматическом режиме.
10 Методические указания
Теоретическое обоснование
В микропроцессоре КР580ВМ80 предусмотрены следующие команды двоичной арифметики:
сложение 8-разрядных чисел;
сложение 16-разрядных чисел;
вычитание 8-разрядных чисел;
инкремент;
декремент.
Все арифметические операции с 8-разрядными операндами предполагают, что один из операндов размещается в регистре-аккумуляторе, а другой либо в регистре, либо в памяти (при этом адрес ячейки задаётся в регистровой паре HL), либо является непосредственным числом, заданным в самой команде. Вычитание производится всегда из регистра-аккумулятора. Результат арифметической операции пересылается в регистр-аккумулятор. Кроме того, по результату арифметических операций сложения и вычитания устанавливаются биты признаков: С – переноса, Z – нуля, S – знака, P – чётности, AC – вспомогательного переноса.
Команды сложения 16-разрядных чисел, так называемые команды двойного сложения, предусматривают, что один из операндов находится в регистровой паре HL, а второй – либо в DE, либо в BC. Результат записывается в HL. Кроме того, по результату операции устанавливается либо сбрасывается бит переноса – C.
Команды инкремента увеличивают содержимое регистров, ячейки памяти по адресу в HL и регистровых пар на 1. Команда инкремент регистра и памяти изменяет биты признаков: Z, S, P, AC. Инкремент регистровой пары не затрагивает биты признаков.
Команды декремента уменьшают содержимое регистров, ячейки памяти по адресу в HL и регистровых пар на 1. Затрагиваемые биты признаков аналогичны команде инкремент.
Команды сложения 8-разрядных чисел
ADD ri – сложение с содержимым регистра: A, B, C, D, E, H или L;
ADD M – сложение с содержимым ячейки памяти по адресу HL;
ADI <B2> – сложение с непосредственным числом, B2 – второй байт;
ADC ri – сложение с содержимым регистров A, B, C, D, E, H или L плюс бит переноса C;
ADC M – сложение с содержимым ячейки памяти по адресу HL плюс бит переноса C;
ACI <B2> – сложение с непосредственным числом (B2 – второй байт) плюс бит переноса С.
Записать в память, начиная с адреса 0800H, коды программы (таблица 1), реализующей операцию:
A ← (A) + (B) + (M) + 1.
Таблица 1 – Контрольная программа сложения 8-разрядных чисел
Адрес |
Команда |
Операнд |
Машинный код |
Комментарий |
0800 |
ADD |
B |
80 |
; A ← (A) + (B) |
0801 |
LXI |
H, 0900H |
21 00 09 |
; Загр. HL=0900H, адр. M |
0804 |
ADD |
M |
86 |
; A ← (A) + (M) по адр. ; HL |
0805 |
ADI |
01H |
C6 01 |
; A ← (A) + 1 |
Выполнить программу, предварительно задавая исходные значения в соответствии с таблицей 2 и проверить полученные результаты (результат операции в рег. A, биты признаков в рег. F):
СТ0800 0807ВП.
Таблица 2 – Исходные данные для контрольной программы сложения 8-разрядных чисел
Вариант |
1 |
2 |
3 |
4 |
5 |
6 |
(A) – исх. |
00 |
00 |
00 |
F0 |
FF |
55 |
(B) |
00 |
02 |
10 |
0E |
00 |
AA |
(M) |
00 |
03 |
45 |
00 |
00 |
FF |
(A) – рез. |
01 |
06 |
56 |
FF |
00 |
FF |
(F) |
02 |
06 |
06 |
86 |
57 |
86 |
Задание 1:
1. Написать и выполнить программу, реализующую операцию C ← (D) + (E) и заполнить таблицу 3. До выполнения программы вручную определить ожидаемый результат операции.
Таблица 3 – Исходные данные для проверочной программы сложения 8-разрядных чисел и результаты выполнения
Вариант |
1 |
2 |
3 |
4 |
5 |
6 |
(D) |
10 |
FF |
C7 |
19 |
AA |
E5 |
(E) |
80 |
01 |
85 |
49 |
55 |
F0 |
(C) |
|
|
|
|
|
|
(F) |
|
|
|
|
|
|
Проверочную программу сложения записать в таблицу, аналогичную по форме таблице 1. Начальный адрес проверочной программы 0A00H.
Команды вычитания 8-разрядных чисел
SUB ri – вычитание содержимого регистра: A, B, C, D, E, H или L;
SUB M – вычитание содержимого ячейки памяти по адресу HL;
SUI <B2> – вычитание непосредственного числа, B2 – второй байт;
SBB ri – вычитание содержимого регистров A, B, C, D, E, H или L минус бит переноса C;
SBB M – вычитание содержимого ячейки памяти по адресу HL минус бит переноса С;
SBI <B2> – вычитание непосредственного числа (B2 – второй байт) минус бит переноса C.
Записать в память, начиная с адреса 0810H, коды программы (таблица 4), реализующей операцию:
A ← (A) – (B) – (M) – 1.
Таблица 4 – Контрольная программа вычитания 8-разрядных чисел
Адрес |
Команда |
Операнд |
Машинный код |
Комментарий |
0810 |
SUB |
B |
90 |
; A ← (A) – (B) |
0811 |
LXI |
H, 0900H |
21 00 09 |
; Загр. HL=0900H, адр. M |
0814 |
SUB |
M |
96 |
; A ← (A) – (M) по адр. ; HL |
0815 |
SBI |
01H |
DE 01 |
; A ← (A) – 1 |
Выполнить программу, предварительно задавая исходные значения в соответствии с таблицей 5, и проверить полученные результаты:
СТ0810 0817ВП.
Таблица 5 – Исходные данные для контрольной программы вычитания 8-разрядных чисел и результаты выполнения
Вариант |
1 |
2 |
3 |
4 |
5 |
6 |
(A) – исх. |
FF |
00 |
01 |
25 |
00 |
05 |
(B) |
01 |
FF |
01 |
20 |
00 |
06 |
(M) |
01 |
00 |
00 |
04 |
00 |
FF |
(A) – рез. |
FC |
00 |
FF |
00 |
FF |
FF |
(F) |
96 |
56 |
87 |
56 |
87 |
87 |
Задание 2:
1. Написать и выполнить программу, реализующую операцию C ← (D) – (E) – 10H, и заполнить таблицу 6. До выполнения программы вручную определить ожидаемый результат операции.
Таблица 6 – Исходные данные для проверочной программы вычитания 8-разрядных чисел и результаты выполнения
Вариант |
1 |
2 |
3 |
4 |
5 |
6 |
(D) |
1F |
2E |
3B |
3C |
4A |
5D |
(E) |
02 |
0A |
0A |
11 |
20 |
3A |
(C) |
|
|
|
|
|
|
(F) |
|
|
|
|
|
|
Проверочную программу вычитания записать в таблицу, аналогичную по форме таблице 4. Начальный адрес проверочной программы 0A10H.
Команды двойного сложения
DAD H – сложение HL ← (HL) + (HL);
DAD B – сложение HL ← (HL) + (BC);
DAD D – сложение HL ← (HL) + (DE).
Записать в память, начиная с адреса 0820H, коды программы (таблица 7), реализующей операцию:
HL ← (BC) + (DE).
Таблица 7 – Контрольная программа сложения 16-разрядных чисел
Адрес |
Команда |
Операнд |
Машинный код |
Комментарий |
0820 |
MOV |
H, B |
60 |
; Пересылка H ← (B) |
0821 |
MOV |
L, C |
69 |
; Пересылка L ← (C) |
0822 |
DAD |
D |
19 |
; HL ← (HL) + (DE) |
Выполнить программу, предварительно задавая исходные значения в соответствии с таблицей 8, и проверить результаты (результат операции в паре рег. HL, биты условий в рег. F):
СТ0820 0823ВП.
Таблица 8 – Исходные данные для контрольной программы суммирования 16-разрядных чисел
Вариант |
1 |
2 |
3 |
4 |
5 |
6 |
(BC) исх. |
0000 |
7FFF |
8000 |
55AA |
ECB9 |
FFFF |
(DE) исх. |
7FFF |
8000 |
8000 |
AA55 |
1347 |
8000 |
(HL) рез. |
7FFF |
FFFF |
0000 |
FFFF |
FFFF |
7FFF |
(F) |
46 |
46 |
47 |
46 |
47 |
47 |
Команды инкремента
INR ri – увеличение на 1 содержимого регистра: A, B, C, D, E, H или L;
INR M – увеличение на 1 содержимого ячейки памяти, адрес М в HL;
INX ri – увеличение на 1 содержимого пары регистров: BC, DE, HL или SP (указателя стека). В команде указывается идентификатор старшего регистра пары, например, INX B.
Записать в память, начиная с адреса 0830H, код команды, которая указана в таблице 9.
Таблица 9 – Контрольная команда инкремента содержимого регистра E
Адрес |
Команда |
Операнд |
Машинный код |
Комментарий |
0830 |
INR |
E |
1C |
; E ← (E) + 1 |
Выполнить данную команду для следующих исходных значений регистра E (таблица 10) и проверить полученные результаты:
СТ0830 0831ВП.
Таблица 10 – Исходные данные для контрольной команды инкремента содержимого регистра E
Вариант |
1 |
2 |
3 |
4 |
(E) – исх. |
00 |
0F |
F0 |
FF |
(E) – рез. |
01 |
10 |
F1 |
00 |
(F) |
02 |
12 |
82 |
56 |
Записать в память, начиная с адреса 0840H, коды команд, которые указаны в таблице 11.
Таблица 11 – Контрольная программа инкремента содержимого ячейки памяти
Адрес |
Команда |
Операнд |
Машинный код |
Комментарий |
0840 |
LXI |
H, 0900H |
21 00 09 |
; Загр. HL=0900H, адрес M |
0843 |
INR |
M |
34 |
; M = (M) + 1 |
Выполнить данную последовательность команд для следующих исходных значений содержимого ячейки памяти (таблица 12) и проверить полученные результаты:
СТ0840 0844ВП.
Таблица 12 – Исходные данные для контрольной программы инкремента содержимого ячейки памяти
Вариант |
1 |
2 |
3 |
4 |
(M) – по адр. 0900H, исх. данные |
00 |
0F |
F0 |
FF |
(M) – по адр. 0900H, результаты |
01 |
10 |
F1 |
00 |
(F) |
02 |
12 |
82 |
56 |
Записать в память по адресу 0850H код команды, которая указана в таблице 13.
Таблица 13 – Контрольная команда инкремента пары регистров
Адрес |
Команда |
Операнд |
Машинный код |
Комментарий |
0850 |
INX |
D |
13 |
; DE ← (DE) + 1 |
Выполнить команду для следующих исходных значений пары регистров DE (таблица 14) и проверить полученные результаты:
СТ0850 0851ВП.
Таблица 14 – Исходные данные для контрольной команды инкремента пары регистров
Вариант |
1 |
2 |
3 |
4 |
(DE) – исх. |
0000 |
0F0F |
00FF |
FFFF |
(DE) – рез. |
0001 |
0F10 |
0100 |
0000 |
(F) |
02 |
12 |
82 |
56 |
Так как команда инкремент пары регистров не затрагивает биты признаков, значение регистра признаков остаётся равным значению регистра признаков в последнем задании (10.5.4).
Задание 3:
1. Написать с адреса 0A20H и выполнить программу заполнения массива памяти (0900H…0904H) данными соответственно (00…04), используя команды инкремента пары регистров и регистра, а также загрузки регистра и пересылки. Программу записать в таблицу, аналогичную по форме таблице 11. Проверить полученные результаты.
Команды декремента
DCR ri – уменьшение на 1 содержимого регистра: A, B, C, D, E, H или L;
DCR M – уменьшение на 1 содержимого ячейки памяти, адрес М в HL;
DCX ri – уменьшение на 1 содержимого пары регистров: BC, DE, HL или SP (указателя стека). В команде указывается идентификатор старшего регистра пары, например, DCX B.
Записать в память, начиная с адреса 0860H, код команды, которая указана в таблице 15.
Таблица 15 – Контрольная команда декремента содержимого регистра C
Адрес |
Команда |
Операнд |
Машинный код |
Комментарий |
0860 |
DCR |
C |
0D |
; C ← (C) – 1 |
Выполнить данную команду для следующих исходных значений регистра C (таблица 16) и проверить полученные результаты:
СТ0860 0861ВП.
Таблица 16 – Исходные данные для контрольной команды декремента содержимого регистра C
Вариант |
1 |
2 |
3 |
4 |
(C) – исх. |
00 |
01 |
10 |
11 |
(C) – рез. |
FF |
00 |
0F |
10 |
(F) |
86 |
56 |
06 |
12 |
Записать в память, начиная с адреса 0870H, коды команд, которые указаны в таблице 17.
Таблица 17 – Контрольная программа декремента содержимого ячейки памяти
Адрес |
Команда |
Операнд |
Машинный код |
Комментарий |
0870 |
LXI |
H, 0910H |
21 10 09 |
; Загр. HL=0910H, адрес M |
0873 |
DCR |
M |
35 |
; M = (M) – 1 |
Выполнить данную последовательность команд для следующих предварительно записанных исходных значений содержимого ячейки памяти (таблица 18) и проверить полученные результаты:
СТ0870 0874ВП.
Таблица 18 – Исходные данные для контрольной программы декремента содержимого ячейки памяти
Вариант |
1 |
2 |
3 |
4 |
(M) – по адр. 0910H, исх. данные |
00 |
01 |
10 |
11 |
(M) – по адр. 0910H, результаты |
FF |
00 |
0F |
10 |
(F) |
86 |
56 |
06 |
12 |
Записать в память по адресу 0880H код команды, которая указана в таблице 19.
Таблица 19 – Контрольная команда декремента содержимого пары регистров HL
Адрес |
Команда |
Операнд |
Машинный код |
Комментарий |
0880 |
DCX |
H |
2B |
; HL ← (HL) – 1 |
Выполнить команду для следующих исходных значений содержимого регистров HL (таблица 20) и проверить полученные результаты:
СТ0880 0881ВП.
Таблица 20 – Исходные данные для контрольной команды декремента содержимого пары регистров HL
Вариант |
1 |
2 |
3 |
4 |
(HL) – исх. |
0000 |
1000 |
FFFF |
0001 |
(HL) – рез. |
FFFF |
0FFF |
FFFE |
0000 |
(F) |
86 |
56 |
06 |
12 |
Команда декремент пары регистров не затрагивает биты признаков.
Задание 4:
1. Написать с адреса 0A40H и выполнить программу заполнения массива памяти (090FH…090AH) данными соответственно (0F…0A), используя команды декремента пары регистров и регистра, а также загрузки регистра и пересылки. Программу записать в таблицу, аналогичную по форме таблице 19. Проверить полученные результаты.
План 2003/04, поз. 124
Богородов Владимир Ильич