
- •Тема 1.Системи відліку
- •Тема 2.Пеpевод чисел із однієї системи відліку в іншу
- •Тема 3.Представлення чисел в еом
- •Тема 4.Двійкова арифметика
- •Тема 5.Арифметичні дії над числами з плаваючою комою
- •Тема 6.Аpхітектуpа мікpопpоцесоpа кр580вм80
- •Мультиплексор
- •Тема 7.Пpогpамна модель мп кр580вм80а
- •Тема 8. Методи адpесацiї
- •Тема 9. Машина мова та асемблер
- •Тема 10. Загальна архітектура еом
- •Центральний процесор
- •Запам’ятовуючі пристрої
- •Пристрій введення-виведення
- •Регістри
- •Тема 11. Система команд
- •Групи команд
- •Алгоритм виконання команд
- •Тема 12.Склад команд мп кр580вм80 Склад команд аpифметичних дій мп кр580вм80
- •Додавання з подвійною точністю
- •Операції віднімання
- •Віднімання з позикою
- •Команди інкрементування і декрементування
- •Склад команд передачі даних
- •Команди прямої адресації
- •Додаткові команди
- •E 0101 0111 e не змінюється
- •Склад команд логічних операцій
- •18. Cmc Cy Діє лише на біт Cy.
- •Команди розгалуження і переходів
- •Команда виклику підпрограми
- •Склад команд управління
- •Така задача виникає при аналізі станів сукупності тумблерів, пускачів, перемикачів або індикаторів.
- •Тема 13. Псевдокоманди мп кр580вм80
- •Програма
- •Програма
- •Програма
- •Приклад 10. Додавання десяткових чисел
- •П рограма Алгоритм
- •Тема 14. Директиви умовного асемблювання
- •Тема 15. Макрокоманди
- •Тема 16. Одно та двохпрохідний асемблери
- •Тема 17. Представлення інформації в полях назв, операцій, операндів та коментарів
- •Використання в адресних виразах арифметичних або логічних операціях для всіх типів даних.
- •Приклад 11. Таблиця квадратів
- •Програма Алгоритм
- •Тема 18. Літерно-цифровий код
- •Обробка символьної інформації
- •Приклад 12. Довжина рядка символів в коді ascii
- •Програма Алгоритм
- •Тема 19. Структура управління мп Intel 8080
- •Тема 20. Конструювання програм
- •Структурне програмування
Програма
|
|
|
ORG 800H |
800 |
97 |
|
SUB A |
801 |
21 12 08 |
|
LXI H,ADDR1 |
804 |
46 |
|
MOV B,M |
805 |
11 16 08 |
|
LXI D,ADDR3 |
808 |
23 |
MPAD: |
INX H |
809 |
1A |
|
LDAX D |
80A |
8E |
|
ADC M |
80B |
77 |
|
MOV M,A |
80C |
13 |
|
INX D |
80D |
05 |
|
DCR B |
80E |
C2 08 08 |
|
JNZ MPAD |
811 |
76 |
|
HLT |
812 |
03 |
ADDR1: |
DB 03H |
813 |
29 A4 50 |
ADDR2: |
DB 29H,0A4H,50H |
816 |
FB 37 28 |
ADDR3: |
DB 0FBH,37H,28H |
|
|
|
END |
Приклад 10. Додавання десяткових чисел
В більшості 8-бітних мікропроцесорів є спеціальна команда DAA (десяткова корекція), що використовує біти Cy та AC регістру F. Вона розрахована на те, що в акумуляторі знаходиться сума упакованих десяткових операндів, отриманих будь-якою із команд ADD, ADC, ADI, ACI. Ця команда служить для аналізу змісту тетрад акумулятора і станів прапорців Cy та AC . Як підсумок цього аналізу в акумуляторі формується вірний десятковий результат, а прапор Сy відображає значення десяткового переносу.
DAA (Decimal adjust accumulator) - неявна адресація
додавання в двійково – десятковому коді
Якщо значення [A3A2A1A0] > 9H v AC=1, діє на всі біти F
то A A + 6H,
Якщо значення [A7A6A5A4] > 9H v Cy=1,
то A A + 60H.
Зауваження: команда використовується для одного байту і здійснюється лише над акумулятором.
Завдання: нехай необхідно додати два рядки, кожен з яких складається із шести десяткових цифр
376529 + 224388 = 600917
В пам’яті вони розміщені наступним чином
(ADDR1) = 3 – лічильник,
(ADDR2) = 29H, (ADDR2+1) = 65H, (ADDR2+2) = 37H - перше число,
(ADDR3) = 88H, (ADDR3+1) = 43H (ADDR3+2) = 22H – друге число.
Результат розмісти починаючи з адреси ADDR2.
П рограма Алгоритм
|
|
|
ORG 800H |
800 |
97 |
|
SUB A |
801 |
21 13 08 |
|
LXI H,ADDR1 |
804 |
46 |
|
MOV B,M |
805 |
11 16 08 |
|
LXI D,ADDR3 |
808 |
23 |
MPAD: |
INX H |
809 |
1A |
|
LDAX D |
80A |
8E |
|
ADC M |
80B |
27 |
|
DAA |
80C |
77 |
|
MOV M,A |
80D |
13 |
|
INX D |
80E |
05 |
|
DCR B |
80F |
C2 08 08 |
|
JNZ MPAD |
812 |
76 |
|
HLT |
813 |
03 |
ADDR1: |
DB 03H |
814 |
29 65 37 |
ADDR2: |
DB 29H,65H,37H |
817 |
88 43 22 |
ADDR3: |
DB 88H,43H,22H |
|
|
|
END |
Розглянуті приклади ілюструють наступні особливості програмування на мові асемблера:
Майже всі операції обробки даних здійснюються над змістом акумулятору.
Програміст повинен передбачити якомога менше звернень до пам’яті. Число звернень можна зменшити, використовуючи посередню адресацію регістрів, а також запам’ятовувати дані в регістрах загального призначення (РЗП).
Слід уважно аналізувати вплив команд на стан регістру ознак.
За допомогою команди “логічне І” можна обнулити деякі розряди комірки, що дає можливість працювати з даними, які мають довжину меншу довжини комірки.
За допомогою команд зсуву можна здійснювати переміщення даних із одних розрядів в інші з метою як обробки, так і економії часу.
Кожна програма складається із блоків встановлення початкових значень (ініціалізації), обробки і керування циклами. ЕОМ виконує блок ініціалізації один раз перед входом в цикл. Блок керування циклом визначає число повторів циклу.
Використання адресних вказівників зменшує число адрес пам’яті процесора.
Робота з масивами і організація циклів потребує більшої уваги до всіх деталей.
Програміст повинен знати:
вірність завдання початкових значень (ініціалізація) всіх змінних перед входом в цикл;
вірність завдання адреси в командах посереднього переходу;
вірність вибору умов, що перевіряються в місцях розгалуження;
вірність виконання першого і останнього переходу.