Лекція № 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 - неявна адресація.