Дон ГТУ
Лабораторна робота № 4
Програмування циклічних та типових програм на Асемблері для мікропроцесора КР580ИК80
Мета лабораторної роботи - вивчити програмування циклічних та типових програм на Асемблері для мікропроцесора КР580ИК80.
1 ТЕОРЕТИЧНА ЧАСТИНА
1. Команди, необхідні для організації розгалужень і циклічних структур у програмах
1.1 Логічні команди над акумулятором і регістром (табл.1.1)
Маємо на увазі, що головним призначенням команд цієї групи є вироблення ознак. Результат логічної операції записується в акумулятор, замінюючи перший операнд.
Таблиця 1.1 - Логічні команди
Умовні позначення: 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 - инкрементирования і декрементірованіе
1.3 Команди зміни вмісту акумулятора (табл. 1.3)
Команди цієї групи працюють тільки з вмістом акумулятора, тому адресної команди не мають.
Таблиця 1.3 - Зміна змісту акумулятора
Зверніть увагу, що команда RLC встановлює біт перенесення в стан, рівне значенню старшого розряду суматора. Вміст суматора циклічно зсувається вліво на одну позицію з перенесенням значення самого старшого розряду в самий молодший розряд суматора.
1.4 Команди зміни ознаки (прапора) переносу
Візьміть до відома, що для зміни прапора перенесення використовуються дві команди: STS - установка в один; CMC - установка в 0.
1.5 Команди умовних переходів
Команди умовних переходів використовують раннє вироблені значення ознак, самі їх не змінюють.
Майте на увазі, що якщо задана в операції умова виконується, адреса з другого і третього блоку команди заноситься в лічильник команд, тобто виконання програми починається з команд розташованих за цією адресою, в іншому випадку виконується наступна по порядку команда
Таблиця 1.4 - Команди умовних переходів
2 ЕКСПЕРИМЕНТАЛЬНІ Дослідження
Завдання: Знайти
Заносимо в комірку пам'яті, починаючи з номера 8500, чотири числа I1 = 4, I2 = 8, I3 = 6, I4 = 3.
Використовуючи отримані числа, складемо програму, наберемо програму на ЕОМ, і отримаємо результат.
8500 04
8501 08
8502 06
8503 03
Таблиця 2.1 - Програма на асемблері.
Лабораторна робота № 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) | XRI Im | + | + | 0 | 0 | + | (A) |
XRAM | + | + | 0 | 0 | + | (A) | |||||||
ORAR | + | + | 0 | 0 | + | (A) | ORI Im | + | + | 0 | 0 | + | (A) |
ORAM | + | + | 0 | 0 | + | (A) | |||||||
CMPR | + | + | + | + | + | (A) ~ (R) | CPI Im | + | + | + | + | + | (A) ~ Im |
CMPM | + | + | + | + | + | (A) ~ (M) |
Пам'ятайте, що логічні операції працюють з кожними з восьми бітів незалежно.
ANA «і» XRA «викл. або »ORA« або »
0 ^ 0 → 0 0
0 ^ 1 → 0 0
1 ^ 0 → 0 1
1 ^ 0 → 0 1
Команда 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 - Зміна змісту акумулятора
Команди | Ознаки | Виконувані функції | ||||
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 | - | - | + | - | - |
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 | ||
820D 820E | DA 05 82 | JC M1 | ||
8210 8211 | C3 06 82 | JMP M2 | ||
8212 | 7E | M3: | MOV A, M | |
8213 | 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 | ||
7B | MOV A, E | |||
821D | 17 | RAL | ||
821E | 5A | MOV E, D | ||
79 | MOV A, C | |||
8220 | 17 | RAL | ||
8221 | 92 | SUB D | ||
8222 8223 8224 | D2 26 82 | JNC M5 | ||
8225 | 82 | ADD D | ||
8226 | M5: | MOV C, A | ||
8227 | CMC | |||
8228 | 7E | MOV A, M | ||
8229 | 17 | RAL | ||
822A | 67 | MOV H, A | ||
822B | 2D | DCR L | ||
822D 822E | C2 13 82 | JNZ M4 | ||
RST | ||||