МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
Національний університет Львівська політехніка
Кафедра САПР         
Звіт
До лабораторної роботи №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А)”. Я отримав практичні навички складання і налагодження програм виконання операцій додавання\віднімання та множення\ділення багаторозрядних чисел з використанням цих алгоритмів.