Список команд микропроцессора КР580вм80а. Аббревиатуры команд, используемые для написания программ на языке АССЕМБЛЕРА, страница 2

S - знак. Устанавливается в 1 при отрицательном результате операции;

Z - ноль. Устанавливается в 1 при нулевом результате операции;

AC - вспомогательный перенос. Устанавливается в единицу, если в результате операции есть перенос из разряда D3 в разряд D4;

P - паритет. Устанавливается в 1, если в полученном результате (двоичное число) четное число единиц;

C - перенос. Устанавливается в 1, если в результате операции имеет место перенос из старшего разряда.

Знак «+» в данной графе говорит о том, что команда воздействует на соответствующий признак. Знак «-», как и отсутствие каких-либо знаков, говорит о том, что при выполнении команды соответствующий признак не изменяется. Единица или ноль в этой графе говорят о том, что в результате выполнения команды данный признак устанавливаются соответственно в 1 или в 0.

9.   Сноски у отдельных команд показывают, к какому пункту данных пояснений обратиться в случае возникновения затруднений.

Список команд микропроцессора КР580ВМ80А

Операция

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

Байтов

Циклов

Тактов

Двоичный код

Признаки

Z

S

P

C

CA

Группа команд пересылки данных

MOV r1,r2

Содержимое регистра r2 передать в регистр r1 5)

1

1

5

01DD DSSS

MOV M,r

Содержимое регистра r передать в ячейку памяти, адресуемую регистровой парой Н 5)

1

2

7

0111 0SSS

MVI r,data

Содержимое второго байта команды передать в регистр r 5)

2

2

7

00DD D110

MVI М,data

Содержимое второго байта команды передать в ячейку памяти, адресуемую регистровой парой Н

2

3

10

0011 0110

LXI rp, data 16

В регистровую пару rp передать второй (в младший регистр пары) и третий (в старший регистр) байты команды 6)

3

3

10

00RP 0001

LDA addr

Содержимое ячейки памяти, адресуемой вторым (младшая тетрада) и третьим (старшая тетрада) байтами команды, передать в аккумулятор

3

4

13

0011 1010

STA addr

Содержимое аккумулятора передать в ячейку памяти, адресуемую вторым (младшая тетрада) и третьим (старшая тетрада) байтами

3

4

13

0011 0010

LHLD addr

Содержимое ячейки памяти, адресуемой вторым (младшая тетрада) и третьим (старшая тетрада) байтами команды передать в регистр L. Содержимое ячейки памяти по следующему адресу передать в регистр H

3

5

16

0010 1010

SHLD addr

Содержимое регистра L передать в ячейку памяти, адресуемую вторым (младшая тетрада) и третьим (старшая тетрада) байтами команды. Содержимое регистра Н передать в ячейку по следующему адресу

3

5

16

0010 0010

LDAX rp

Содержимое ячейки памяти, адресуемой регистровой парой rp передать в аккумулятор (используются только регистровые пары B и D) 6)

1

2

7

00RP 1010

STAX rp

Содержимое аккумулятора передать в ячейку памяти, адресуемую регистровой парой rp 6)

1

2

7

00RP 0010

XCHG

Содержимое регистров H и L  взаимно обменять с содержимым регистров D и E

1

1

4

1110 1011

Группа команд арифметических операций

ADD r

Сложить содержимое аккумулятора с содержимым регистра r. Результат поместить в аккумулятор 5)

1

1

4

1000 0SSS

+

+

+

+

+

ADD M

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

1

2

7

1000 0110

+

+

+

+

+

ADI data

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

2

2

7

1100 0110

+

+

+

+

+

ADC r

Сложить содержимое аккумулятора, регистра r и значение признака переноса С. Результат поместить в аккумулятор 5)

1

1

4

1000 1SSS

+

+

+

+

+

ADC M

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

1

2

7

1000 1110

+

+

+

+

+

ACI data

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

2

2

7

1100 1110

+

+

+

+

+

SUB r

Из содержимого аккумулятора вы-честь содержимое регистра r. Ре-зультат поместить в аккумулятор 5)

1

1

4

1001 0SSS

+

+

+

+

+

SUB M

Из содержимого аккумулятора вы-честь содержимое ячейки памяти, адресуемой регистровой парой Н. Результат поместить в аккумулятор

1

2

7

1001 0110

+

+

+

+

+

SUI data

Из содержимого аккумулятора вы-честь содержимое второго байта команды. Результат поместить в аккумулятор

2

2

7

1101 0110

+

+

+

+

+

SBB r

Из содержимого аккумулятора вы-честь содержимое регистра r и значение займа из разряда С. Ре-зультат поместить в аккумулятор 5)

1

1

4

1001 1SSS

+

+

+

+

+

SBB M

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

1

2

7

1001 1110

+

+

+

+

+

SBI data

Из содержимого аккумулятора вы-честь содержимое второго байта команды и значение займа из разряда С. Результат поместить в аккумулятор

2

2

7

1101 1110

+

+

+

+

+

INR r

Инкрементировать (увеличить на 1) содержимое регистра r 5)

1

1

5

00DD D100

+

+

+

-

+

INR M

Инкрементировать (увеличить на 1) содержимое ячейки памяти, адресуемой регистровой парой Н

1

3

10

0011 0100

+

+

+

-

+

DCR r

Декрементировать (уменьшить на 1) содержимое регистра r 5)

1

1

5

00DD D101

+

+

+

-

+

DCR M

Декрементировать (уменьшить на 1) содержимое ячейки памяти, адресуемой регистровой парой Н

1

3

10

0011 0101

+

+

+

-

+

INX rp

Инкрементировать (увеличить на 1) содержимое регистровой пары rp 6)

1

1

5

00RP 0011

DCX rp

Декрементировать (уменьшить на 1) содержимое регистровой пары rp 6)

1

1

5

00RP 1011

DAD rp

Сложить содержимое регистровых пар Н и rp. Результат поместить в регистровую пару Н. (Признак С, устанавливается в 1 в случае переноса при суммировании с двойной точностью; в остальных случаях он равен 0) 6)

1

3

10

00RP 1001

-

-

-

+

-

DAA

Преобразование числа из двоичного кода в число в двоично-десятичном коде

1

1

4

0010 0111

+

+

+

+

+

Группа команд логических операций

ANA r

Логическое И над содержимым аккумулятора и регистра r. Результат поместить в аккумулятор 5)

1

1

4

1010 0SSS

+

+

+

0

0

ANA M

Логическое И над содержимым ак-кумулятора и ячейки памяти, адре-суемой регистровой парой Н. Ре-зультат поместить в аккумулятор

1

2

7

1010 0110

+

+

+

0

0

ANI data

Логическое И над содержимым аккумулятора и второго байта команды. Результат поместить в аккумулятор

2

2

7

1110 0110

+

+

+

0

0

XRA r

ИСКЛЮЧАЮЩЕЕ ИЛИ над со-держимым аккумулятора и регистра r. Результат поместить в аккумулятор 5)

1

1

4

1010 1SSS

+

+

+

0

0

XRA M

ИСКЛЮЧАЮЩЕЕ ИЛИ над со-держимым аккумулятора и ячейки памяти, адресуемой регистровой парой Н. Результат поместить в аккумулятор

1

2

7

1010 1110

+

+

+

0

0

XRI data

ИСКЛЮЧАЮЩЕЕ ИЛИ над со-держимым аккумулятора и второго байта команды. Результат поместить в аккумулятор

2

2

7

1110 1110

+

+

+

0

0

ORA r

Логическое ИЛИ над содержимым аккумулятора и регистра r. Результат поместить в аккумулятор

1

1

4

1011 0SSS

+

+

+

0

0

ORA M

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

1

2

7

1011 0110

+

+

+

0

0

ORI data

Логическое ИЛИ над содержимым аккумулятора и второго байта команды. Результат поместить в аккумулятор

2

2

7

1111 0110

+

+

+

0

0

CMP r

Сравнение. Содержимое регистра r вычитается из содержимого аккумулятора. Содержимое аккумулятора не изменяется. Признак Z = 1, если (А) = (r). Признак С = 1, если (А) < (r) 5)

1

1

4

1011 1SSS

+

+

+

+

+

CMP M

Сравнение. Содержимое ячейки памяти, адресуемой регистровой парой Н вычесть из содержимого аккумулятора. Содержимое аккумулятора не изменяется. Признак Z = 1, если (А) = (М). Признак С = 1, если (А) < (M)

1

2

7

1011 1110

+

+

+

+

+

CPI data

Сравнение. Содержимое второго байта команды вычитается из содержимого аккумулятора. Содержимое аккумулятора не изменяется. Признак Z = 1, если (А) = (byte 2). Признак С = 1, если A < (byte 2)

2

2

7

1111 1110

+

+

+

+

+

RLC

Содержимое аккумулятора цикли-чески сдвигается на один разряд влево. Содержимое старшего раз-ряда аккумулятора помещается в младший разряд и в разряд С регистра признаков

1

1

4

0000 0111

-

-

-

+

-


RRC

Содержимое аккумулятора цикли-чески сдвигается на один разряд вправо. Содержимое младшего разряда аккумулятора передается в старший разряд и в разряд С регистра признаков

1

1

4

0000 1111

-

-

-

+

-

RAL

Cодержимое аккумулятора цикли-чески сдвинуть на один разряд влево через разряд С регистра признаков. Содержимое старшего разряда аккумулятора передается в разряд С, а содержимое разряда С передается в младший разряд аккумулятора

1

1

4

0001 0111

-

-

-

+

-

RAR

Содержимое аккумулятора цикли-чески сдвинуть на один разряд вправо через разряд С регистра признаков. Содержимое младшего разряда аккумулятора передается в разряд С. Содержимое разряда С передается в старший разряд аккумулятора

1

1

4

0001 1111

-

-

-

+

-

CMA

Инвертировать содержимое аккумулятора (нули становятся единицами, единицы - нулями)

1

1

4

0010 1111

CMC

Инвертировать значение разряда С регистра признаков

1

1

4

0011 1111

Группа команд передачи управления

JMP addr

Безусловный переход по адресу, указанному во втором (младшая тетрада) и третьем (старшая тетрада) байтах команды.

3

10

1100 0011

J condition addr

Переход по адресу, указанному во втором (младшая тетрада) и третьем (старшая тетрада) байтах команды, если условие выполняется; в противном случае продолжается выполнение программы 7)

3

3

10

11СС С010

CALL addr

Безусловный переход к подпрограмме, адрес начала которой указан во втором (младшая тетрада) и третьем (старшая тетрада) байтах команды

3

5

17

1100 1101

CALL condition addr

Если условие выполняется, то переход к подпрограмме (см. Команду выше); в противном случае продолжается выполнение основной программы 7), 3)

3

3

5

11

17

11СС С100

RET

Безусловный возврат из подпрограммы

1

3

10

1100 1001

R condition

Возврат из подпрограммы, если условие выполняется; в противном случае продолжается выполнение подпрограммы 3,7)

1

1

3

5

11

11СС С000

RST n

Переход к началу программы обработки прерывания по вектору NNN. Адрес очередной команды основной программы сохраняется в стеке. Адрес первой команды программы прерывания определяется как 0000 0000 00NN N00

1

3

11

11NN N111

PCHL

Содержимое регистровой пары Н занести в счетчик команд

1

1

5

1110 1001

Команды управления стеком, вводом-выводом и состояниями микропроцессора

PUSH rp

Содержимое регистровой пары rp сохранить в стеке (регистровая пара SP не может быть использована в данной команде) 6)

1

3

11

11RP 0101

PUSH rp

Содержимое регистровой пары rp сохранить в стеке (регистровая пара SP не может быть использована в данной команде) 6)

1

3

11

11RP 0101

PUSH PSW

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

1

3

11

1111 0101

POP rp

Вывод из стека в регистровую пару rp (регистровая пара SP не может быть использована в данной команде) 6)

1

3

10

11RP 0001

POP PSW

Вывод из стека слова состояния микропроцессора (в аккумулятор и в регистр признаков)

1

3

10

1111 0001

XTHL

Содержимое регистра L обменять с содержимым ячейки памяти, адресуемой указателем стека SP. Содержимое регистра Н обменять с содержимым следующей ячейки памяти

1

5

18

1110 0011

SPHL

Содержимое регистровой пары Н занести в указатель стека SP

1

1

5

1111 1001

IN port

Данные из порта ввода, адресуемого вторым байтом команды, ввести в аккумулятор

2

3

10

1101 1011

OUT port

Данные из аккумулятора выдать в порт вывода, адресуемый вторым байтом команды

2

3

10

1101 0011

EI

Прерывания разрешены после выполнения следующей команды

1

1

4

1111 1011

DI

Прерывания запрещены непосредственно после выполнения данной команды

1

1

4

1111 0011

HLT

Останов. Процессор остановлен. Содержимое регистров и признаков не изменяется

1

1

4

0111 0110

NOP

Пустая операция. Содержимое ре-гистров и признаков не изменяется

1

1

4

0000 0000