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

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

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

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

Рік:
2007
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Архітектура комп'ютерів

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

Міністерство освіти і науки України Національний університет "Львівська політехніка" Кафедра САПР  Звіт про виконання лабораторної роботи № 5 на тему: " ОПЕРАЦІЇ МНОЖЕННЯ ТА ДІЛЕННЯ ЦІЛИХ БЕЗЗНАКОВИХ ТА ЗНАКОВИХ ЧИСЕЛ ОДНОКРИСТАЛЬНОГО МП 8080 (КР580ВМ80А)" з курсу: "Архітектура комп’ютерів" 1. МЕТА РОБОТИ Вивчити алгоритми виконання операцій множення та ділення цілих беззнакових і цілих знакових чисел для однокристального мікропроцесора Intel 8080 (КР580ВМ80А), набути практичних навиків складання та налагоджування програм з використанням цих алгоритмів. 2. КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ Набір команд арифметичних операцій чисел для однокристального мікропроцесора Intel 8080 (КР580ВМ80А) не має команди множення або ділення над двома операндами. Тому для реалізації прикладних задач, де необхідно виконати дані арифметичні дії, застосовуються алгоритми що використовують закладений набір команд у МП КР580ВМ80А. 2.1 Арифметична операція множення Найпростіший алгоритм множення цілих двійкових чисел без знака полягає у накопиченні множеного, яке виконується m раз, де m - значення множника. Якщо, наприклад, 8-бітний множник знаходиться в акумуляторі, 8-бітне множене - в регістрі С, а регістри B,Н і L-очищені, тоді подальша програма формує 16-бітний добуток в регістровій парі Н L : MULT_1: DCR A ; Декремент множника JZ EXIT ; Вихід на кінець програми DAD B ; Накопичення множеного JMP MULT_1 ; Повторювати до завершення EXIT: HLT ; Кінець роботи програми. Основний недолік безпосереднього накопичення множника або множеного, що робить його непрактичним, полягагє в недостатньо високій швидкодії виконання операції множення. Більш поширений спосіб грунтується на аналізі розрядів множника представленого у двійковій формі запису з подальшим накопиченням множеного і зсувам проміжних результатів суми або множника. Даний алгоритм ефективніший в порівнянні з безпосереднім накопиченням завдяки можливому зменшенні кількості додавань. Наприклад, а) безпосереднє множення цілих знакових чисел (+3)*(+5), б) множення цілих знакових чисел (-3)*(+5) без накопичення нульових часткових добутків: а) 0011 (+3) б) 1101 (-3) * 0101 *(+5) * 0101 *(+5) 0011 1101 0000 1101 0011 10 0 0 0 1 0000 (-15 в доповнюючому коді) 0001111 Алгоритм множення без накопичення нульових часткових добутків реалізується циклічним процесом, на кожному кроці якого: - аналізується черговий біт множника; - в залежності від його значення відбувається додавання множеного до попередньої суми (біт=1) або не відбувається (біт=0) відбувається додавання множеного до попередньої суми часткових добутків. - відбувається зміна взаємного положення множеного і суми. Добуток n - бітних співмножників має довжину не більше 2n біт. Існують різноманітні варіанти реалізації даного способу, які визначаються тим, починаючи з яких цифр (розрядів) старших чи молодших аналізується множник, і що зсувається - множене чи сума часткових добутків. Наприклад, а) множення (+5)*(+3) без додавання часткових добутків, починаючи з старших розрядів множника, б) множення (-5)*(+3) без додавання часткових добутків, використовуючи зсув суми часткових добутків починаючи з молодших розрядів множника: а) 0101 (+5) б) (-5)*(+3) =(1011)*(0011) * 0011 (+3) 0101 00000000 ; початкова сума 0101 +1011 ; (1) 0001111 10110000 ( ; зсув суми добутків 11011000 + 1011 ; (1) 110001000 ( ; зсув суми добутків 11000100 ( ; зсув (0) 11100010 ( ; зсув (0) Результат операції множення: (91) 11110001 Використання набору арифметико-логічних команд МП КР580ВМ80А ефективно для реалізації алгоритму множення, в якому множене або сума часткових добутків зсуваються вліво. Зсув вправо і 8-розрядне додавання виконуються тільки в акумуляторі А, а використання команди DAD RP виконує 16-розрядне додавання і її форма DAD H еквівалентна зсуву 16-бітного вмісту реістрової пари HL вліво на один біт з передачею старшого біта в прапорець перенесення. Наведені алгоритми виконують операцію множення для цілих беззнакових чисел. Коли співмножники представлені в доповнюючому коді, тобто маєм виконати добуток над знаковими цілими числами, тоді формально виконання операції множення полягає в реалізації такого правила: - за знаками співмножників утворити і тимчасово зберегти знак добутку; - утворити абсолютні значення співмножників і перемножити їх ; - з врахуванням знака добутку представити результат у доповнюючому коді. Однак, на практиці застосовують спеціальні алгоритми множення знакових чисел. Так, спосіб знакового множення вимагає, щоб множник завжди був додатній. Тоді, в залежності від набору знаків множеного і множника: (+)*(+)=(+) ; множник додатній (-)*(+)=(-) ; множник додатній (+)*(-)=(-) ;множник від'ємний (-)*(-)=(+) ; множник від'ємний виконуєм перетворення множеного і множника у випадках в), г) у доповнюючий код для одержання додатнього множника. Виконання алгоритму знакового множення розглянемо на конкретному прикладі (-13)*(+7): 10011 * 00111 ; починаєм з молодших розрядів 0000000000 ; початкова сума +10011 1001100000 ( ; зсув суми добутків після кожного додавання 1100110000 +10011 10110010000 ( ; зсув суми добутків після кожного додавання 1011001000 +10011 10100101000 ( ; зсув суми добутків після кожного додавання 1010010100 ( ; зсув без додавання нульовий біт множника 1101001010 ( ; зсув без додавання нульовий біт множника 1110100101 ; добуток в доповнюючому коді рівнний 91. Найбільш поширеним і ефективним при реалізації множення цілих знакових чисел є алгоритм Бута (Booth's Algorithm). В ньому не враховується значення знаків множеного і множника. В основу визначення добутку покладено правила аналізу переходів від одного розряду множника до наступного, при цьому якщо біти змінюються: - з 0 на 1 виконуєм віднімання множеного від попередньої суми (додаєм, перетворивши множене в доповнюючий код); - з 1 на 0 виконуєм додавання множеного (в даному коді) до попередньої суми. - з 0 на 0 виконуєм зсув вправо з врахуванням вмісту старшого розряду; - з 1 на 1 виконуєм зсув вправо з врахуванням вмісту старшого розряду. Наприклад, 11101 (-3) 1101 (-3) * 00101 * (+5) *1011 * (-5) (-15) (+15) 0000000000 0 ( 0(1(0(1( 0 00000000 1(0(1(1( 0 +00011 (0,1) +0011 (0,1) 0001100000 ( ; зсув суми 00110000 ( ; зсув суми 0000110000 00011000 ( (1,1) +11101 (1,0) 00001100 1111010000 ( ; зсув суми +1101 (1,0) 1111101000 11011100 ( ; зсув суми +00011 (0,1) 11101110 0001001000 ( ; зсув суми +0011 (0,1) 0000100100 100011110 ( ; зсув суми +11101 (1,0) 00001111 ; результат 1111000100 ( ; зсув суми 1111100010 ( ; зсув суми 1111110001 ; результат (-15) Після кожного додавання/віднімання проводим зсув часткової суми на один розряд вправо з врахуванням її значення старшого розряду. Тобто, якщо в старшому розряді біт рівний 0 або 1, то при зсуві вправо в старший розряд записується відповідно аналогічний біт. 2.2 Арифметична операція ділення Операція ділення обернена по відношенню до операції множення і реалізується подібними циклічними діями. Позначимо через 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 Основний недолік способу безпосереднього діленяя, який робить його непрактичним, полягає в недостатньо високій швидкодії програми. Простіший варіант виконується за правилом віднімання -зсув. Оскільки частку можна отримати тільки починаючи зі старших розрядів, то можливі випадки використання - зі зсувом залишка вліво і зі зсувом дільника вправою. Другий випадок на практиці не використовується через необхідність мати регістри частки і дільника подвійної довжини. При діленні цілих чисел отримують частку і залишок також у вигляді цілих чисел, причому знак залишку співпадає зі знаком діленого. Коли ділене і дільник представлеені в доповнюючому коді (від'ємні числа), то стандартний прийом виконання операції ділення вимагає: - по знакових бітах діленого і дільника утворити і тимчасово зберегти знак частки Z =X ( Y і залишку R; - утворити абсолютні значення діленого і дільника і виконати алгоритм ділення; - з врахуванням знаків частки Z і залишку R представити, при необхідності, результат в доповнюючому коді. Найбільшого застосування знайшли алгоритми ділення з відновленням і без відновлення залишку. Процес ділення за алгоритмом з відновленням залишку виконує циклічно повторювану послідовність дій. В першому повторені циклу - ділене, а в наступних повтореннях циклу - залишок зсуваються на один розряд вліво і після цього з нього віднімається дільник. У випадку, одержаного нового залишку, як додатнє число, то в черговий розряд частки (починаючи зі старшого розряду) записується одиниця (1), в протилежному випадку - в розряд частки записується нуль (0), а до залишку дадається дільник. Тобто, відновлюється попередній зсунутий залишок. Дії повторюються циклічно n раз (n - число розрядів дільника). В результаті отримуєм частку, а останній залишок буде результуючим залишком операції ділення. Алгоритми ділення без відновлення залишку, при від'ємному залишку діленого і дільника, не додає дільник Y для відновлення одержаного залишку. Виключення в алгоритмі операції відновлення залишку зменшує час проходження циклів, однак необхідність в алгоритмі визначення типу належної виконанню операції (додавання або віднімання) нівелює цю перевагу. Крім цього, необхідно в алгоритмі виконувати віднімання при першому проходженні циклу і відновлення кінцевого залишку в останньому цикліпри формуванні частки, що потребує додаткових затрат. Тому при програмній реалізації алгоритму ділення для МПС рекомендують вибирати спосіб обчислення з відновленням залишку. Ділення цілих знакових чисел організується складніше, ніж множення. ЦЕ пояснюється тим, що в залежності від знаків операндів і проміжнихї результатів, по-перше, окремі розряди частки необхідно формувати різними способами, а по-друге, дільник необхідно необхідно або віднімати від залишку діленого, або додавати до нього. Тому рекомендують виконувати попереднє перетворення доповнюючих кодів операндів діленя в прямі коди і після одержання від'ємного результату формувати його прямий код. Індивідуальне завдання. Варіант №23 Виконати операцію множення цілих знакових чисел 17*(-8) за алгоритмом множення цілих знакових чисел. Результат записати у пам’ять. Блок-схема алгоритму виконання завдання: - + - + - + - + - - + - + Текст програми: ORG 100H LXI SP,200H MVI A,17 STA 300H MVI A,-8 STA 301H LDA 300H LXI H,302H CALL CHECK LDA 301H LXI H,303H CALL CHECK LDA 302H ORI 00000000B LDA 300H CNZ CONVERT STA 300H LDA 303H ORI 00000000B LDA 301H CNZ CONVERT STA 301H LDA 301H MOV E,A LDA 300H CALL MULTAE LDA 302H ORI 00000000B CNZ CONVERTHL LDA 303H ORI 00000000B CNZ CONVERTHL SHLD 304H HLT CHECK: PUSH PSW ANI 10000000B MOV M,A POP PSW RET CONVERT: PUSH B PUSH PSW XRI 11111111B INR A MOV B,A POP PSW MOV A,B POP B RET CONVERTHL: PUSH PSW MOV A,H XRI 11111111B MOV H,A MOV A,L XRI 11111111B MOV L,A INX H POP PSW RET MULTAE: LXI H,0 MVI D,0 LOOP: ORA A JZ EXIT RAR JNC NOADD DAD D NOADD: XCHG DAD H XCHG JMP LOOP EXIT: RET Опис тексту програми: ORG 100H LXI SP,200H MVI A,17 STA 300H MVI A,-8 STA 301H LDA 300H LXI H,302H CALL CHECK LDA 301H LXI H,303H CALL CHECK LDA 302H ORI 00000000B LDA 300H CNZ CONVERT STA 300H LDA 303H ORI 00000000B LDA 301H CNZ CONVERT STA 301H LDA 301H MOV E,A LDA 300H CALL MULTAE LDA 302H ORI 00000000B CNZ CONVERTHL LDA 303H ORI 00000000B CNZ CONVERTHL SHLD 304H HLT CHECK: PUSH PSW ANI 10000000B MOV M,A POP PSW RET CONVERT: PUSH B PUSH PSW XRI 11111111B INR A MOV B,A POP PSW MOV A,B POP B RET CONVERTHL: PUSH PSW MOV A,H XRI 11111111B MOV H,A MOV A,L XRI 11111111B MOV L,A INX H POP PSW RET MULTAE: LXI H,0 MVI D,0 LOOP: ORA A JZ EXIT RAR JNC NOADD DAD D NOADD: XCHG DAD H XCHG JMP LOOP EXIT: RET Карта пам’яті Адреси Дані Коментарі  DEC HEX DEC HEX BIN   768 769 770 771 772 773 300 301 302 303 304 305 17 -8 / 8 0 128 120 255 11 F8 / 08 00 80 78 FF 00010001 11111000 / 00001000 00000000 10000000 01111000 11111111 Множене Множник / перетворений множник Знак множеного("+"=00h, "-"=80h) Знак множника ("+"=00h, "-"=80h) Результат множення 17*(-8)=-136 Старший байт результату   Результати виконання програми C0Z0M0E0I0 A=00 B=0000 D=0000 H=0000 S=0100 P=0100 LXI SP,0200 C0Z0M0E0I0 A=00 B=0000 D=0000 H=0000 S=0200 P=0103 MVI A,11 C0Z0M0E0I0 A=11 B=0000 D=0000 H=0000 S=0200 P=0105 STA 0300 C0Z0M0E0I0 A=11 B=0000 D=0000 H=0000 S=0200 P=0108 MVI A,F8 C0Z0M0E0I0 A=F8 B=0000 D=0000 H=0000 S=0200 P=010A STA 0301 C0Z0M0E0I0 A=F8 B=0000 D=0000 H=0000 S=0200 P=010D LDA 0300 C0Z0M0E0I0 A=11 B=0000 D=0000 H=0000 S=0200 P=0110 LXI H,0302 C0Z0M0E0I0 A=11 B=0000 D=0000 H=0302 S=0200 P=0113 CALL 0159 C0Z0M0E0I0 A=11 B=0000 D=0000 H=0302 S=01FE P=0159 PUSH PSW C0Z0M0E0I0 A=11 B=0000 D=0000 H=0302 S=01FC P=015A ANI 80 C0Z1M0E1I0 A=00 B=0000 D=0000 H=0302 S=01FC P=015C MOV M,A C0Z1M0E1I0 A=00 B=0000 D=0000 H=0302 S=01FC P=015D POP PSW C0Z0M0E0I0 A=11 B=0000 D=0000 H=0302 S=01FE P=015E RET C0Z0M0E0I0 A=11 B=0000 D=0000 H=0302 S=0200 P=0116 LDA 0301 C0Z0M0E0I0 A=F8 B=0000 D=0000 H=0302 S=0200 P=0119 LXI H,0303 C0Z0M0E0I0 A=F8 B=0000 D=0000 H=0303 S=0200 P=011C CALL 0159 C0Z0M0E0I0 A=F8 B=0000 D=0000 H=0303 S=01FE P=0159 PUSH PSW C0Z0M0E0I0 A=F8 B=0000 D=0000 H=0303 S=01FC P=015A ANI 80 C0Z0M1E0I1 A=80 B=0000 D=0000 H=0303 S=01FC P=015C MOV M,A C0Z0M1E0I1 A=80 B=0000 D=0000 H=0303 S=01FC P=015D POP PSW C0Z0M0E0I0 A=F8 B=0000 D=0000 H=0303 S=01FE P=015E RET C0Z0M0E0I0 A=F8 B=0000 D=0000 H=0303 S=0200 P=011F LDA 0302 C0Z0M0E0I0 A=00 B=0000 D=0000 H=0303 S=0200 P=0122 ORI 00 C0Z1M0E1I0 A=00 B=0000 D=0000 H=0303 S=0200 P=0124 LDA 0300 C0Z1M0E1I0 A=11 B=0000 D=0000 H=0303 S=0200 P=0127 CNZ 015F C0Z1M0E1I0 A=11 B=0000 D=0000 H=0303 S=0200 P=012A STA 0300 C0Z1M0E1I0 A=11 B=0000 D=0000 H=0303 S=0200 P=012D LDA 0303 C0Z1M0E1I0 A=80 B=0000 D=0000 H=0303 S=0200 P=0130 ORI 00 C0Z0M1E0I0 A=80 B=0000 D=0000 H=0303 S=0200 P=0132 LDA 0301 C0Z0M1E0I0 A=F8 B=0000 D=0000 H=0303 S=0200 P=0135 CNZ 015F C0Z0M1E0I0 A=F8 B=0000 D=0000 H=0303 S=01FE P=015F PUSH B C0Z0M1E0I0 A=F8 B=0000 D=0000 H=0303 S=01FC P=0160 PUSH PSW C0Z0M1E0I0 A=F8 B=0000 D=0000 H=0303 S=01FA P=0161 XRI FF C0Z0M0E0I0 A=07 B=0000 D=0000 H=0303 S=01FA P=0163 INR A C0Z0M0E0I0 A=08 B=0000 D=0000 H=0303 S=01FA P=0164 MOV B,A C0Z0M0E0I0 A=08 B=0800 D=0000 H=0303 S=01FA P=0165 POP PSW C0Z0M1E0I0 A=F8 B=0800 D=0000 H=0303 S=01FC P=0166 MOV A,B C0Z0M1E0I0 A=08 B=0800 D=0000 H=0303 S=01FC P=0167 POP B C0Z0M1E0I0 A=08 B=0000 D=0000 H=0303 S=01FE P=0168 RET C0Z0M1E0I0 A=08 B=0000 D=0000 H=0303 S=0200 P=0138 STA 0301 C0Z0M1E0I0 A=08 B=0000 D=0000 H=0303 S=0200 P=013B LDA 0301 C0Z0M1E0I0 A=08 B=0000 D=0000 H=0303 S=0200 P=013E MOV E,A C0Z0M1E0I0 A=08 B=0000 D=0008 H=0303 S=0200 P=013F LDA 0300 C0Z0M1E0I0 A=11 B=0000 D=0008 H=0303 S=0200 P=0142 CALL 0175 C0Z0M1E0I0 A=11 B=0000 D=0008 H=0303 S=01FE P=0175 LXI H,0000 C0Z0M1E0I0 A=11 B=0000 D=0008 H=0000 S=01FE P=0178 MVI D,00 C0Z0M1E0I0 A=11 B=0000 D=0008 H=0000 S=01FE P=017A ORA A C0Z0M0E1I0 A=11 B=0000 D=0008 H=0000 S=01FE P=017B JZ 0189 C0Z0M0E1I0 A=11 B=0000 D=0008 H=0000 S=01FE P=017E RAR C1Z0M0E1I0 A=08 B=0000 D=0008 H=0000 S=01FE P=017F JNC 0183 C1Z0M0E1I0 A=08 B=0000 D=0008 H=0000 S=01FE P=0182 DAD D C0Z0M0E1I0 A=08 B=0000 D=0008 H=0008 S=01FE P=0183 XCHG C0Z0M0E1I0 A=08 B=0000 D=0008 H=0008 S=01FE P=0184 DAD H C0Z0M0E1I0 A=08 B=0000 D=0008 H=0010 S=01FE P=0185 XCHG C0Z0M0E1I0 A=08 B=0000 D=0010 H=0008 S=01FE P=0186 JMP 017A C0Z0M0E1I0 A=08 B=0000 D=0010 H=0008 S=01FE P=017A ORA A C0Z0M0E0I0 A=08 B=0000 D=0010 H=0008 S=01FE P=017B JZ 0189 C0Z0M0E0I0 A=08 B=0000 D=0010 H=0008 S=01FE P=017E RAR C0Z0M0E0I0 A=04 B=0000 D=0010 H=0008 S=01FE P=017F JNC 0183 C0Z0M0E0I0 A=04 B=0000 D=0010 H=0008 S=01FE P=0183 XCHG C0Z0M0E0I0 A=04 B=0000 D=0008 H=0010 S=01FE P=0184 DAD H C0Z0M0E0I0 A=04 B=0000 D=0008 H=0020 S=01FE P=0185 XCHG C0Z0M0E0I0 A=04 B=0000 D=0020 H=0008 S=01FE P=0186 JMP 017A C0Z0M0E0I0 A=04 B=0000 D=0020 H=0008 S=01FE P=017A ORA A C0Z0M0E0I0 A=04 B=0000 D=0020 H=0008 S=01FE P=017B JZ 0189 C0Z0M0E0I0 A=04 B=0000 D=0020 H=0008 S=01FE P=017E RAR C0Z0M0E0I0 A=02 B=0000 D=0020 H=0008 S=01FE P=017F JNC 0183 C0Z0M0E0I0 A=02 B=0000 D=0020 H=0008 S=01FE P=0183 XCHG C0Z0M0E0I0 A=02 B=0000 D=0008 H=0020 S=01FE P=0184 DAD H C0Z0M0E0I0 A=02 B=0000 D=0008 H=0040 S=01FE P=0185 XCHG C0Z0M0E0I0 A=02 B=0000 D=0040 H=0008 S=01FE P=0186 JMP 017A C0Z0M0E0I0 A=02 B=0000 D=0040 H=0008 S=01FE P=017A ORA A C0Z0M0E0I0 A=02 B=0000 D=0040 H=0008 S=01FE P=017B JZ 0189 C0Z0M0E0I0 A=02 B=0000 D=0040 H=0008 S=01FE P=017E RAR C0Z0M0E0I0 A=01 B=0000 D=0040 H=0008 S=01FE P=017F JNC 0183 C0Z0M0E0I0 A=01 B=0000 D=0040 H=0008 S=01FE P=0183 XCHG C0Z0M0E0I0 A=01 B=0000 D=0008 H=0040 S=01FE P=0184 DAD H C0Z0M0E0I0 A=01 B=0000 D=0008 H=0080 S=01FE P=0185 XCHG C0Z0M0E0I0 A=01 B=0000 D=0080 H=0008 S=01FE P=0186 JMP 017A C0Z0M0E0I0 A=01 B=0000 D=0080 H=0008 S=01FE P=017A ORA A C0Z0M0E0I0 A=01 B=0000 D=0080 H=0008 S=01FE P=017B JZ 0189 C0Z0M0E0I0 A=01 B=0000 D=0080 H=0008 S=01FE P=017E RAR C1Z0M0E0I0 A=00 B=0000 D=0080 H=0008 S=01FE P=017F JNC 0183 C1Z0M0E0I0 A=00 B=0000 D=0080 H=0008 S=01FE P=0182 DAD D C0Z0M0E0I0 A=00 B=0000 D=0080 H=0088 S=01FE P=0183 XCHG C0Z0M0E0I0 A=00 B=0000 D=0088 H=0080 S=01FE P=0184 DAD H C0Z0M0E0I0 A=00 B=0000 D=0088 H=0100 S=01FE P=0185 XCHG C0Z0M0E0I0 A=00 B=0000 D=0100 H=0088 S=01FE P=0186 JMP 017A C0Z0M0E0I0 A=00 B=0000 D=0100 H=0088 S=01FE P=017A ORA A C0Z1M0E1I0 A=00 B=0000 D=0100 H=0088 S=01FE P=017B JZ 0189 C0Z1M0E1I0 A=00 B=0000 D=0100 H=0088 S=01FE P=0189 RET C0Z1M0E1I0 A=00 B=0000 D=0100 H=0088 S=0200 P=0145 LDA 0302 C0Z1M0E1I0 A=00 B=0000 D=0100 H=0088 S=0200 P=0148 ORI 00 C0Z1M0E1I0 A=00 B=0000 D=0100 H=0088 S=0200 P=014A CNZ 0169 C0Z1M0E1I0 A=00 B=0000 D=0100 H=0088 S=0200 P=014D LDA 0303 C0Z1M0E1I0 A=80 B=0000 D=0100 H=0088 S=0200 P=0150 ORI 00 C0Z0M1E0I0 A=80 B=0000 D=0100 H=0088 S=0200 P=0152 CNZ 0169 C0Z0M1E0I0 A=80 B=0000 D=0100 H=0088 S=01FE P=0169 PUSH PSW C0Z0M1E0I0 A=80 B=0000 D=0100 H=0088 S=01FC P=016A MOV A,H C0Z0M1E0I0 A=00 B=0000 D=0100 H=0088 S=01FC P=016B XRI FF C0Z0M1E1I0 A=FF B=0000 D=0100 H=0088 S=01FC P=016D MOV H,A C0Z0M1E1I0 A=FF B=0000 D=0100 H=FF88 S=01FC P=016E MOV A,L C0Z0M1E1I0 A=88 B=0000 D=0100 H=FF88 S=01FC P=016F XRI FF C0Z0M0E1I0 A=77 B=0000 D=0100 H=FF88 S=01FC P=0171 MOV L,A C0Z0M0E1I0 A=77 B=0000 D=0100 H=FF77 S=01FC P=0172 INX H C0Z0M0E1I0 A=77 B=0000 D=0100 H=FF78 S=01FC P=0173 POP PSW C0Z0M1E0I0 A=80 B=0000 D=0100 H=FF78 S=01FE P=0174 RET C0Z0M1E0I0 A=80 B=0000 D=0100 H=FF78 S=0200 P=0155 SHLD 0303 C0Z0M1E0I0 A=80 B=0000 D=0100 H=FF78 S=0200 P=0158 HLT *Execution halted Висновок: на даній лабораторній роботі я вивчив алгоритми виконання операцій множення та ділення цілих беззнакових і цілих знакових чисел для однокристального мікропроцесора Intel 8080 (КР580ВМ80А), набув практичних навиків складання та налагоджування програм з використанням цих алгоритмів.
Антиботан аватар за замовчуванням

28.01.2013 14:01-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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