
- •Тема 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. Конструювання програм
- •Структурне програмування
Команда виклику підпрограми
10. CALL Addr змішана адресація
{SP-1} PCH
{SP-2} PCL
SP SP –2
PC Addr
Значення лічильника команд РС передається в стек, а в лічильник команд записується адреса підпрограми.
CALL 210AH
Карта пам’яті SP=2205H
-
2000
Підпрограма
2001
2002
2003
2204H=20H
2203H=01H PC=210AH SP=2203H
PC=2001H
H L
Умовний виклик підпрограм
11. CC Addr змішана адресація
call on carry якщо Cy=1, то 1,2,3,4
якщо Cy=0, то PC PC + 3
12. CNC Addr змішана адресація
call on not carry якщо Cy=0, то 1,2,3,4
якщо Cy=1, то PC PC + 3
13. CZ Addr змішана адресація
call on zero якщо Z=1, то 1,2,3,4
якщо Z=0, то PC PC + 3
14. CZ Addr змішана адресація
call on not zero якщо Z=0, то 1,2,3,4
якщо Z=1, то PC PC + 3
15. CP Addr змішана адресація
call on plus якщо S=0, то 1,2,3,4
якщо S=1, то PC PC + 3
16. CM Addr змішана адресація
call on minus якщо Z=1, то 1,2,3,4
якщо Z=0, то PC PC + 3
17. CPE Addr змішана адресація
call on parity якщо P=1, то 1,2,3,4
якщо P=0, то PC PC + 3
18. CPO Addr змішана адресація
call on not parity якщо P=0, то 1,2,3,4
якщо P=1, то PC PC + 3
Команда повернення із підпрограми
19. RET змішана адресація
return PCL {(SP)}
PCH {(SP) + 1}
SP SP + 2
стек
-
2202
2203
01
2204
20
2205
PCL=01H PCH=20H PC=2001H SP=2205H
Повернення за умовою (Conditional return)
20. RC, якщо Сy=1, то PCL {(SP)}
PCH {(SP) + 1}
SP SP + 2
якщо Cy=0, то PC PC +1, тобто наступна команда.
21. RNC Cy=0 (то PCL {(SP)} PCH {(SP) + 1} SP SP + 2 якщо навпаки, то PC PC +1)
22. RZ Z=1 (то PCL {(SP)} PCH {(SP) + 1} SP SP + 2 якщо навпаки, то PC PC +1)
23. RNZ Z=0 (то PCL {(SP)} PCH {(SP) + 1} SP SP + 2 якщо навпаки, то PC PC +1)
24. RP S=0 (то PCL {(SP)} PCH {(SP) + 1} SP SP + 2 якщо навпаки, то PC PC +1)
25. RM S=1 (то PCL {(SP)} PCH {(SP) + 1} SP SP + 2 якщо навпаки, то PC PC +1)
26. RPE P=1 (то PCL {(SP)} PCH {(SP) + 1} SP SP + 2 якщо навпаки, то PC PC +1)
27. RPO P=0 (то PCL {(SP)} PCH {(SP) + 1} SP SP + 2 якщо навпаки, то PC PC +1)
28. RST N (Re-start) повторний пуск 0 <= N <= 7 N – вектор переривання
{(SP) - 1} PCH
{(SP) - 2} PCL
SP SP - 2 0 7
PC 8 * NNN NNN – 000…111
29. PCHL неявна адресація
move H and L to PC
PCH H
PCL L
30. SPHL неявна адресація
move H and L to SP
SP HL
Приклад 3. Додавання 8-бітних чисел без переносу
Завдання: необхідно додати зміст комірки пам’яті за адресами ADDR1 і ADDR2, і помістити результат в комірку пам’яті з адресою ADDR3.
В цьому прикладі для простоти не будемо враховувати можливість виникнення переносу.
(ADDR1) = 23H – перший доданок
(ADDR2) = 43H – другий доданок
Результатом додавання буде:
(ADDR3) = 23H + 43H = 66H
Алгоритм
Крок 1. Завантаження в акумулятор змісту комірки пам’яті з адресою ADDR1
Крок 2. Зберегти зміст акумулятора в регістрі В
Крок 3. Завантаження в акумулятор змісту комірки пам’яті з адресою ADDR2
Крок 4. Додати зміст акумулятора і регістра В
Крок 5. Переслати зміст акумулятора в комірку пам’яті з адресою ADDR3
Програма
Адреса |
Асемблерний код |
Мітка |
Команда |
Коментарі |
|
|
|
ORG 800H |
|
0800 |
3A 0C 08 |
|
LDA ADDR1 |
; Крок 1. A (ADDR1) |
0803 |
47 |
|
MOV B,A |
; Крок 2. B A |
0804 |
3A 0D 08 |
|
LDA ADDR2 |
; Крок 3. A (ADDR2) |
0807 |
80 |
|
ADD B |
; Крок 4. A A + B |
0808 |
32 0E 08 |
|
STA ADDR3 |
; Крок 5. (ADDR3) A |
080B |
76 |
|
HLT |
; зупинка МП |
080C |
23 |
ADDR1: |
DB 23H |
;1-ий доданок |
080D |
43 |
ADDR2: |
DB 43H |
;2-ий доданок |
080E |
00 |
ADDR3: |
DB 0 |
;для результату |
|
|
|
END |
|