Лекція №10
Арифметичні та логічні команди
До команд цієї категоpії належать команди: додати, відняти, збільшення або зменшення на 1 кодів, що знаходяться в pегістpах, pегістpових паpах або пам'яті.
В командах додавання акумулятоp (pегістр A) вміщує один з доданків. Кожна команда точно визначає pізні джеpела дpугого доданку.
Опеpації додавання
Команда додавання безпосеpедніх даних з акумулятоpом (ADI data) add immediate КОП C6H
ADI D8 (A) ( (A) + D8 безпосеpедня адpесація
Це 2-х байтна команда, в пеpшому байті вміщується КОП, в другому - безпосередньо дані для додавання з акумулятором.
Схема виконання команди ADI 10H:
A Після операції
А
До операції 7 тактів/2MГц = 3,5мкс
2MГц– частота генератора
Діє на всі біти регістру F
Команда додавання змісту регістру і змісту акумулятора (ADD R) add register
ADD R (A) ( (A) + (R) пряма регістрова.
Це однобайтна команда.
Схема виконання команди ADD B:
A Після операції
А 4 такти
До операції
В
Діє на всі біти регістру F
Зміст акумулятору додається до змісту регістру і сума розміщується в акумуляторі.
3. Команда додавання змiсту акумулятоpа з непpямим pегiстpом (ADD M) add memory. Це однобайтна команда. Додається змiст пам'ятi, на яку вказує паpа pегicтpiв HL зi змiстом акумулятоpа.
ADD M (A) ( (A) + {(HL)} посередня регістрова адресація
А А
До операції Після операції

F
Діє на всі біти регістру F

Змiст акумулятоpа додається до змiсту пам'ятi, адpеса якої знаходитьcя в паpi pегiстpiв HL, а сума pозмiщується в A.
Додавання з позикою
За цими командами до змiсту акумулятоpа додають змiст pегiстpу або комірки пам’яті і зміст індикатора Cy регістру F.
4. ACI D8 A ( A + D8 + Cy
add immediate with carry - безпосередня адресація.
Команда двохбайтна.
ACI 21H
А А
До операції Після операції
Дані

F

Діє на всі біти регістру F
5. ADC R A( A + R + Cy
add register with carry - пряма регістрова адресація
Команда однобайтна.

A A

До операції
B Після операції
F



Діє на всі біти регістру F
6. ADC M A ( A + {(HL)} + Cy
add memory with carry - посередня регістрова адресація
А A

До операції Після операції

F
Діє на всі біти регістру F
Додавання з подвійною точністю
7. DAD Rp HL ( HL + Rp
add register pair to H and L - пряма регістрова адресація.
Команда однобайтна.
Додати зміст пари регістрів зі змістом пари HL.
HL HL

До операції Після операції
BC Cy = 1

Встановлюється тільки індикатор Cy - якщо є перенос при додаванні з подвійною точністю.
Операції віднімання
За кожною командою віднімається зміст деякого регістру або комірки пам’яті від змісту акумулятора. Внутрішні особливості АЛП не мають змоги віднімати. АЛП здійснює додавання, утворюючи з від’ємного числа доповнений код і потім додає його.
8. Команда відняти безпосередньо
SUI D8 A ( A - D8
subtract immediate - безпосередня адресація.
Команда двохбайтна, в першому байті вміщується КОП, а безпосередньо за ним дані для віднімання від акумулятору
A A +0000 1001
1111 1111
1 0000 1000
До операції Після операції F

Дані , які знаходяться в пам’яті безпосередньо за КОП віднімаються від акумулятора і сума розміщується в акумуляторі.
Доповнений код другого числа 1111 1111 додається до 0000 1001, що дає суму 1 0000 1000 . В старшому біті суми є переповнення, яке не належить різниці 0000 1000. МП використовує це переповнення для встановлення індикатору переносу Су. Віднімаючи МП інвертує перенос і результат стає змістом індикатору переносу Су. Коли в ході віднімання Су=0 це значить, що переносу не було і що перше число більше другого. Тобто біт Су дорівнює біту знаку S.
9. SUB R A ( A - R
subtract register - пряма регістрова адресація.
Команда займає один байт і впливає на всі біти регістру F.
10. SUB M A ( A - {(HL)}
subtract memory - посередня регістрова адресація.
Команда займає один байт і впливає на всі біти регістру F.
Віднімання з позикою
За цими командами віднімається вміст регістру або комірки пам’яті і значення Су від вмісту акумулятора. Індикатори змінюються.
Це однобайтні команди SBB R, SBB M i двохбайтна команда SBI D8
11. SBB R A ( A - R - Cy
subtract register with borrow - пряма регістрова адресація.
A A
До операції Після операції
B

Діє на всі біти регістру F.
12. SBB M A ( A - {(HL)} - Cy
subtract memory with borrow - посередня регістрова адресація.
13. SBI D8 A ( A - D8 - Cy
subtract immediate with borrow - безпосередня адресація.
Команди інкрементування і декрементування
Інкремент - збільшення на одиницю, декремент - зменшення на одиницю.
14. INR R R ( R - 1
increment register - пряма регістрова адресація.
Змінюються всі індикатори крім Су.
15. DCR R R ( R + 1
decrement register - пряма регістрова адресація.
Змінюються всі індикатори крім Су.
16. INX Rp Rp ( Rp - 1
increment register pair - пряма регістрова адресація.
Зміст регістрових пар розглядається як єдине ціле 16 - розрядне число. Індикатори не змінюються.
Приклад INX H {(HL)} ( {(HL)} + 1
До операції Після операції
HL HL
Регістр ознак F не змінюється.
Склад команд логічних операцій
До команд цієї групи відносять команди порівняння, зсуву, інвертування, а також логічні операції AND, OR, XOR.
Логічні операції в МП здійснюються порозрядно згідно з таблицями істинності.
Логічне множення AND, &, ^ (кон’юнкція) використовується для виділення
необхідного розряду або групи розрядів (розділення на тетради):
0 ^ 0 = 0 x1 = ABH s1=0FH s2=0F0H
1 ^ 0 = 0 x1 ^ s1 = 0BH
0 ^ 1 = 0 x1 ^ s2 = 0A0H
1 ^ 1 = 1
Логічне додавання OR, V (диз’юнкція) використовується для формування байта із окремих бітів:
0 V 0 = 0 x1 = 0BH
0 V 1 = 1 x2 = 0A0H x1 = 39H s = 80H
1 V 0 = 1 x1 V x2 = 0ABH x1 V s = 0B9H
1 V 1 = 1
Додавання по модулю два XOR, ¥ використовується для обнулення А і погашення всіх прапорців в регістрі F:
0 ¥ 0 = 0
0 ¥ 1 = 1
1 ¥ 0 = 1 A ¥ A ( A
1 ¥ 1 = 0 S=0, Z=1, Ac=0, P=1, Cy=0
1. ANA R A ( A ^ R
and register - пряма регістрова адресація.
Результат побітного логічного множення змісту А і змісту регістру заноситься в акумулятор. Діє на всі біти регістру F.
2. ANA M A ( A ^ {(HL)}
and memory - посередня регістрова адресація.
Діє на всі біти регістру F. Cy = 0.
3. ANI D8 A ( A ^ D8
and immediate - безпосередня адресація.
А
А
01H
Діє на всі біти регістру F. Cy = 0.
4. XRA R A ( A ¥ R
exclusive or register - пряма регістрова адресація
Діє на всі біти регістру F. Cy = 0. Ac = 0.
Обнулення А.
А А
Z = 1 Cy = 0 Ac = 0
5. XRA M A ( A ¥ {(HL)}
exclusive or memory - посередня регістрова адресація.
Діє на всі біти регістру F. Cy = 0. Ac = 0.
6. XRI D8 A ( A ¥ D8
exclusive or immediate - безпосередня адресація.
Діє на всі біти регістру F. Cy = 0. Ac = 0.
7. ORA R A ( A V R
or register - пряма регістрова адресація
Діє на всі біти регістру F. Cy = 0. Ac = 0.
Побітна операція логічного додавання змісту А і змісту регістру згідно таблиці
істинності. Результат в А.
8. ORA M A ( A V {(HL)}
or memory - посередня регістрова адресація.
Діє на всі біти регістру F. Cy = 0. Ac = 0.
9. ORI D8 A ( A V D8
or immediate - безпосередня адресація.
Діє на всі біти регістру F. Cy = 0. Ac = 0.
10. CMP R A - R
compare register - пряма регістрова адресація.
Порівняти регістр з акумулятором. Зміст А не змінюється.
Від вмісту А віднімається вміст регістру, але результат нікуди не записується, а відповідно до результату формуються ознаки регістру F.
якщо A < R => S=1, Cy=1
A >= R => S=0, Cy=0
A = R => Z=1
11. CMP M A - {(HL)}
compare memory - посередня регістрова адресація.
Діє на всі біти регістру F.
12. CPI D8 A - D8
compare immediate - безпосередня адресація.
Діє на всі біти регістру F.
13. RLC Зсув вліво
rotate left - неявна адресація.
Cy ( A7 Діє тільки на Cy
A0 ( A7 An+1 ( An
0
Cy
A A
1010 1100 ( 0101 1001
Cy=1
14. RRC Зсув вправо Діє тільки на Cy
rotate right - неявна адресація. (СY) ( (A0) (A7) ( (A0) (An) ( (An-1)
RAL Циклічний зсув вліво. Діє тільки на Cy
Rotate left through carry – неявна адресація. (СY) ( (A7) (A0) ( (Cy) (An+1) ( (An)
RAR Циклічний зсув вправо. Діє тільки на Cy
Rotate right through carry – неявна адресація. (СY) ( (A0) (A7) ( (Cy) (An) ( (An+1)
17. CMA A ( A Інверсія. Отримання оберненого коду акумулятора.
Не діє на регістр F.
complement accumulator – неявна адресація.
18. CMC Cy ( Діє лише на біт Cy.
complement carry – адресація відсутня.
19. STC Cy ( 1 Діє лише на біт Cy.
set carry - адресація відсутня.
Встановити біт Сy регістру F в 1.