Лекція № 9
Групи команд. Команди передачі даних
Всi команди, якi можуть бути інтерпретовані МП створюють його систему команд. Вона характеризується функцiональною повнотою. Це означає, що за допомогою МП можна реалiзувати будь-який алгоритм обробки даних без яких-небудь обмежень.
Групи команд
1. Команди передачi даних
Розпiзнають такi пiдгрупи:
1.1 Однобайтне пересилання MOV R1,R2; MVI R,D8; STAX Rp; LDAX Rp; STA Addr; LDA Addr; SPHL.
1.2 Двохбайтне пересилання LXI Rp,D16; SHLD Addr; LHLD Addr; PUSH Rp; PUSH PSW; POP Rp; POP PSW.
1.3 Команди введення-виведення даних IN Port; OUT Port.
1.4 Обмiн байтами XCHG; XTHL.
2. Арифметичнi та логiчнi операцiї
2.1 Арифметичні та логічні операції з одним операндом CMC; STC; CMA; DAA; INR R; DCR R; INX Rp; DCX Rp.
2.2 Арифметичні та логічні операції з двома операндами ADD R; ADC R; SUB R; SBB R; ANA R; ORA R; XRA R; ADI D8; ACI D8; SUI D8; SBI D8; ANI D8; ORI D8; XRI D8; CPI D8; CMP R; DAD Rp.
Команди зсуву змісту акумулятора RLC; RAL; RRC; RAR.
Команди передачі управління
Команди безумовної передачі управління PCHL; JMP Addr
Команди умовної передачі управління
JZ Addr JNZ Addr JC Addr JNC Addr JPE Addr JPO Addr JM Addr
JP Addr
Команди звернення до підпрограм та повернення з підпрограм
CALL Addr CZ Addr CNZ Addr CC Addr CNC Addr CPE Addr CPO Addr CM Addr CP Addr
RST N
RET RZ RNZ RC RNC RPE RPO RM RP
Спеціальні команди
Дозвіл на переривання EI
Заборона переривання DI
Зупинка HLT
Пуста операція NOP
Алгоритм виконання команд
Для кожної команди можна однозначно описати алгоритм її інтерпретації МП (на натуральній або на штучній мові).
Мова опису деякої мови називається метамовою (штучна мова), яку ми і будемо використовувати для опису алгоритмів.
Елементи цiєї мови (штучної):
R-позначення pегiстpу, що викоpистовується R1,R2
Rp-паpа допустимих pегiстpiв B,C;D,E;H,L
( напpямок пеpедачi iнфоpмацiї
(..)-змiст (B)-змiст pегiстpа B
M - комірка пам'ятi, адpеса якої доpiвнює змiсту pегiстpової паpи H,L
{(..)}-комірка пам'ятi, адpеса якої вказана в дужках
BC~ B
DE ~D
HL ~H
Для пpикладу pозглянемо команди пеpесилання даних :
MOV(move)- пеpеслати
MVI(move immeadiate)- пеpеслати безпосеpеднiй опеpанд (число)
MOV A,B (B)((A) В загальному виглядi MOV R2,R1; (R1)((R2)
MVI C,85H; 85 ((C) MVI R;D8; D8((R)
D8-восьмибітний опеpанд (число, константа)

На рис.11.1 зображено бланк для пpогpамування на мовi асемблеpа.
Об’єктна програма Вхідний текст
Адреса
Об’єкт. код
Мітка
Мнемокод
Операнди
Коментарі






;це коментар



; це також
коментар






ORG
2100H
;початкова ;адреса

2100
3A0921
START:
LDA
MEM1
;(A)((MEM1)

2103
320A21

STA
MEM2
;(A)( (MEM2)

2106
C30021

JMP
START
;(PC)(START

2109
F7
MEM1:
DB
0F7H
;вх.число

210A
00
MEM2:
DB
0
;результат




END




Рис.11.1 Програма зациклювання
Склад команд передачі даних
Команди передачі даних забезпечують виконання операцій: розміщення, завантаження і переміщення.
1. MOV R1,R2 R1 ( R2
move register - пряма регістрова адресація.
Команда однобайтна.
2. MOV R,M R ( {(HL)}
move from memory - пряма регістрова і посередня регістрова адресації.
Команда однобайтна.
3. MOV M,R {(HL)} ( R
move to memory - посередня регістрова i пряма регістрова адресації.
Команда однобайтна.
4. MVI R,D8 R (D8
move to register immediate - пряма регістрова і безпосередня адресації.
Команда двохбайтна.
5. MVI M,D8 {(HL)} ( D8
move to memory immediate - посередня регістрова і безпосередня адресації.
Команда двохбайтна.
6. LXI Rp,D16 Rp ( D16
load register pair immediate - пряма регістрова і безпосередня адресації.
Команда трьохбайтна.
LXI B,3125H B ( 31H C (25H
Команди прямої адресації
7. LDA Addr A ( (Addr)
load accumulator direct - пряма адресація.
Команда займає три байти.
Зміст комірки пам’яті, адреса якої вказана в байтах 2 і 3 команди завантажується в акумулятор.
8. STA Addr (Addr) ( A
store accumulator direct - пряма адресація.
Команда займає три байти.
Зміст А розміщується в комірці пам’яті, адреса якої розміщена в 2 і 3 байтах команди.
Приклад LDA 1027H
До операції Після операції
А 0000 111 А 1101 1101
Карта пам’яті не зміниться.
1026 0000 0011
1027 1101 1101
1028 0010 1011
Додаткові команди
9. LHLD Addr L ( (Addr)
H ( (Addr+1)
load H and L direct - пряма адресація.
Зміст комірки пам’яті, адреса якої вказана в байтах 2 і 3 команди завантажується в регістр L, зміст наступної комірки пам’яті завантажується в регістр H.
LHLD 3003H
До операції Після операції
H 0000 0001 H 0000 0100
L 0000 0010 L 0100 0000
Карта пам’яті не змінюється.
3002 0000 1111
3003 0100 0000
3004 0000 0100
1111 1111
10. SHLD Addr (Addr) ( L
(Addr+1) ( H
store H and L direct - пряма адресація.
Зміст регістру L передається в комірки пам’яті, адреса якої вказана в байтах 2 і 3 команди. Зміст Н в наступну комірку пам’яті.
SHLD 8100H
До операції Після операції
H 1111 0000 H 1111 0000
L 1010 1010 L 1010 1010
Змінюються карта пам’яті
0100 0000 8100H 1010 1010
0000 0000 8101H 1111 1010
Використовується для зберігання змісту регістрової пари HL в пам’яті.
11. LDAX Rp A ( {(Rp)}
load accumulator indirect - посередня регістрова адресація.
Зміст комірки пам’яті, адреса якої визначається парою регістрів Rp передається в А.
Використовуються тільки регістрові пари D,E i B,C.
LDAX D
A 0011 0011 A 0101 0101
D 0100 0011 D не змінюється
4 3
E 0101 0111 E не змінюється
5 7
4356 . . .
4357 0101 0101
. . .
12. STAX Rp {(Rp)} ( A
store accumulator indirect - посередня регістрова адресація.
Зміст А передається в комірку пам’яті, адреса якої визначається парою регістрів.
13. XCHG H (> D
L (> E
Exchange H and L with D and E - неявна адресація.