Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Микропроцессорная техника.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
5.93 Mб
Скачать

Система команд мп.

МП имеет 244 команды. Отличных – 78.

По ф – циям:

  1. Команды перемещения данных.

  2. Команды арифметические.

  3. Команды поразрядной обработки данных.

  4. Команды передачи управления.

  5. Команды управления МП.

Команды хранятся в памяти МП. Каждая команда – это комбинация двоичных данных. Но удобнее использовать 16 – ричный формат.

Операнды – это могут быть данные или адреса памяти и портов.

По фориату команды:

1 – байтные

2 – байтные

3 - байтные

Способы адресации – определяют методы операндов:

  1. Непосред. адресация – данные указываются непосредственно в команде.

  2. Прямая адресация – в команде указывается адрес ячейки памяти, где нах. или куда будут пересылаться данные.

  3. Регистровая прямая – в команде указываются название регистров, где нах. данные.

  4. Косвенная регистровая – адрес яч. памяти нах. в регистровой паре ( чаще всего HL ).

  5. Стековая – используется при работе со стеком – адресация ячеек стека идёт через указатель стека SP.

Команды перемещ. дан. хар – но, что дан. только перемещаются из одного объекта в др. ( дан. при перемещении копируются ).

А) Команды пересылки, загрузки, запоминания и обмена.

Б) Команды операций со стеком.

В) Команды ввода – вывода.

Если дан. перемещ. между регистр. – это пересылка; если из памяти в

регистр – это пересылка рег., перемещ. из рег. в память – это запоминание.

  •  перемещение данных

  •  обмен данными

- R произвольный регистр

- ( R ) содержимое регистра

- RP регистровая пара

  • ( RP) содержимое регистровой пары

  • М ( Адрес ) содержимре ячейки памяти с адресом

- М ( HL ) содержимое ячейки памяти, адрес который нах. в рег. паре

- D8 или d8 8 – разр. данн. ( 1 – байт. )

  • D16 или d8 16 – разр. дан. ( 2 – байт. )

  • А16 или ADR 16 – разр. адрес

  • PORT адрес порта

А) MOV, MVI, LXI, LDA, STA, LDAX, STAX, LHLG, SHLD

LHLG, SHLD

XCHG – ( HL )  ( DE )

MOV R1, R2 ( R1 )  ( R2 )

R1, R2: A, B, C, D, E, H, L, M

7

6

5

4

3

2

1

0

0

1

D

D

D

S

S

S

Код ком.

Код прие-мника

Код источ-ника

0111 1101 = 7DH

MOV A, L ( A )  ( L )

000 – В

001 - С

010 - D

011 - E

100 - H

101 - L

110 - M

111 – A

Ком пересылки не действуют на флаги МП.

Б) Стек – оюл. опер. памяти, адресация кот. осущ. с помощью рег. – указателя стека.

Для определения вершины стека надо загрузить указатель стека и указать адрес вершины стека: LXI SP, 100A H

Команды для раб. со стеком:

PUSH RP – занести в стек содержимое регистровой пары.

PUSH H ( HL )

PUSH B ( BE )

PUSH D ( DC )

PUSH PSW ( PSW ) = ( A ), ( F )

При занесении в стек:

  1. 1. Указатель стека декрементируется : ( SP )  ( SP ) – 1 : 1009H

2 . Старший регистр пары заносится в ячейку по новому адресу ( SP )  ( H ) ( 1009 H )  ( H )

3. Указатель стека вновь декрементируется: 1008H.

4. Заносится по этому адресу мл. регистр пары ( SP )  ( L ) ( 1008H )  ( L )

PUSH PSW

( A ) ( F ) = 33H, 02H

1. ( SP )  ( SP ) – 1 1007H

2. ( SP )  ( A ) ( 1007H )  ( A )

3. ( SP )  ( SP ) – 1 1006H

4. ( SP )  ( F ) ( 1006H)  ( F )

POP RP – извлечь из вершины стека 16 – разр. данные и помещаем в рег. пару.

Извлечь надо в обратном порядке: PUSH H

PUSH PSW

…………..

POP PSW

POP H

POP PSW

1. МП перемещает из верш. стека содержимое в регистр пары ( F )  ( SP ):

( F )  (1006H)

2. Указатель стека инкреминтируется : ( SP)  ( SP ) + 1: 1007H

  1. Дан. из вершины стека пересыл. в старший рег. пары:

( А )  ( SP ) : ( A )  ( 1007H )

  1. Указ. стека вновь инкреминтируется: 1008H

POP PSW – изменяет флаги МП

В) Команды ввода и вывода:

IN PORT – ( A )  ( PORT )

OUT PORT ( PORT )  ( A )

2. A ) команды сложения 8 разр. чисел ( ADD, ADC, ADI, ACI )

Б ) команды вычесления 8 – разр. чисел ( SUB, SBB, SBI )

В ) команды сложения 16 – разр. данных DAD – данные складываются с регистровой парой овой парой .

DAD H – ( HL )  ( HL ) + ( HL )

DAD B – ( HL )  ( HL ) + ( BC )

DAD D – ( HL )  ( HL ) + ( DE )

DAD SP – ( HL )  ( HL ) + ( SP )

Г ) команды инкремента ( INTR, INX )

Д ) команды декремента ( DCR, DCX )

Е ) команды десятичной коррекции данных ( DAA )

3. A ) ком. Логические:

ANA ANI - лог. И

ORA, ORI – лог. искл. ИЛИ

CMA - лог. НЕ

Б ) ком. cдвига:

RLC, RRC, RAL, RAR

В ) ком. сравнения

CMP, CPI:

CMP R – сравнен. с рег.

CMP M – сравн. с ячейками памяти

CPI – сравн. с непоср. данными

0, то Z = 1

( А ) – ( R ) = < 0, то CY = 1

> 0, то Z = 0 , CY = 0

Г) команды операции с флагом переноса: STC: (CY)  1 и CMC: (CY)  ( )

3 группы:

А) Ком. перехода

Б) Ком. вызова подпрограммы

В) Ком. возврата из подпрограмм

2 вида:

  • безусловные команды – выполняются всегда

  • условные ком. – выполняются при истинности усл – ия, указанного в ком.

Условие – это состояние флагов МП.

Условие выполнения команды

Флаг ( признак )

Мнемоника

Равенство 0

Неравенство 0

Перенос

Нет переноса

Нечётность

Чётность

Положительность

Отрицательность

Z =1

Z = 0

CY = 1

CY = 0

P = 0

P = 1

S = 0

S = 1

Z

NZ

C

NC

PE

PO

P

M

Команды перехода:

А ) безусловные: JMP ADR; в РС загружается адрес, указанный в команде:

( PC )  ADR

PCHL ; ( PC )  ( HL )

Б ) условные: Jcond ADR; (где cond – это мнемоника: JZ, JNZ, JC, JNC, JPE, JPO, JP, JM)

1. МП проверяет флаг, котор. указан в усл – е истинно, то ( PC )  ADR;

а если ложно, то команда игнорируется: ( PC )  ( PC ) + 3

Команды вызова подпрограмм:

А ) безусловные

Б ) условные

А. CALL ADR

  1. МП заносит в стек содержимое РС – это будет адрес возврата из подпрограммы – PUSH PC

  2. В PC заносится адрес, указанный в команде – JMP ADR

ADR – это первая команда подпрограммы – 0000Н….FFFFH

RST N N = 0, 1, 2, 3, 4, 5, 6, 7

ADR = N * 8 ( десятичное число )

Команда

Адрес п .п.

RST 0

RST 1

RST 2

RST 3

RST 4

RST 5

RST 6

RST 7

0

8

16

24

32

40

48

56

0000H

0008H

0010H

0018H

0020H

0028H

0030H

0038H

Б. Ccond ADR (где cond – мнемоника условия)

1. проверяется флаг, указанный в команде: если усл – ие истинно, то выполняется вызов п. п. по адресу, указанному в команде ( в стек заносится содержимое РС и в ( РС )  ADR )

  1. если усл –ие ложно, то команда вызова игнорируется:

( PC )  ( PC ) + 3

Команды возврата из п. п. :

А ) безусловные

Б ) условные

А. RET возврат

МП извлекает из вершины стека 16 – разр. число и помещает его в РС, при этом происходит возврат в основную программу:

1. ( РС )  ( SP )

2. ( SP )  ( SP ) + 1

3. ( PCH )  ( SP )

4. ( SP )  ( SP ) + 1

Б. Rcond (где –cond - мнемоника условий)

  1. проверяется флаг МП – если усл – ие истинно, то выполняется команда возврата ( из стека загружается РС – адрес возврата )

  2. если усл – ие ложно, то команда возврата игнорируется:

( PC )  ( PC ) + 1

  1. EI – ком. разрешить прерыван. ( т. е. разрешает МП реагировать на сигналы по входу INT)

EI – вызывает установку внутр. триггера INTE  1 ( т. е. прерывание разрешены )

DI – запрещение прерываний ( т. е. МП не реагирует на запросы прерыв., поступающие на вход INT ), триггер INTE  0

NOP – пустая команда ( не производит никаких действий ) – использ. для выполнения задержек и для лотание дыр в программе.

HLT – останов МП – ША и ШД переходят в Z – сост., т. е. МП отключается от системной шины.

Выход:

– запрос прерывания

- сигнал нач. установки