Дон ГТУ Лабораторна робота № 4 Програмування циклічних та типових програм на Асемблері для мікропроцесора КР580ИК80 Мета лабораторної
роботи - вивчити
програмування циклічних та типових програм на Асемблері для мікропроцесора КР580ИК80.
1 ТЕОРЕТИЧНА ЧАСТИНА 1. Команди, необхідні для організації розгалужень і циклічних структур у програмах 1.1 Логічні команди над акумулятором і регістром (табл.1.1) Маємо на увазі, що головним призначенням команд цієї групи є вироблення ознак. Результат логічної операції записується в акумулятор, замінюючи перший операнд.
Таблиця 1.1 - Логічні команди
Команди
| Ознаки
| Виконувані функції
| Команди
| Ознаки
| Виконувані функції
|
Z
| N
| C
| H
| P
| Z
| N
| C
| H
| P
|
ANAR
| +
| +
| 0
| +
| +
| (A) ^ (R) → A
| | | | | | | |
ANAM
| +
| +
| 0
| +
| +
| (A) ^ (M) → A
| ANI Im
| +
| +
| 0
| 0
| +
| (A) ^ Im → A
|
XRAR
| +
| +
| 0
| 0
| +
| (A) (R) → A
| XRI Im
| +
| +
| 0
| 0
| +
| (A) Im → A
|
XRAM
| +
| +
| 0
| 0
| +
| (A) (M) → A
| | | | | | | |
ORAR
| +
| +
| 0
| 0
| +
| (A) (R) → A
| ORI Im
| +
| +
| 0
| 0
| +
| (A) Im → A
|
ORAM
| +
| +
| 0
| 0
| +
| (A) (M) → A
| | | | | | | |
CMPR
| +
| +
| +
| +
| +
| (A) ~ (R)
| CPI Im
| +
| +
| +
| +
| +
| (A) ~ Im
|
CMPM
| +
| +
| +
| +
| +
| (A) ~ (M)
| | | | | | | |
Умовні позначення: R - загальне позначення одного з регістрів загального призначення (РОН) - A, B, C, D, E, H, L; M - адреса комірки пам'яті, що зберігається в двох суміжних РОН H і L; SP - стек; YSP - покажчик стека; CzK - лічильник команд; Im - безпосередній операнд; Ag - адреса комірки пам'яті, з якою
працює дана команда. Запис (R) означає вміст регістра, нуль в графіку «ознаки» - установлення в нуль при виконанні команди, а плюс - встановлення ознаки
відповідно до правила установки прапора.
Пам'ятайте, що
логічні операції працюють з кожними з восьми бітів незалежно.
ANA «і» XRA «викл. або »ORA« або »
0 ^ 0 → 0 0
0 → 0 0
0 → 0
0 ^ 1 → 0 0
1 → 1 0
1 → 1
1 ^ 0 → 0 1
0 → 1 січня
0 → 1
1 ^ 0 → 0 1
1 → 0 1
1 → 1 1 ^ 1 → 0
Команда CMP віднімає з вмісту акумулятора другий операнд (не змінюючи обидва), формує ознаки за правилами команд віднімання.
1.2 Команди инкрементирования і декрементірованія (табл.1.2) Візьміть до відома, що команда INR (инкрементирования) збільшує на одиницю вміст регістру або байта пам'яті, а команда DCR (декрементірованіе) зменшує на одиницю цей вміст. Ці команди не використовують і не змінюють значення біта перенесення, а інші біти ознак виробляють за загальними правилами.
Таблиця 1.2 - инкрементирования і декрементірованіе
Команди
| Ознаки
| Виконувані функції
|
Z
| N
| C
| H
| P
|
INR R
| +
| +
| -
| +
| +
| (R) +1 → R
|
INR M
| +
| +
| -
| +
| +
| (M) +1 → R
|
DCR R
| +
| +
| -
| +
| +
| (R) -1 → R
|
DCR M
| +
| +
| -
| +
| +
| (M) -1 → R
|
1.3 Команди зміни вмісту акумулятора (табл. 1.3) Команди цієї групи працюють тільки з вмістом акумулятора, тому адресної команди не мають.
Таблиця 1.3 - Зміна змісту акумулятора
Команди
| Ознаки
| Виконувані функції
|
Z
| N
| C
| H
| P
|
RLC
| -
| -
| +
| -
| -
| Am → Am +1, A7 → Ao, A7 → C
|
RRC
| -
| -
| +
| -
| -
| Am +1 → Am, Ao → A7, Ao → C
|
RAL
| -
| -
| +
| -
| -
| Am → Am +1, C → Ao, A7 → C
|
RAR
| -
| -
| +
| -
| -
| Am +1 → Am, Ao → C1, C → A7
|
CMA
| -
| -
| +
| -
| -
| , Інвертування
|
Зверніть увагу, що команда RLC
встановлює біт перенесення в стан,
рівне значенню старшого розряду суматора. Вміст суматора циклічно зсувається вліво на одну позицію з перенесенням значення самого старшого розряду в самий молодший розряд суматора.
1.4 Команди зміни ознаки (прапора) переносу Візьміть до відома, що для зміни прапора перенесення використовуються дві команди: STS - установка в один; CMC - установка в 0.
1.5 Команди умовних переходів Команди умовних переходів використовують раннє вироблені значення ознак, самі їх не змінюють.
Майте на увазі, що якщо задана в операції умова виконується, адреса з другого і третього блоку команди заноситься в лічильник команд, тобто виконання програми починається з команд розташованих за цією адресою, в іншому випадку виконується наступна по порядку команда
Таблиця 1.4 - Команди умовних переходів
Команди
| Пояснення
|
JMP Ag
| Ag → C2K (безумовний перехід до команди Ag)
|
JC Ag
| (C) = 1, то Ag → C2K, інакше (С2К) +3 → С2К
|
JNC Ag
| (C) = 0, то Ag → C2K, інакше (С2К) +3 → С2К
|
JZ Ag
| (Z) = 1, то Ag → C2K, інакше (С2К) +3 → С2К
|
JNZ Ag
| (Z) = 0, то Ag → C2K, інакше (С2К) +3 → С2К
|
JP Ag
| (N) = 0, то Ag → C2K, інакше (С2К) +3 → С2К (перехід по «+»)
|
JM Ag
| (N) = 1, то Ag → C2K, інакше (С2К) +3 → С2К (перехід по «-»)
|
JPE Ag
| (P) = 1, то Ag → C2K, інакше (С2К) +3 → С2К (перехід по парності)
|
2 ЕКСПЕРИМЕНТАЛЬНІ Дослідження Завдання: Знайти
Заносимо в комірку пам'яті, починаючи з номера 8500, чотири числа I1 = 4, I2 = 8, I3 = 6, I4 = 3.
Використовуючи отримані числа, складемо програму, наберемо програму на ЕОМ, і отримаємо результат.
8500 04
8501 08
8502 06
8503 03
Таблиця 2.1 - Програма на асемблері.
Адреса
| Код команди
| Мітка
| Мнемоніка
|
8200 8201
| 06 04
| PRG 1:
| MVI B, 4
|
8202 8203 8204
| 21 00 85
| | LXI H, 8500
|
8205
| 7E
| M1:
| MOV A, M
|
8206
| 05
| M2:
| DCR B
|
8207 8208 8209
| CA 12 82
| | JZ M3
|
820А
| 23
| | INR H
|
820В
| BE
| | CMP H
|
820C 820D 820E
| DA 05 82
| | JC M1
|
820F 8210 8211
| C3 06 82
| | JMP M2
|
8212
| 7E
| M3:
| MOV A, M
|
8213
| 5F
| | MOV E, A
|
8214 8215
| 16
| | MVI D, 03
|
03
| |
8216
| A7
| | ANA A
|
8217 8218 8219
| 21 00 08
| | LXI H, 0008
|
821A 821B
| DE 00
| | MVI C, 0
|
821C
| 7B
| | MOV A, E
|
821D
| 17
| | RAL
|
821E
| 5A
| | MOV E, D
|
821F
| 79
| | MOV A, C
|
8220
| 17
| | RAL
|
8221
| 92
| | SUB D
|
8222 8223 8224
| D2 26 82
| | JNC M5
|
8225
| 82
| | ADD D
|
8226
| 4F
| M5:
| MOV C, A
|
8227
| 3F
| | CMC
|
8228
| 7E
| | MOV A, M
|
8229
| 17
| | RAL
|
822A
| 67
| | MOV H, A
|
822B
| 2D
| | DCR L
|
822C 822D 822E
| C2 13 82
| | JNZ M4
|
822F
| | | RST
|
| | | | |