
- •ВивЧеннЯ логiЧних та арифметиЧних команд мп та команд циклiЧних зсувiв, особливостей Їх застосуваннЯ. Методичні вказівки та інструкція
- •Мета роботи
- •1. Логiчнi команди мiкропроцесора
- •Логічні команди
- •Xra r (операція "виключаюче або" над вмістом акумулятора та регістру)
- •Xra m (операція "виключаюче або" над вмістом комірки пам'яті та акумулятора)
- •Xrі байт (безпосередня операція "виключаюче або")
- •Арифметичні команди
- •Inr r (збільшення вмісту регістру)
- •Inr м (збільшення вмісту комірки пам'яті)
- •Inr rp (збільшення вмісту пари регістрів)
- •Змiст роботи
- •Лiтература
- •Методичні вказівки та інструкція
Inr r (збільшення вмісту регістру)
(r) (r) + 1
Вміст регістра r збільшується на 1
Примітка. Команда впливає на стан всіх прапорів, крім прапору переносу CY.
|
|
|
|
|
0 |
0 |
D |
D |
D |
1 |
0 |
0 |
INR A 3C
INR B O4
INR C OC
INR D 14
INR E 1C
INR H 24
INR L 26
Цикли: 1
Стан: 4
Адресація: регістрова
Прапори: Z, S, P, AC
Inr м (збільшення вмісту комірки пам'яті)
((H) (L)) ((H) (L)) + 1
Вміст комірки пам'яті, адреса якої міститься в регістрах H i L, збільшується на 1.
Примітка. Команда впливає на всі прапори, крім прапору переносу CY.
|
|
|
|
|
0 |
0 |
1 |
1 |
0 |
1 |
0 |
0 |
INR М 34
Цикли: 3
Стан: 10
Адресація: непряма регістрова
Прапори: Z, S, P, AC
DCR r (ЗМЕНШЕННЯ ВМІСТУ РЕГІСТРУ)
(r) (r) - 1
Вміст регістра r зменшується на 1
Примітка. Команда впливає на стан всіх прапорів, крім прапору переносу CY.
|
|
|
|
|
0 |
0 |
D |
D |
D |
1 |
0 |
1 |
DCR A 3D
DCR B O5
DCR C OD
DCR D 15
DCR E 1D
DCR H 25
DCR L 2D
Цикли: 1
Стан: 4
Адресація: регістрова
Прапори: Z, S, P, AC
DCR М (ЗМЕНШЕННЯ ВМІСТУ КОМІРКИ ПАМ'ЯТІ)
((H) (L)) ((H) (L)) - 1
Вміст комірки пам'яті, адреса якої міститься в регістрах H i L, зменшується на 1.
Примітка. Команда впливає на всі прапори, крім прапору переносу CY.
|
|
|
|
|
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
DCR М 35
Цикли: 3
Стан: 10
Адресація: непряма регістрова
Прапори: Z, S, P, AC
Inr rp (збільшення вмісту пари регістрів)
(rh) (rlL) (rh) (rl) + 1
Вміст пари регістрів rp збільшується на одиницю.
Примітка. Команда не впливає на прапори.
|
|
|
|
|
0 |
0 |
R |
P |
0 |
0 |
1 |
1 |
INX B 03 (пара регістрів B i C)
INX D 13 (пара регістрів D i E)
INX H 23 (пара регістрів H i L)
INX SP 33 (вказівник СТЕКУ)
Цикли: 1
Стан: 6
Адресація: регістрова
Прапори: нема
DCX rp (ЗМЕНШЕННЯ ВМІСТУ ПАРИ РЕГІСТРІВ)
(rh) (rl) (rh) (rl) - 1
Вміст пари регістрів rp зменшується на одиницю.
Примітка. Команда не впливає на прапори.
|
|
|
|
|
0 |
0 |
R |
P |
1 |
0 |
1 |
1 |
DCX B OB (пара регістрів B i C)
DCX D 1B (пара регістрів D i E)
DCX H 2B (пара регістрів H i L)
DCX SP 3B (вказівник СТЕКУ)
Цикли: 1
Стан: 6
Адресація: регістрова
Прапори: нема
DAD rp (ДОДАВАННЯ ВМІСТУ ПАРИ РЕГІСТРІВ З ВМІСТОМ РЕГІСТРІВ H i L)
(H) (L) (H) (L) + (rh) (rl)
Вміст пари регістрів rp додається з вмістом регістрів H i L. Результат поміщується в пару регістрів H, L.
Примітка. Використовується тільки прапор переносу CY. Він встанов-люється, якщо є перенос при додаванні з подвійною точністю, в противному випадку він спрацьовує.
|
|
|
|
|
0 |
0 |
R |
P |
1 |
0 |
0 |
1 |
DAD B O9 (пара регістрів B i C)
DAD D 19 (пара регістрів D i E)
DAD H 29 (пара регістрів H i L)
DAD SP 39 (вказівник СТЕКУ)
Цикли: 3
Стан: 10
Адресація: регістрова
Прапори: CY
DAA (ДЕСЯТКОВЕ ДОПОВНЕННЯ АКУМУЛЯТОРА)
8-бітне число в акумуляторі доповнюється до представлення у вигляді 4-бітних чисел у двійково-десятковому коді з допомогою слідуючих операцій.
1. Якщо число, представлене чотирьма молодшими бітами акумулятора, більше 8 чи встановлений флажок допоміжного переносу АС, то до вмісту акумулятора додається 6.
2. Якщо тепер число, представлене чотирьма старшими бітами акумулятора, більше 9 чи встановлений флажок переносу CY, то число 6 додається до числа, утвореного чотирьома старшими бітами.
Примітка. Використовується всі флажки.
|
|
|
|
|
0 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
DAА 27
Цикли: 1
Стан: 4
Прапори: Z, S, P, CY, AC
Завдання 2.1. Скласти програму, що здiйснює операцii додавання i вiднiмання мiж двома попередньо уведеними в пам'ять числами. Результат обчислень заноситься у вiльнi комiрки пам'ятi. Закодувати програму, увести у пам'ять МПС, перевiрити результат у кроковому режимi. Записати програму у звiт разом iз отриманими результатами.
Множення двох чисел iз застосуванням переносу. Застосовуючи команди циклiчних зсувiв, можна створити рацiональну програму множення двох чисел. В цiй програмi циклiчний зсув вправо використовується для визначення зa допомогою прапора переносу кожного розряда другого множника якщо даний розряд дорiвнює 1, то перший множник додаeться, якщо ж вiн дорiвнюe 0, то перший множник зсовуeться влiво без додавання. Циклiчний зсув влiво використаний для змiщення першого множника влiво при множеннi на кожний розряд другого множника.
Дана програма множення працює значно швидше, нiж побудована на простому додаваннi, через значно меншу кiлькiсть операцiй. Програма дозволяє помножити два шiстнадцяткових числа при умовi, що їх добуток не перевищує FF = 255.
Множники записуються у комiрки 8101 та 8102, а результат множення засилається у комiрку 8103.
Завдання 3.1. Уведiть програму у пам'ять, запишiть два числа у комiрки 8101 i 8102. Пустiть програму в автоматичному режимi. Перевiрте результат. Запишiть два iнших числа у комiрки 8101 i 8102. Проженiть програму у кроковому режимi. Проаналiзуйте програму.
МНОЖЕННЯ ДВОХ ЧИСЕЛ (З ЗАСТОСУВАННЯМ ЗСУВУ).
АДРЕСА |
КОД |
МIТКА |
КОМАНДА |
КОМЕНТАР |
1 |
2 |
3 |
4 |
5 |
8000 |
3А |
|
LDA [8101] |
[8101] A |
8001 |
01 |
|
|
|
8002 |
81 |
|
|
|
8003 |
47 |
|
MOV B,A |
A B |
8004 |
3А |
|
LDA [8102] |
[8102] A |
8005 |
02 |
|
|
|
8006 |
81 |
|
|
|
8007 |
16 |
|
MVI D,00 |
00 D |
8008 |
00 |
|
|
|
8009 |
1Е |
|
MVI E,07 |
07 E |
800А |
07 |
|
|
|
800В |
00 |
|
NOP |
|
800С |
0F |
В: |
RRC |
[8102]-зсув вправо |
800D |
4F |
|
MOV C,A |
A C |
800Е |
1D |
|
DCR E |
E - I E |
800F |
D2 |
|
JNC,A: |
|
8010 |
15 |
|
|
|
8011 |
80 |
|
|
|
8012 |
78 |
|
MOV A,B |
B A |
8013 |
82 |
|
ADD D |
D + A A |
8014 |
57 |
|
MOV D,A |
A D |
8015 |
78 |
А: |
MOV A,B |
B A |
8016 |
07 |
|
RLC |
зсув влiво |
8017 |
47 |
|
MOV B,A |
A B |
8018 |
7В |
|
MOV A,E |
E A |
8019 |
87 |
|
ADD A |
|
801А |
СА |
|
JZ,D: |
|
801В |
21 |
|
|
|
801С |
80 |
|
|
|
801D |
79 |
|
MOV A,C |
C A |
801Е |
С3 |
|
JMP,B: |
|
801F |
0C |
|
|
|
8020 |
80 |
|
|
|
8021 |
7А |
Д: |
MOV A,B |
D A |
8022 |
32 |
|
STA [8103] |
D [8103] |
8023 |
03 |
|
|
|
8024 |
81 |
|
|
|
8025 |
76 |
|
HLT |
стоп |
ДОДАВАННЯ ДВОХ ЧИСЕЛ З ВИКОРИСТАННЯМ ПОСЕРЕДНЬОРЕГІСТРОВОЇ АДРЕСАЦІЇ.
АДРЕСА |
КОД |
МIТКА |
КОМАНДА |
КОМЕНТАР |
1 |
2 |
3 |
4 |
5 |
8000 |
3А |
|
LDA [8101] |
[8101] A |
8001 |
01 |
|
|
|
8002 |
81 |
|
|
|
8003 |
47 |
|
MOV B,A |
A B |
8004 |
3А |
|
LDA [8102] |
[8102] A |
8005 |
02 |
|
|
|
8006 |
81 |
|
|
|
8007 |
16 |
|
MVI D,00 |
00 D |
8008 |
00 |
|
|
|
8009 |
1Е |
|
MVI E,07 |
07 E |
800А |
07 |
|
|
|
800В |
00 |
|
NOP |
|
800С |
0F |
В: |
RRC |
[8102]-зсув вправо |
800D |
4F |
|
MOV C,A |
A C |
800Е |
1D |
|
DCR E |
E - I E |
800F |
D2 |
|
JNC,A: |
|
8012 |
78 |
|
MOV A,B |
B A |
8013 |
82 |
|
ADD D |
D + A A |
8014 |
57 |
|
MOV D,A |
A D |
8015 |
78 |
А: |
MOV A,B |
B A |
8007 |
16 |
|
MVI D,00 |
00 D |
8008 |
00 |
|
|
|
8009 |
1Е |
|
MVI E,07 |
07 E |
800А |
07 |
|
|
|
|
|
|
|
|
8025 |
76 |
|
HLT |
стоп |