- •Тема 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. Конструювання програм
- •Структурне програмування
Склад команд управління
Група команд управління складається із набору команд роботи із стеком, введення – виведення інформації, управління МП.
Запис даних в стек
PUSH Rp – записати два байта даних в стек.
{(SP) - 1} High змішана адресація LXI SP,2000H – адреса вершини стеку
{(SP)
- 2}
Low PUSH B
SP SP - 2 PUSH D на початку п/п
PUSH H
PUSH PSW
… тіло програми
POP PSW
POP H в кінці п/п
POP D
POP B
2. PUSH PSW (program status word) змішана адресація
{(SP) - 1} A змішана адресація
{(SP) - 2} F
SP SP – 2
Читання даних із стеку
3. POP Rp - прочитати два байта даних із стеку
Low {(SP)} змішана адресація
High {(SP) + 1}
SP SP + 2
4. POP PSW
(F) {(SP)} змішана адресація
(A) {(SP) + 1}
SP SP + 2
Команди введення – виведення
5. IN port пряма адресація
A (port) Команда введення в акумулятор байту даних із порту. Команда двобайтна.
6. OUT port пряма адресація
(port) A Команда виведення байту даних із акумулятору. Команда двобайтна.
Команди управління
7. EI дозвіл переривання неявна адресація
enable interrupt
(ДПР) 1 В тригер дозволу переривання записується 1.
8. DI заборона переривання неявна адресація
disable interrupt
(ДПР) 0 В тригер дозволу переривання записується 0.
9. NOP відсутня операція
no operation адресація відсутня
10. HLT зупинка МП
halt адресація відсутня
Приклад 4.
Під час використання будь-якої ЕОМ виникає проблема обробки даних, довжина яких не співпадає з розміром комірки пам’яті. Тому програмно видаляють біти комірки пам’яті, що не використовуються з метою їх не дії на результат виконання операцій. Таке виділення може бути виконано за допомогою логічної операції “І” і позначається “^” – логічне множення.
Завдання: Нехай число знаходиться в комірці пам’яті за адресою ADDR1. Виділимо 4-ри молодших біта і завантажимо їх в комірку за адресою ADDR2.
(ADDR1) = 4DH – початкове число.
Результат роботи програми повинен бути наступним:
(ADDR2) = 0DH – молодша тетрада початкового числа.
Програма
Адреса |
Асемблерний код |
Мітка |
Команда |
Коментарі |
|
|
|
ORG 800H |
|
0800 |
21 09 08 |
|
LXI H,ADDR1 |
;завантажити в HL вказівник ;на комірку, що містить ;початкове число |
0803 |
7E |
|
MOV A,M |
;завантажуємо саме число в A |
0804 |
E6 0F |
|
ANI 00001111B |
; накладемо на число маску, ; що виділяє молодші 4 біта ; A А ^ 0FH |
0806 |
23 |
|
INX H |
; обчислюємо значення ; вказівника на комірку ;результату HL HL + 1 |
0807 |
77 |
|
MOV M,A |
; запис результату в комірку ; пам’яті за міткою ADDR2 |
0808 |
C9 |
|
RET |
; повернення |
0809 |
4D |
ADDR1: |
DB 4DH |
;початкове число |
080A |
00 |
ADDR2: |
DB 0 |
; |
|
|
|
END |
|
Тут адресу результату отримано командою INX (інкрементування).
За допомогою даної програми можна розрізняти стан тумблерів, пускача електродвигуна, перемикача і т.і.
Приклад 5. Поділення слова на частини з використанням масок
Виділимо із слова дві 4 - бітні цифри і розташуємо їх в окремі комірки пам’яті.
Нехай в комірці пам’яті за адресою ADDR1 знаходиться початкове число. Результат роботи програми розмістити за адресами ADDR2 – молодші розряди, ADDR3 – старші розряди.
Алгоритм Програма
ORG 800H
0800
21 13 08
LXI H,ADDR1
;HLADDR1
0803
7E
MOV A,M
;A{(HL)}
0804
47
MOV B,A
;B
A
0805
E6 0F
ANI 00001111B
;AA^0FH
0807
23
INX H
;HLHL+1
0808
77
MOV M,A
;{(HL)}A
0809
78
MOV A,B
;A
B
080A
0F
RRC
;зсув вправо
080B
0F
RRC
;на 4 біти
080C
0F
RRC
080D
0F
RRC
080E
E6 0F
ANI 00001111B
AA^0FH
0810
23
INX H
HLHL+1
0811
77
MOV M,A
{(HL)}A
0812
76
HLT
0813
4A
ADDR1:
DB 4AH
0814
00
ADDR2:
DB 0
0815
00
ADDR3:
DB 0
END
