Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по ТСА.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
914.94 Кб
Скачать

2.1.2.2Арифметические и логические команды.

К арифметическим командам относятся: команды сложения и вычитания с учетом (ADD, ADI, SUB и SUI) и без учета (ADC, ACI, SBB и SBI) флага переноса, команды инкрементации и декрементации (INR, DCR, INX и DCX), команда десятичной коррекции аккумулятора (DAA) и команда DAD, выполняющая увеличение регистровой пары HL на величину, содержащуюся в другой регистровой паре (BC или DE).

К логическим командам относятся команды логического И, ИЛИ, исключающего ИЛИ, НЕ; команды сдвига влево и вправо с учетом и без учета переноса; команда инверсии аккумулятора (CMA); команды сравнения (CMP, CPI). Сюда же можно отнести несколько команд изменения содержимого триггера переноса в регистре флагов: STC – установить в единицу триггер переноса; СМС – инвертировать содержимое триггера переноса.

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

Команды передачи управления делятся на три типа: ветвления, обращения к подпрограммам и возврата из подпрограмм. Адреса команд ветвления хранятся за 1-м байтом команды.

Для команд перехода к подпрограммам характерно наличие адресов возврата, хранимых в стеках, а команды возврата из подпрограмм не имеют ассоциированных с ними адресов, они получают адреса возврата из стека.

Каждый из трех видов перехода может быть безусловным и условным в соответствии с одним из двоичных разрядов регистра признаков. Команды JMP, CALL, RET предназначены для осуществления безусловных переходов.

Команда PCHL приводит к тому, что содержимое регистров HL передается в программный счетчик (PC). Это переход на ячейку памяти, указанную парой HL (безусловный переход с косвенной адресацией). Команда RST – команда начального запуска прерывания программы, которая является специально командой перехода, используемой совместно с процедурами прерывания.

Есть и другие команды, относящиеся к данной группе (см. Табл. 0- – Табл. 0-).

2.1.2.4Специальные команды.

К ним относятся команды EI и DI – разрешающие и, соответственно, запрещающие прерывания; NOP – пустая команда, не выполняющая никакой операции, но включаемая в программу для коррекции времени выполнения или последовательности команд и HLT – команда останова.

Все вышеприведенные команды, а также и некоторые неупомянутые другие команды приведены в Табл.  2 .1.

Табл. 2.1. Команды микропроцессора КР580.

Мнемоническое обозначение

Описание команды

2-й или

16-й код

Число тактовых импульсов

Передача, загрузка и хранение

1

MOV r1r2

Передать содержимое одного регистра в другой.

01DDDSSS

5

2

MOV M r

Передать содержимое регистра в память.

01110SSS

7

3

MOV r M

Передать содержимое памяти в регистр.

01DDD110

7

4

MVI r

Загрузить регистр вторым байтом команды.

00DDD110

7

5

MVI M

Загрузить память вторым байтом команды.

00110110

10

6

LXI B

Загрузить пару регистров ВС вторым и третьими байтами команды.

00000001

10

7

LXI D

Загрузить пару регистров DЕ вторым и третьими байтами команды.

00010001

10

8

LXI H

Загрузить пару регистров HL вторым и третьим байтами команды.

00100001

10

9

STAX В

Записать содержимое аккумулятора в память по адресу, указанному в паре регистров ВС.

00000010

7

10

STAX D

Записать содержимое аккумулятора в память по адресу, указанному в паре регистров DE.

00010010

7

11

LDAX В

Загрузить аккумулятор содержимым ячейки, адрес которой указан в паре регистров ВС.

00001010

7

12

LDAX D

Загрузить аккумулятор содержимым ячейки, адрес которой указан в паре регистров DE.

00011010

7

13

STA

Загрузить содержимое аккумулятора в память по адресу, указанному во втором и третьем байтах команды.

00110010

13

14

LDA

Загрузить аккумулятор содержимым ячейки, адрес которой указан во втором и третьем байтах команды.

00111010

13

15

SHILD

Записать в память содержимое пары регистров HL по адресу, указанному во втором и третьем байтах команды.

00100010

16

16

LHLD

Загрузить пару регистров HL содержимым ячейки, адрес которой указан во втором и третьем байтах команды.

00101010

16

17

XCHG

Поменять местами содержимое пар регистров DE и HL.

11101011

4

Операции со стеком

18

PUSH В

Записать содержимое пары регистров ВС в стек.

11000101

11

19

PUSH D

Записать содержимое пары регистров DE в стек.

11010101

11

20

PUSH Н

Записать содержимое пары регистров HL в стек.

11100101

11

21

PUSH PSW

Записать содержимое аккумулятора и регистра признаков в стек.

11110101

11

22

POP В

Загрузить пару регистров ВС из стека.

11000001

10

23

POP D

Загрузить пару регистров DE из стека.

11010001

10

24

POP Н

Загрузить пару регистров HL из стека.

11100001

10

25

POP PSW

Загрузить аккумулятор и регистр признаков из стека.

11110001

10

26

XTHL

Поменять местами содержимое верхней ячейки стека и пары регистров HL.

11100011

18

27

SPHL

Передать содержимое пары регистров HL в указатель стека.

11111001

5

28

LXI SP

Загрузить указатель стека вторым и третьими байтами команды.

00110001

10

29

INX SP

Увеличить на 1 содержимое указателя стека.

00110011

5

30

DCX SP

Уменьшить на 1 содержимое указателя стека.

00111011

5

Переходы

31

JMP

Безусловный переход.

11000011

10

32

JC

Условный переход по единице триггера переноса.

11011010

10

33

JNC

Условный переход по нулевому значению триггера переноса.

11010010

10

34

JZ

Условный переход по нулевому значению результата.

11001010

10

35

JNZ

Условный переход по ненулевому значению результата.

11000010

10

36

JP

Условный переход по положительному значению результата.

11110010

10

37

JM

Условный переход по отрицательному значению результата.

11111010

10

38

JPE

Условный переход по четности кода результата.

11101010

10

39

JPO

Условный переход по нечетности кода результата.

11100011

10

40

PCHL

Передать содержимое пары регистров HL в программный счетчик.

11101001

5

Вызовы

41

CALL

Безусловный переход к подпрограмме.

11001101

17

42

СС

Переход к подпрограмме по единичному значению триггера переноса.

11011100

11/17

43

CNC

Переход к подпрограмме по нулевому значению результата.

11010100

11/17

44

CZ

Переход к подпрограмме по нулевому значению результата.

11001100

11/17

45

CNZ

Переход к подпрограмме по ненулевому значению результата.

11000100

11/17

46

СР

Переход к подпрограмме по положительному значению результата.

11110100

11/17

47

СМ

Переход к подпрограмме по отрицательному значению результата.

11111100

11/17

48

СРЕ

Переход к подпрограмме по четности кода результата.

11101100

11/17

49

СРО

Переход к подпрограмме по нечетности кода результата.

11100100

11/17

Возвраты

50

RET

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

11001001

10

51

RC

Условный возврат из подпрограммы по единичному значению триггера переноса.

11011000

5/11

52

RNC

Условный возврат из подпрограммы по нулевому значению триггера переноса.

11010000

5/11

53

RZ

Условный возврат из подпрограммы по нулевому значению результата.

11001000

5/11

54

RNZ

Условный возврат из подпрограммы по ненулевому значению результата.

11000000

5/11

55

RP

Условный возврат из подпрограммы по положительному значению результата.

11110000

5/11

56

RM

Условный возврат из подпрограммы по отрицательному значению результата.

11111000

5/11

57

RPE

Условный возврат из подпрограммы по четности кода результата.

11101000

5/11

58

RPO

Условный возврат из подпрограммы по нечетности кода результата.

11100000

5/11

Рестарт

59

RST

Начальный запуск прерывающей программы.

11ААА111

11

Увеличение и уменьшение.

60

INR

Увеличить содержимое регистра на единицу.

00DDD100

5

61

DCR

Уменьшить содержимое регистра на единицу.

00DDD101

5

62

INR M

Увеличить содержимое памяти на единицу.

00110100

10

63

DCR М

Уменьшить содержимое памяти на единицу.

00110101

10

64

INX B

Увеличить на единицу содержимое пары регистров ВС.

00000011

5

65

INX D

Увеличить на единицу содержимое пары регистров DE.

00010011

5

66

INX H

Увеличить на единицу содержимое пары регистров HL.

00100011

5

67

DCX B

Уменьшить на единицу содержимое пары регистров BC.

00001011

5

68

DCX D

Уменьшить на единицу содержимое пары регистров DE.

00011011

5

69

DCX H

Уменьшить на единицу содержимое пары регистров HL.

00101011

5

Сложение

70

ADD

К содержимому аккумулятора прибавить содержимое регистра.

10000SSS

4

71

ADC

К содержимому аккумулятора прибавить содержимое регистра и триггера переноса.

10001SSS

4

72

ADD M

К содержимому аккумулятора прибавить содержимое памяти.

10000110

7

73

ADC M

К содержимому аккумулятора прибавить содержимое памяти и триггера переноса.

11000110

7

74

ADI

К содержимому аккумулятора прибавить второй байт команды.

11000110

7

75

ACI

К содержимому аккумулятора прибавить второй байт команды и содержимое триггера переноса.

11001110

7

76

DAD B

К содержимому пары регистров HL прибавить содержимое пары регистров ВС.

00001001

10

77

DAD D

К содержимому пары регистров HL прибавить содержимое пары регистров DE.

00011001

10

78

DAD H

К содержимому пары регистров HL прибавить содержимое пары регистров DE.

00101001

10

79

DAD SP

К содержимому пары регистров HL прибавить содержимое указателя стека.

00111001

10