МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
Національний університет Львівська політехніка
Кафедра САПР
Звіт
До лабораторної роботи №7
З курсу “Архітектура комп’ютерів”
На тему:
«Алгоритми виконання арифметичних операцій над багаторозрядними числами в однокристальному МП 8080 (КР580ВМ80А)».
Тема роботи:
Алгоритми виконання арифметичних операцій над багаторозрядними числами в однокристальному МП 8080 (КР580ВМ80А).
Мета роботи:
Вивчити алгоритми виконання арифметичних операцій над багаторозрядними числами в однокристальному МП Intel 8080 (КР580ВМ80А). Набути практичних навиків складання та налагоджування програм виконання операцій додавання\віднімання та множення\ділення багаторозрядних чисел з використанням цих алгоритмів.
Теоретичні відомості
___________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
Лабораторне завдання:
Виконати арифметичні операції над багаторозрядними числами: (115*269+7114/55)/31.
Хід роботи
Для реалізації поставленого завдання мною був обраний алгоритм ділення з відновленням залишку, алгоритм безпосереднього множення і на їх основі розроблена наступна програма:
LAB7A.ASM
ORG 100H
LXI H,269
MVI A,115
MVI B,8
XCHG
LOOP: RRC
JNC ZSUV
DAD D
ZSUV:
PUSH H
MOV H,D
MOV L,E
DAD D
XCHG
POP H
DCR B
JNZ LOOP
MOV A,H
STA 200H
MOV A,L
STA 201H
HLT
LAB7B.ASM
org 100h
LXI H,7114
LXI D,55
CALL DILENNIA
MOV A,L
STA 202H
LXI H,0D778H
SHLD 200H
LXI H,201H
MOV C,M
LDA 202H
ADD C
STA 204H
LDA 200H
ACI 0
STA 203H
LXI H,203H
MOV D,M
LXI H,204H
MOV E,M
XCHG
LXI D,31
CALL DILENNIA
JMP KINEC
DILENNIA:
MOV A,E
ORA A
RZ
MOV C,L
MOV B,H
LXI H,0
MVI A,16
ORA A
LOOP:
STA 300H
MOV A,C
RAL
MOV C,A
MOV A,B
RAL
MOV B,A
MOV A,L
RAL
MOV L,A
MOV A,H
RAL
MOV H,A
PUSH H
MOV A,L
SUB E
MOV L,A
MOV A, H
SBB D
MOV H,A
CMC
JC NOREC
XTHL
NOREC:
INX SP
INX SP
LDA 300H
DCR A
JNZ LOOP
XCHG
MOV A,C
RAL
MOV L,A
MOV A,B
RAL
MOV H,A
XRA A
INR A
RET
KINEC:
MOV A,L
STA 206H
MOV A,H
STA 205H
HLT
Після набору тексту програми в текстовому редакторі її було збережено у файл LAB7A.ASM, та у файл LAB7B.ASM. Після цього скомпільована та злінкована у файл LAB7A.com, та LAB7B.com відповідно.
Пізніше було завантажено скомпільовану програму LAB7A.com у відлагоджувач, яка реалізує операцію множення, та зберігає результат у комірках памяті 200Н, 201Н.
Після того як програма виконалась мною було перевірено відповідність карти пам’яті та інформації яка знаходиться в комірках за потрібною адресою.
Пізніше було завантажено скомпільовану програму LAB7В.com у відлагоджувач, дана частина реалізує операцію ділення та додавання, та зберігає проміжні і загальні результати у комірках памяті 202Н, 203Н, 204Н, 205Н, 206Н, 207Н.
Карта пам’яті
Адреса
Дані
Коментар
H
D
B
H
D
B
200
512
1000000000
78
30935
1111000
Результат множення
201
513
1000000001
D7
11010111
202
514
1000000010
81
129
10000001
Результат ділення
203
515
1000000011
79
31064
1111001
Результат додавання
204
516
1000000100
58
1011000
205
517
1000000101
03
1002
11
Кінцевий результат
206
518
1000000110
ЕА
11101010
Prn файли
LAB7A.PRN
0100 ORG 100H
0100 210D01 LXI H,269
0103 3E73 MVI A,115
0105 0608 MVI B,8
0107 EB XCHG ; Реалізація алгоритму множення
0108 0F LOOP: RRC
0109 D20D01 JNC ZSUV
010C 19 DAD D
ZSUV: ; Підпрограма зсуву
010D E5 PUSH H
010E 62 MOV H,D
010F 6B MOV L,E
0110 19 DAD D
0111 EB XCHG
0112 E1 POP H
0113 05 DCR B
0114 C20801 JNZ LOOP
0117 7C MOV A,H ; Збереження результату
0118 320002 STA 200H
011B 7D MOV A,L
011C 320102 STA 201H
011F 76 HLT
LAB7B.PRN
0100 ORG 100H
0100 21CA1B LXI H,7114
0103 113700 LXI D,55
0106 CD3801 CALL DILENNIA ;Виклик підпрограми ділення
0109 7D MOV A,L ; Збереження результату в память
010A 320202 STA 202H
010D 2178D7 LXI H,0D778H ; Запис результату виконання попередньої програми в память
0110 220002 SHLD 200H ; Реалізація додавання
0113 210102 LXI H,201H
0116 4E MOV C,M
0117 3A0202 LDA 202H
011A 81 ADD C
011B 320402 STA 204H ; Збереження молодшого розряду результату додавання
011E 3A0002 LDA 200H
0121 CE00 ACI 0
0123 320302 STA 203H ; Збереження старшого розряду результату додавання
0126 210302 LXI H,203H
0129 56 MOV D,M
012A 210402 LXI H,204H
012D 5E MOV E,M
012E EB XCHG
012F 111F00 LXI D,31
0132 CD3801 CALL DILENNIA ; Виклик підпрограми ділення
0135 C37101 JMP KINEC ; Безумовний перехід на мітку кінець
DILENNIA: ; Реалізація підпрограми ділення
0138 7B MOV A,E
0139 B7 ORA A
013A C8 RZ
013B 4D MOV C,L
013C 44 MOV B,H
013D 210000 LXI H,0
0140 3E10 MVI A,16
0142 B7 ORA A
LOOP:
0143 320003 STA 300H
0146 79 MOV A,C
0147 17 RAL
0148 4F MOV C,A
0149 78 MOV A,B
014A 17 RAL
014B 47 MOV B,A
014C 7D MOV A,L
014D 17 RAL
014E 6F MOV L,A
014F 7C MOV A,H
0150 17 RAL
0151 67 MOV H,A
0152 E5 PUSH H
0153 7D MOV A,L
0154 93 SUB E
0155 6F MOV L,A
0156 7C MOV A, H
0157 9A SBB D
0158 67 MOV H,A
0159 3F CMC
015A DA5E01 JC NOREC
015D E3 XTHL
NOREC:
015E 33 INX SP
015F 33 INX SP
0160 3A0003 LDA 300H
0163 3D DCR A
0164 C24301 JNZ LOOP
0167 EB XCHG
0168 79 MOV A,C
0169 17 RAL
016A 6F MOV L,A
016B 78 MOV A,B
016C 17 RAL
016D 67 MOV H,A
016E AF XRA A
016F 3C INR A
0170 C9 RET
KINEC:
0171 7D MOV A,L ; Збереження загального результату в память
0172 320602 STA 206H
0175 7C MOV A,H
0176 320502 STA 205H
Висновок:
Під час виконання лабораторної роботи мною було засвоєно матеріал по темі: “Алгоритми виконання арифметичних операцій над багаторозрядними числами в однокристальному МП 8080 (КР580ВМ80А)”. Я отримав практичні навички складання і налагодження програм виконання операцій додавання\віднімання та множення\ділення багаторозрядних чисел з використанням цих алгоритмів.