
- •Робота з компілятором ср/м
- •Інструментальні засоби динамічного відлагодження програм
- •Програмні засоби організації програми
- •Текст програми
- •Результати виконання програми
- •Міністерство освіти та науки України Національний університет “Львівська політехніка” Інститут комп’ютерних наук та інформаційних технологій
- •Способи адресації операндів і команди пересилання даних однокристального мп кр580
- •Теоретичні відомості Способи адресації в мп кр580
- •2.2. Команди пересилання даних мп кр580
- •Наприклад :
- •2.3. Стек і команди роботи зі стеком в однокристальному мп кр580
- •Карта пам'яті
- •Текст програми
- •Результати виконання програми
- •Теоретичні відомості
- •2. Короткі теоретичні відомості
- •Карта пам'яті
- •Текст програми
- •Результати виконання програми
- •Теоретичні відомості
- •2. 6. С умова адреси - умовний виклик підпрограми.
- •2. 8. R умова - умовне повернення з підпрограми.
- •2. 10. Організація підпрограм.
- •Карта пам’яті Текст програми
- •Результати виконання програми:
- •Теоретичні відомості
- •Арифметична операція множення
- •Арифметична операція ділення
- •Словесний опис алгоритму
- •Приклад множення чисел
- •Запис початкових даних
- •Додання
- •Другого множника
- •Зсув першого множника
- •Результати виконання програми
- •Міністерство освіти та науки України Національний університет “Львівська політехніка” Інститут комп’ютерних наук та інформаційних технологій
- •Теоретичні відомості
- •Арифметична операція додавання чисел в bcd кодах
- •2.2 Арифметична операція віднімання чисел в bcd кодах
- •2.3 Арифметична операція додавання/віднімання знакових чисел в bcd кодах
- •Перетворення чисел двійково-десяткового формату в двійковий формат і з двійкового формату в bcd-коди.
- •Карта пам'яті
- •Код програми
- •Зміст файлу lr6.Prn
- •Результати виконання програми
- •Теоретичні відомості
- •Додавання та віднімання багаторозрядних чисел цілого типу
- •Множення та ділення багаторозрядних чисел цілого типу
- •Арифметичні операції над дійсними числами
- •3.1 Арифметичні операції над числами в форматі з фіксованою комою
- •Арифметичні операції над числами в форматі з плаваючою комою
- •Код програми
- •Зміст файлу lr7.Prn
- •Результати виконання програми
Словесний опис алгоритму
N=0;
Аналізуємо N біт другого множника.
Якщо поточний біт рівний 1, то п.3, якщо рівний 0, то п.5.
Зсуваємо перший множник.
Результат додаємо до попередньої суми.
N = N + 1
Якщо поточний розряд останній, то п. 8, якщо менше 7 то п.2.
Кінець.
Приклад множення чисел
Переводимо множник 1 в доповняльний код, наприклад -7:
інвертуємо інкрементуємо(+1 до молодшого розряду)
dec 7 248 -7 (249)
hex 0 7 F 8 F 9
bin 0000 0111 --> 1111 1000 --> 1111 1001
Хід множення з коментарями:
-14 1111 1001
*
14 0000 1110
0000 0000 — початкова сума
1 1111 0010 — Перший крок, результат множення на 2-й розряд (зсув множеного на 1 розряд вліво)
1 1110 0100 — Другий крок, результат множення на 3-й розряд (зсув множеного на 2 розряд вліво)
1 1100 1000 — результат множення на 4-й розряд (зсув множеного на 3 розряд вліво)
сума: 1001 1110 — результат 158 (256-158 = 98) -7*14 = -98
9 E — результат 9E (FF-9E+1 = 62)
Блок-схема
Запис початкових даних
до
суми
Додання
Аналіз
бітуДругого множника
Зсув першого множника
т
ак ні
так ні
Код програми
org 100h
lxi SP,210h
mvi A,-7
sta 200h
sta 205h
mvi A, 14
sta 201h
mvi C, 1
mvi B, 8
checkBit:
lda 201h
ana C
mvi A, 0
ral
mvi A, 0
mov A, C
ral
mov C, A
jz ralQ
lda 205h
add E
mov E, A
push D
ralQ:
mvi A, 0
ral
mvi A, 0
lda 205h
ral
sta 205h
dcr B
jnz checkBit
nop
hlt
Зміст файлу lr5.prn
0100 ORG 100h ;перехід на початкову адресу 100h
0103 311002 LXI SP,210H ;встановити верхівку стеку в 200h
0103 3EF9 MVI A,-7
0105 320002 STA 200H ;множник1 в пам'ять
0108 320502 STA 205H ;копія для зсуву
010B 3E0E MVI A, 14
010D 320102 STA 201H ;множник2 в пам'ять
010B 0E01 MVI C, 1 ;регістр С встановити в 1 (використовується для перевірки біта)
010D 0608 MVI B, 8 ;регістр В встановити в 8 (використовується для циклу)
CHECKBIT: ;мітка перевірки біта
010F 3A0102 LDA 201H ;зчитуємо множене
0112 A1 ANA C ;перевірка поточного біту (0-7)
0113 3E00 MVI A, 0
0115 17 RAL ;очищення Акумулятора і біту переносу
0116 3E00 MVI A, 0
0118 79 MOV A, C
0119 17 RAL ;зсув вліво регістру С для перевірки наступного біту
011A 4F MOV C, A
011B 7B MOV A, E ;сума з Е в Акумулятор
011C CA2A01 JZ RALQ ;якщо поточний біт 0, то перехід тільки для зсуву
0123 3A0502 LDA 205H
0126 83 ADD E ;сума попереднього результату і наступного біту
0127 5F MOV E, A
0128 D5 PUSH D ;запис проміжного результату в стек
0129 D5 PUSH D
RALQ:
012A 3E00 MVI A, 0 ;
012C 17 RAL ;очищення Акумулятора і біту переносу
012D 3E00 MVI A, 0 ;
012F 3A0002 LDA 205H
0132 17 RAL ;зсув множеного вліво
0133 320002 STA 205H
0136 05 DCR B
0137 C20F01 JNZ CHECKBIT ;перехід до перевірки наступного біту, якщо не кінець циклу
010F 00 NOP ;”холоста” операція процесора