
- •7.090260 – Технологія будування авіаційних двигунів
- •8.090214 – Підйомно-транспортні, будівельні, дорожні машини і обладнання
- •1 ТеоретичнА частина
- •2 Лабораторна робота № 1. Вивчення методів адресації на прикладах простих арифметичних операцій
- •3. Лабораторна робота № 2. Логічні операції і маскування
- •4. Лабораторна робота № 3. Виконання галужень в програмах
- •5. Лабораторна робота № 4. Виконання арифметичних і логічних операцій з багатобайтнимі цілими числами
- •6. Лабораторна робота № 5. Стекова організація пам'яті і робота із стеком
- •Перелік пОсилань
- •Додаток а
4. Лабораторна робота № 3. Виконання галужень в програмах
Мета роботи
Навчиться розробляти програми розгалужених структур.
Загальні відомості
У розглянутих вище лабораторних роботах програмні модулі мають лінійну структуру, тоді як в реальних умовах при розробці програм керування, доводиться створювати програми розгалужених структур, коли залежно від стану керованого об'єкту і інших умов, процесор повинен виконувати різні дії, що програмно реалізується наявністю різних шляхів (гілок) виконання програми.
Часто для створення розгалужених програмних структур використовуються команди безумовного і умовного переходів. При виконанні групи команд умовного переходу процесором як умова аналізуються біти регістра стану:
С – ознака позики/перенесення;
Z – ознака нуля;
S – ознака знаку;
Р – ознака парності
Для реалізації безумовного переходу використовується команда:
JMP <B3B2> – процесор переходить до виконання команди, адреса якої вказана в третьому і другому байтах <B3B2>
До групи команд умовного переходу відносяться команди:
JC<B3B2>(JNC<B3B2>) – перейти до команди розташованої в пам'яті ОЗП, за адресою <В3В2> якщо С=1 (С=0), інакше – до наступної по порядку команди;
JZ<B3B2>(JNZ<B3B2>) – перейти до команди розташованої в пам'яті ОЗП, за адресою <В3В2> якщо Z=1 (Z=0), інакше – до наступної по порядку команди;
JP<B3B2>(JM<B3B2>) – перейти до команди розташованої в пам'яті ОЗП, за адресою <В3В2> якщо S=1 (S=0), інакше – до наступної по порядку команди;
JPO<B3B2>(JPE<B3B2>) – перейти до команди розташованої в пам'яті ОЗП, за адресою <В3В2> якщо P=1 (P=0), інакше – до наступної по порядку команди.
Для реалізації операцій множення і ділення використовуються наступні алгоритми (рисунок 4.1).
Рисунок 4.1 - Алгоритми операцій множення і ділення.
Порядок виконання роботи
Увімкнути ПЕВМ. Увійти до робочого середовища Windows під своїм паролем. Для запуску емулятора завантажте програму k120.bat з директорії c:\Program files\int8080.
Виконати наступні обов'язкові завдання
Завдання 3.1. Написати програму для вирішення такого математичного виразу:
[(2100) : 5] → (2101) (4.1)
Лістинг програми з докладними коментарями приведений в таблиці 4.1.
Результат роботи програми показати викладачеві, помістивши в комірку з адресою (2100) число 30Н.
Таблиця 4.1
Адреса |
Код |
Мітка |
Мнемоніка |
Коментар |
2200 |
06 00 |
|
MVI B, 00H |
00H→(B) |
2202 |
3A 00 21 |
|
LDA 2100H |
(2100)→(A) |
2205 |
FE 05 |
L2: |
CPI 05H |
порівняти (A) з 05H |
2207 |
DA 10 22 |
|
JC L1 |
якщо 05>(A)→L1 |
220A |
D6 05 |
|
SUI 05H |
(A)-05H→(A) |
220C |
04 |
|
INR B |
(B)+1→(B) |
220D |
C3 05 22 |
|
JMP L2 |
перехід на L2 |
2210 |
78 |
L1: |
MOV A, B |
(B)→(A) |
2211 |
32 01 21 |
|
STA 2101H |
(A)→(2101) |
2214 |
76 |
|
HLT |
зупинення |
Завдання 3.2. Написати програму для вирішення такого математичного виразу:
[(2100) ∙ 7]→(2101) (4.2)
Лістинг програми з докладними коментарями приведений в таблиці 4.2.
Результат роботи програми показати викладачеві, помістивши в комірку з адресою (2100) число 10Н.
Таблиця 4.2
Адреса |
Код |
Мітка |
Мнемоніка |
Коментар |
2200 |
0E 07 |
|
MVI C,07H |
07H→(C) |
2202 |
3A 00 21 |
|
LDA 2100H |
(2100)→(A) |
2205 |
47 |
|
MOV B, A |
(A)→(B) |
2206 |
AF |
|
XRA A |
(A)=0 |
2207 |
80 |
L2: |
ADD B |
(A)+(B)→(A) |
2208 |
0D |
|
DCR C |
(C)-1→(C) |
2209 |
C2 07 22 |
|
JNZ L2 |
якщо біт Z=0→L2 |
220С |
32 01 21 |
L1: |
STA 2101H |
(A)→(2101) |
220D |
76 |
|
HLT |
зупинення |
Завдання 3.3. Написати програму для вирішення такого математичного виразу:
[(2100) (2101) + 17Н] > 20H → […] : 2 → (2102) (4.3)
< 20H → […] ∙ 2 → (2103)
Лістинг програми з докладними коментарями приведений в таблиці 4.3.
Результат роботи програми показати викладачеві, заздалегідь завантаживши в комірки (2100), (2101) відповідно 10Н і 01Н.
Таблиця 4.3
Адреса |
Код |
Мітка |
Мнемоніка |
Коментар |
2200 |
3A 00 21 |
|
LDA 2100H |
(2100)→(A) |
2203 |
47 |
|
MOV B, A |
(A)→(B) |
2204 |
3A 01 21 |
|
LDA 2101H |
(2101)→(A) |
2207 |
A8 |
|
XRA B |
(A) (B)→(A) |
2208 |
C6 17 |
|
ADI 17H |
(A)+17H→(A) |
220A |
FE 20 |
|
CPI 20H |
зрівняти (A)з20Н |
220C |
DA 17 22 |
|
JC L1 |
якщо (A)<20H→L1 |
220F |
B7 |
|
ORA A |
Біт С=0 |
2210 |
1F |
|
RAR |
(A):2→(A) |
2211 |
32 02 21 |
|
STA 2102H |
(A)→(2102) |
2214 |
C3 1C 22 |
|
JMP L2 |
перейти на L2 |
2217 |
B7 |
L1: |
ORA A |
Біт С=0 |
2218 |
17 |
|
RAL |
(A)·2→(A) |
2219 |
32 03 21 |
|
STA 2103H |
(A)→(2103) |
221C |
76 |
L2: |
HLT |
зупинення |
Завдання 3.4. Самостійно написати програму для вирішення математичного виразу згідно варіанту (таблиця 4.4).
Зміст звіту
Тема, мета роботи.
Лістинги програм написаних самостійно і перевірка.
Висновки.
Таблиця 4.4
№ варіанту |
Завдання |
Дані для перевірки |
1 |
(2100) · 6 + [(2102) : 20H ]→ (2103) |
76H→(2100); C6→(2102) |
2 |
65H + [(2100) · 34H] → (2101) |
97Н→(2100) |
3 |
[(2100) " (2101) : 10H]→ (2102) |
BE→(2100);A1→(2101) |
4 |
[(2100) L 25H] · (2101) < F0H → (2102)
|
70Н→(2100);12Н→(2101) |
5 |
{72H + [(2100) : (2101)]} · 15H → (2102) |
F6→(2100);74Н→(2101) |
6 |
[(2100) : (2101)] + [(2102) · (2103)]→ (2104) |
D7→(2100); A4→(2101); 1F→(2102); EA→(2103) |
7 |
(2100) : 10H + (2101) · 50H→ (2103) |
19Н→(2100);05Н→(2101) |
8 |
(2100) " (2101) + [(2102) : 15H]→ (2103) |
8E→(2100);14Н→(2101); CD→(2102); |
9 |
[(2100) : 3AH + (2101)] · 3 → (2102) |
98Н→(2100); В6H→(2101) |
10 |
(2100) · (2101) A0 → […] – 75H→ (2103) < A0 → […] + 10H→ (2104) |
F3→(2100);75Н→(2101) |
11 |
[30H · (2100)] + [(2101)] : 2 → (2102) |
30Н→(2100);74Н→(2101) |
12 |
(2100) V [(2101) - (2102)] : 12H→ (2103) |
28Н→(2100);9E→(2101); 37H→(2102); |
13 |
(2100) · 40H - (2101) + 25H→ (2102) |
47Н→(2100);34Н→(2101) |
14 |
[(2100) – 0AH] · 15 - (2101) 50H → (2102) < 50H → (2103) |
72Н→(2100);12H→(2101) |
15 |
[18H + (2100)] · 35Н - (2101) → (2102) |
84Н→(2100);12Н→(2101) |
16 |
{(2100) - [(2101) : (2102)]} < 0 → (2103) > 0 → (2104) = 0 → (2105) |
D4→(2100);42H→(2101) 10H→(2102); |
Продовження таблиці 4.4
17 |
[50H + (2100)] : 2FH → (2101) |
8E→(2100) |
18 |
[(2100) + (2101) – 15H] · (2102) → (2103) |
90Н→(2100);64Н→(2101);77Н→(2102) |
19 |
[(2100) : 30H] + [4ЕH · (2101)]→ (2102) |
36Н→(2100);67Н→(2101) |
20 |
[(2100) · (2101)] - [(2102) : 25H]→ (2103) |
5C→(2100);22Н→(2101); 1F→(2102); |
21 |
(2100)
- [(2101) · (2102)]
< 0H → […] · 2→ (2104) |
32Н→(2100);89Н→(2101);А1→(2102) |
22 |
[(2100) - (2101)] : 65H = 0 → (2102)
|
A6→(2100);4D→(2101) |
23 |
[(2100) " (2101) + (2102)] · 1ВH → (2103) |
0D→(2101);FF→(2102);E3→(2102) |
24 |
САH : [(2100) + (2101)] → (2102) |
7B→(2100);D4→(2101) |
25 |
(2100) : (2101) · 4 → (2102) |
99Н→(2100);13H→(2101) |
26 |
(2100) · 6 + [(2102) : 20H ]→ (2103) |
8CН→(2100);79Н→(2102) |
27 |
65H + [(2100) · 34H] → (2101) |
99Н→(2100) |
28 |
[(2100) " (2101) : 10H]→ (2102) |
12Н→(2100);88Н→(2101); |
29 |
[(2100) L 25H] · (2101) < F0H → (2102) F0H → (2103) |
67Н→(2100);90Н→(2101) |
30 |
{72H + [(2100) : (2101)]} · 15H → (2102) |
84Н→(2100);12Н→(2101) |
Контрольні запитання
Реалізація безумовних переходів.
Реалізація умовних переходів.
Чи використовується регістр стану при реалізації безумовних переходів?
Чи використовується регістр стану при реалізації умовних переходів?
Скласти програму для вирішення математичного рівняння, заданого викладачем.