ОПЕРАЦІЇ МНОЖЕННЯ ТА ДІЛЕННЯ ЦІЛИХ БЕЗЗНАКОВИХ І ЦІЛИХ ЗНАКОВИХ ЧИСЕЛ В ОДНОКРИСТАЛЬНОМУ МП КР580

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Кафедра САПР

Інформація про роботу

Рік:
2008
Тип роботи:
Лабораторна робота
Предмет:
Інформаційні технології

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти та науки України Національний університет «Львівська політехніка» Інститут комп’ютерних наук та інформаційних технологій Кафедра САПР ЗВІТ Лабораторна робота №5 з курсу «Архітектура комп’ютерів» Тема:« ОПЕРАЦІЇ МНОЖЕННЯ ТА ДІЛЕННЯ ЦІЛИХ БЕЗЗНАКОВИХ І ЦІЛИХ ЗНАКОВИХ ЧИСЕЛ В ОДНОКРИСТАЛЬНОМУ МП КР580» 2008 Тема: ОПЕРАЦІЇ МНОЖЕННЯ ТА ДІЛЕННЯ ЦІЛИХ БЕЗЗНАКОВИХ І ЦІЛИХ ЗНАКОВИХ ЧИСЕЛ В ОДНОКРИСТАЛЬНОМУ МП КР580. Мета: Вивчити алгоритми виконання операцій множення та ділення цілих беззнакових і цілих знакових чисел для однокристального мікропроцесора Intel 8080 (КР580ВМ80А), набути практичних навиків складання та налагоджування програм з використанням цих алгоритмів. Постановка завдання Виконати операцію ділення над цілими без знаковими числами безпосередньо 23 : 3. Результат записати в SP. Короткі теоретичні відомості Набір команд арифметичних операцій чисел для однокристального мікропроцесора Intel 8080 (КР580ВМ80А) не має команди множення або ділення над двома операндами. Тому для реалізації прикладних задач, де необхідно виконати дані арифметичні дії, застосовуються алгоритми що використовують закладений набір команд у МП КР580ВМ80А. Арифметична операція ділення Операція ділення обернена по відношенню до операції множення і реалізується подібними циклічними діями. Позначимо через X-ділене, Y-дільник і Z=X/Y - частка, вважаючи їх цілими беззнаковивми числами. При діленні цілих чисел прийнято як додатковий результат формувати ще й залишок R. Для операцій ділення є характерним випадок ділення на нуль (Y=0). Найпростіший безпосередній спосіб ділення цілих двійкових чисел без знака полягає у відніманні дільника від діленого з накопиченням доки отриманий залишок буде менший дільника (Y>R). Наприклад, 8-бітне ділене знаходиться в регістрі В, 8-бітний дільник у регістрі D регістр H і C очищені, програма формує 8-бітну частку у регістрі C і залишок в регістрі А: DIV_1: MOV A, D CPI 0h JNZ DIV MVI H, EEh JMP END DIV: MOV A,B CYCLE: SUB D JC L1 INC C JMP CYCLE L1: ADD D END: HLT Основний недолік способу безпосереднього діленяя, який робить його непрактичним, полягає в недостатньо високій швидкодії програми. Блок-схема  Покрокове виконання алгоритму 1. С>0? Якщо ні, то перехід на п. №7 2. Віднімаємо дільник 3. Залишок додатній? Якщо ні то перехід на п. №6 4. h=h+1 5. Перейти до п. № 2 6. Залишок у акумулятор a=a+c, 7. Вихід Карта пам’яті Адреса Дані Коментар  HEX BIN HEX DEC BIN   0200h 00000010 00000000 17 23 00010111 Початкове дане 23  0201h 00000010 00000001 14 20 00010100 23-3=20  0202h 00000010 00000010 11 17 00010001 20-3=17  0203h 00000010 00000011 0E 14 00001110 17-3=14  0204h 00000010 00000100 0B 11 00001011 14-3=11  0205h 00000010 00000101 08 8 00001000 11-3=8  0206h 00000010 00000110 05 5 00000101 8-3=5  0207h 00000010 00000111 02 2 00000010 5-3=2  0300h 00000011 00000000 02 2 00000010 Залишок результату  0301h 00000011 00000001 07 7 00000111 Ціла частина результату   Текст програми Файл lab5.asm org 100h mvi b,23 mvi c,3 lxi h,0h mov a,c cpi 0h jnz div jmp recon div: mov a,b lxi d,200h cycle: stax d inr e sub c jc l1 inr h jmp cycle l1: add c mov l,a shld 300h sphl recon: nop hlt Файл lab5.prn 0100 ORG 100H 0100 0617 MVI B,23; B<-23 0102 0E03 MVI C,3; C<-3 0104 210000 LXI H,0H; h=0,l=0 0107 79 MOV A,C; A<-C 0108 FE00 CPI 0H; перевірка вмістимого акумулятора на 0 010A C21001 JNZ DIV; перехід на DIV, якщо не 0 010D C32401 JMP RECON; перехід на RECON, якщо 0 0110 78 DIV: MOV A,B; A<-B 0111 110002 LXI D,200H; вказуємо на початок розміщення результатів в пам'яті 0114 12 CYCLE: STAX D; вмістиме акумулятора записуємо в пам'ять 0115 1C INR E; збільшуємо адресу комірки пам'яті 0116 91 SUB C; A<-A-C 0117 DA1E01 JC L1; перехід на L1, якщо CY=1 011A 24 INR H; підрахунок повтору циклу 011B C31401 JMP CYCLE; безумовний перехід на початок циклу 011E 81 L1: ADD C; A<-A+C 011F 6F MOV L,A; L<-A 0120 220003 SHLD 300H; результат ділення записуємо в пам'ять 0123 F9 SPHL; SP<-((H)(L)) 0124 00 RECON: NOP Протокол роботи програми C:[cpm] m lab5.asm CP/M MACRO ASSEM 2.0 0126 000H USE FACTOR END OF ASSEMBLY C:[cpm] l lab5.asm FIRST ADDRESS 0100 LAST ADDRESS 0125 BYTES READ 0026 RECORDS WRITTEN 01 C:[cpm] d lab5.com DDT VERS 1.0 NEXT PC 0180 0100 -t23 C0Z0M0E0I0 A=00 B=0000 D=0000 H=0000 S=0100 P=0100 MVI B,17 C0Z0M0E0I0 A=00 B=1700 D=0000 H=0000 S=0100 P=0102 MVI C,03 C0Z0M0E0I0 A=00 B=1703 D=0000 H=0000 S=0100 P=0104 LXI H,0000 C0Z0M0E0I0 A=00 B=1703 D=0000 H=0000 S=0100 P=0107 MOV A,C C0Z0M0E0I0 A=03 B=1703 D=0000 H=0000 S=0100 P=0108 CPI 00 C0Z0M0E1I0 A=03 B=1703 D=0000 H=0000 S=0100 P=010A JNZ 0110 C0Z0M0E1I0 A=03 B=1703 D=0000 H=0000 S=0100 P=0110 MOV A,B C0Z0M0E1I0 A=17 B=1703 D=0000 H=0000 S=0100 P=0111 LXI D,0200 C0Z0M0E1I0 A=17 B=1703 D=0200 H=0000 S=0100 P=0114 STAX D C0Z0M0E1I0 A=17 B=1703 D=0200 H=0000 S=0100 P=0115 INR E C0Z0M0E0I0 A=17 B=1703 D=0201 H=0000 S=0100 P=0116 SUB C C0Z0M0E1I0 A=14 B=1703 D=0201 H=0000 S=0100 P=0117 JC 011E C0Z0M0E1I0 A=14 B=1703 D=0201 H=0000 S=0100 P=011A INR H C0Z0M0E0I0 A=14 B=1703 D=0201 H=0100 S=0100 P=011B JMP 0114 C0Z0M0E0I0 A=14 B=1703 D=0201 H=0100 S=0100 P=0114 STAX D C0Z0M0E0I0 A=14 B=1703 D=0201 H=0100 S=0100 P=0115 INR E C0Z0M0E0I0 A=14 B=1703 D=0202 H=0100 S=0100 P=0116 SUB C C0Z0M0E1I0 A=11 B=1703 D=0202 H=0100 S=0100 P=0117 JC 011E C0Z0M0E1I0 A=11 B=1703 D=0202 H=0100 S=0100 P=011A INR H C0Z0M0E0I0 A=11 B=1703 D=0202 H=0200 S=0100 P=011B JMP 0114 C0Z0M0E0I0 A=11 B=1703 D=0202 H=0200 S=0100 P=0114 STAX D C0Z0M0E0I0 A=11 B=1703 D=0202 H=0200 S=0100 P=0115 INR E C0Z0M0E1I0 A=11 B=1703 D=0203 H=0200 S=0100 P=0116 SUB C C0Z0M0E0I1 A=0E B=1703 D=0203 H=0200 S=0100 P=0117 JC 011E C0Z0M0E0I1 A=0E B=1703 D=0203 H=0200 S=0100 P=011A INR H C0Z0M0E1I0 A=0E B=1703 D=0203 H=0300 S=0100 P=011B JMP 0114 C0Z0M0E1I0 A=0E B=1703 D=0203 H=0300 S=0100 P=0114 STAX D C0Z0M0E1I0 A=0E B=1703 D=0203 H=0300 S=0100 P=0115 INR E C0Z0M0E0I0 A=0E B=1703 D=0204 H=0300 S=0100 P=0116 SUB C C0Z0M0E0I0 A=0B B=1703 D=0204 H=0300 S=0100 P=0117 JC 011E C0Z0M0E0I0 A=0B B=1703 D=0204 H=0300 S=0100 P=011A INR H C0Z0M0E0I0 A=0B B=1703 D=0204 H=0400 S=0100 P=011B JMP 0114 C0Z0M0E0I0 A=0B B=1703 D=0204 H=0400 S=0100 P=0114 STAX D C0Z0M0E0I0 A=0B B=1703 D=0204 H=0400 S=0100 P=0115 INR E C0Z0M0E1I0 A=0B B=1703 D=0205 H=0400 S=0100 P=0116 SUB C*0117 -ta C0Z0M0E0I0 A=08 B=1703 D=0205 H=0400 S=0100 P=0117 JC 011E C0Z0M0E0I0 A=08 B=1703 D=0205 H=0400 S=0100 P=011A INR H C0Z0M0E1I0 A=08 B=1703 D=0205 H=0500 S=0100 P=011B JMP 0114 C0Z0M0E1I0 A=08 B=1703 D=0205 H=0500 S=0100 P=0114 STAX D C0Z0M0E1I0 A=08 B=1703 D=0205 H=0500 S=0100 P=0115 INR E C0Z0M0E1I0 A=08 B=1703 D=0206 H=0500 S=0100 P=0116 SUB C C0Z0M0E1I0 A=05 B=1703 D=0206 H=0500 S=0100 P=0117 JC 011E C0Z0M0E1I0 A=05 B=1703 D=0206 H=0500 S=0100 P=011A INR H C0Z0M0E1I0 A=05 B=1703 D=0206 H=0600 S=0100 P=011B JMP 0114 C0Z0M0E1I0 A=05 B=1703 D=0206 H=0600 S=0100 P=0114 STAX D*0115 -ta C0Z0M0E1I0 A=05 B=1703 D=0206 H=0600 S=0100 P=0115 INR E C0Z0M0E0I0 A=05 B=1703 D=0207 H=0600 S=0100 P=0116 SUB C C0Z0M0E0I0 A=02 B=1703 D=0207 H=0600 S=0100 P=0117 JC 011E C0Z0M0E0I0 A=02 B=1703 D=0207 H=0600 S=0100 P=011A INR H C0Z0M0E0I0 A=02 B=1703 D=0207 H=0700 S=0100 P=011B JMP 0114 C0Z0M0E0I0 A=02 B=1703 D=0207 H=0700 S=0100 P=0114 STAX D C0Z0M0E0I0 A=02 B=1703 D=0207 H=0700 S=0100 P=0115 INR E C0Z0M0E0I0 A=02 B=1703 D=0208 H=0700 S=0100 P=0116 SUB C C1Z0M1E1I1 A=FF B=1703 D=0208 H=0700 S=0100 P=0117 JC 011E C1Z0M1E1I1 A=FF B=1703 D=0208 H=0700 S=0100 P=011E ADD C*011F -t3 C1Z0M0E0I1 A=02 B=1703 D=0208 H=0700 S=0100 P=011F MOV L,A C1Z0M0E0I1 A=02 B=1703 D=0208 H=0702 S=0100 P=0120 SHLD 0300 C1Z0M0E0I1 A=02 B=1703 D=0208 H=0702 S=0100 P=0123 SPHL *0124 -t C1Z0M0E0I1 A=02 B=1703 D=0208 H=0702 S=0702 P=0124 NOP *0125 -d200,207 0200 17 14 11 0E 0B 08 05 02 ........ -d300,301 0300 02 07 .. -t C1Z0M0E0I1 A=02 B=1703 D=0208 H=0702 S=0702 P=0125 HLT *Execution halted Висновок: На цій лабораторній роботі я вивчив алгоритми виконання операцій множення та ділення цілих беззнакових і цілих знакових чисел для однокристального мікропроцесора Intel 8080 (КР580ВМ80А), набути практичних навиків складання та налагоджування програми з використанням алгоритму безпосереднього ділення без знакових цілих чисел.
Антиботан аватар за замовчуванням

28.01.2013 14:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!