Набор команд микропроцессора КР580ИК80А

Все команды микропроцессора КР580ИК80А де­лятся на пять групп.

1. Команды пересылки данных. Осуществляют пересылку данных между регистрами или между памятью и регистрами.

2. Арифметические команды. Пред­назначены для выполнения сложения, вычитания, увеличения или уменьшения содержимого регистров или ячеек па­мяти.

3. Логические команды. Выполняют логические операции "И", "ИЛИ" "исключающее ИЛИ", сравнение, сдвиг и дополнение данных в регистрах и ячейках памяти.

4. Команды условных и безусловных переходов, вызова подпрограмм и возвращения из подпрограмм.

5. Команды ввода/вывода, управ­ления и работы со стеком. Предназначены для выполнения операции ввода/вывода, работы со стеком, управления флагами, разрешения и запрещения прерываний.

Краткие пояснения для описания команд

Микропроцессора КР 580 ИК80А

ü rh – первый (старший) регистр указанной пары;

ü rl – второй (младший) регистр указанной пары;

ü PC – 16-битовый регистр – программный счетчик (обозначения РСН и РСL используется для указания старших и младших 8 бит данного регистра соответственно) ;

ü SP – 16-битовый регистр – указатель стека (обозначения SPH и SPL используются для указания старших и младших 8 бит данного регистра соответственно);

ü rm – бит m регистра r (биты нумеруются от 7 до 0 слева направо);

ü Z – флаг нуля;

ü S – флаг знака;

ü P – флаг четности ;

ü CY – флаг переноса;

ü AC – флаг вспомогательного переноса;

ü ( ) – в скобки заключается содержимое ячейки памяти или регистра;

ü – "Пересылается в";

ü Ù – Логическое "И";

ü " – "Исключающее ИЛИ";

ü Ú – Логическое "ИЛИ";

ü + – Сложение;

ü – – Вычитание с дополнением до 2;

ü ´ – Умножение;

ü « – "Обменивается с";

ü ¾ – Дополнение до 1, т.е. инверсия;

ü n – Номер рестарта от 0 до 7;

ü NNN – Двоичное представление кода рестарта от 000 до 111 /от 0 до 7/.

Команды пересылки

Команды этой группы осуществляют пересылку данных в/из регистр (а) и ячейки памяти и не изменяют состо­яния флагов.

MOV r1, r2 (ПЕРЕСЫЛКА ДАННЫХ ИЗ РЕГИСТРА В РЕГИСТР)

(r1)(r2)

Содержимое регистра r2 пересылается в регистр r1.

D D D S S S
MOV А, А 7F MOV B, А MOV C, А 4F
А, B B, B C, B
А, С B, С C, С
A, D B, D C, D 4A
А, Е B, Е C, Е 4B
А, Н B, Н C, Н 4C
A, L 7D B, L C, L 4D
 
MOV D, А MOV E, А 5F MOV H, А
D, B E, B H, B
D, С E, С H, С
D, D E, D 5A H, D
D, Е E, Е 5B H, Е
D, Н E, Н 5C H, Н
D, L E, L 5D H, L
 
MOV L,А 6F  
L,B
L,С
L,D 6A
L,Е 6B
L,Н 6C
L,L 6D

Циклы:1. Состояния: 4. Адресация: регистровая. Флаги: не используются.

MOV r, M (ПЕРЕСЫЛКА ДАННЫХ ИЗ ПАМЯТИ)

(r)((H) (L))

Содержимое ячейки памяти, адрес которой хранится в регистрах H и L, пересылается в регистр r.

D D D
MOV А, M MOV D, M MOV L, M 6E
B, M E, M 5E  
С, М 4E H, M

Циклы:2. Состояния: 7. Адресация: косвенная регистровая. Флаги: нет.

MOV M, r (ПЕРЕСЫЛКА ДАННЫХ В ПАМЯТЬ)

((H) (L)) (r)

Содержимое регистра r пересылается в ячейку памяти, адрес которой содержится в регистрах H и L.

S S S
MOV M, А MOV M, D MOV M, L
M, B M, Е  
M, С M, Н

Циклы:2. Состояния: 7. Адресация: косвенная регистровая. Флаги: нет.

MVI r (НЕПОСРЕДСТВЕННАЯ ПЕРЕСЫЛКА)

(r) (байт 2)

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

D D D
Данные
MVI А, байт 3E MVI D, байт MVI L, байт 2E
B, байт Е, байт 1E  
С, байт 0E Н, байт

Циклы: 2. Состояния: 7. Адресация: непосредственная. Флаги: нет.

MVI M, байт (НЕПОСРЕДСТВЕННАЯ ПЕРЕСЫЛКА В ПАМЯТЬ)

((H) (L)) (байт 2)

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

Данные
MVI M, байт

Циклы: 3. Состояния: 10. Адресация: непосредственная/косвенная регистровая. Флаги: нет.

LXI rp, 2 байта (НЕПОСРЕДСТВЕННАЯ ЗАГРУЗКА ПАРЫ РЕГИСТРОВ)

(rh) (байт 3)

(rl) (байт 2)

Третий байт команды пересылается в старший регистр (rh) пары регистров, второй – в младший регистр (rl) пары регистров.

R P
Младший байт данных
Старший байт данных


LXI B, 2 байта непосредственная загрузка пары регистров B и C
D, 2 байта непосредственная загрузка пары регистров D и E
H, 2 байта непосредственная загрузка пары регистров H и L
LXI SP, 2 байта непосредственная загрузка указателя стека

Циклы: 3. Состояния: 10. Адресация: непосредственная. Флаги: нет.

LDA [адр.] (ПРЯМАЯ ЗАГРУЗКА АККУМУЛЯТОРА)

(А) ((байт 3) (байт 2))

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

Младший байт адреса
Старший байт адреса
LDA [адр.]

Циклы: 4. Состояния: 13. Адресация: прямая. Флаги: нет.

STA [адр.] (ПРЯМАЯ ЗАПИСЬ СОДЕРЖИМОГО АККУМУЛЯТОРА В ПАМЯТЬ)

((байт 3) (байт 2)) (А)

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

Младший байт адреса
Старший байт адреса
STA [адр.]

Циклы: 4. Состояния: 13. Адресация: прямая. Флаги: нет.

LHLD [адр.] (ПРЯМАЯ ЗАГРУЗКА H и L)

(L) ((байт 3) (байт 2))

(H) ((байт 3) (байт 2) + 1)

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

Младший байт адреса
Старший байт адреса
LHLD [адр.]

Циклы: 5. Состояния: 16. Адресация: прямая. Флаги: нет.

SHLD [адр.] (ПРЯМАЯ ЗАПИСЬ СОДЕРЖИМОГО H, L РЕГИСТРОВ В ПАМЯТЬ)

((байт 3) (байт 2)) (L)

((байт 3) (байт 2) + 1) (H)

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

Младший байт адреса
Старший байт адреса
SHLD [адр.]

Циклы: 5. Состояния: 16. Адресация: прямая. Флаги: нет.

LDAX rp (КОСВЕННАЯ ЗАГРУЗКА АККУМУЛЯТОРА)

(A) ((rp))

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

Примечание. Могут быть указаны только пары регистров rp=B /регистры B и C/ и rp=D /регистры D и E/.

R P
LDAX B 0A
D 1A

Циклы: 2. Состояния: 7. Адресация: косвенная регистровая. Флаги: нет.

STAX rp (КОСВЕННАЯ ЗАПИСЬ СОДЕРЖИМОГО АККУМУЛЯТОРА В ПАМЯТЬ)

((rp)) (A)

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

Примечание. Могут быть указаны только пары регистров rp=B /регистры B и C/ или rp=D /регистры D и E/.

R P
STAX B
D

Циклы: 2. Состояния: 7. Адресация: косвенная регистрация. Флаги: нет.

XCHG (ОБМЕН ДАННЫМИ МЕЖДУ РЕГИСТРАМИ H, L и D, E)

(H) « (D)

(L) « (E)

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

XCHG EB

Циклы: 1. Состояния: 4. Адресация: регистровая. Флаги: нет.

Арифметические команды

Команды этой группы выполняют арифметические операции над данными, находящимися в регистрах и ячейках памяти.

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

Все операции вычитания выполняются через арифметическое дополнение до 2, причем флаг переноса устанавливается в логическую 1, если имеется заем, и сбрасывается, если заема не было.

ADD r (СЛОЖЕНИЕ СОДЕРЖИМОГО АККУМУЛЯТОРА С СОДЕРЖИМЫМ РЕГИСТРА)

(A) (A) + (r)

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

S S S
ADD А ADD D ADD L
B E  
С H

Циклы: 1. Состояния: 4. Адресация: регистровая. Флаги: Z, S, P, CY, AC.

ADD M (СЛОЖЕНИЕ СОДЕРЖИМОГО АККУМУЛЯТОРА С СОДЕРЖИМЫМ ЯЧЕЙКИ ПАМЯТИ)

(A) (A) + ((H) (L))

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

ADD M

Циклы: 2. Состояния: 7. Адресация: косвенная регистровая. Флаги: Z, S, P, CY, AC.

ADI байт (НЕПОСРЕДСТВЕННОЕ СЛОЖЕНИЕ)

(A) (A) + (байт 2)

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

Данные
ADI байт C6

Циклы: 2. Состояния: 7. Адресация: непосредственная. Флаги: Z, S, P, CY, AC.

ADC r (СЛОЖЕНИЕ СОДЕРЖИМОГО АКУМУЛЯТОРА С СОДЕРЖИМЫМ РЕГИСТРА И БИТОМ ФЛАГА ПЕРЕНОСА)

(A) (A) + (r) + (CY)

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

S S S
ADC А 8F ADC D 8A ADC L 8D
B E 8B  
С H 8C

Циклы: 1. Состояния: 4. Адресация: регистровая. Флаги: Z, S, P, CY, AC.

ADC M (СЛОЖЕНИЕ СОДЕРЖИМОГО АКУМУЛЯТОРА С СОДЕРЖИМЫМ ЯЧЕЙКИ ПАМЯТИ И БИТОМ ПЕРЕНОСА)

(A) (A) + ((H) (L)) + (CY)

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

ADC M 8E

Циклы: 2. Состояния: 7. Адресация: косвенная регистровая. Флаги: Z, S, P, CY, AC.

ACI байт (НЕПОСРЕДСТВЕННОЕ СЛОЖЕНИЕ С БИТОМ ПЕРЕНОСА)

(A) (A) + (байт 2) + (CY)

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

Данные
ACI байт CE

Циклы: 2. Состояния: 7. Адресация: непосредственная. Флаги: Z, S, P, CY, AC.

SUB r (ВЫЧИТАНИЕ СОДЕРЖИМОГО РЕГИСТРА)

(A) (A) – (r)

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

S S S
SUB А SUB D SUB L
B E  
С H

Циклы: 1. Состояния: 4. Адресация: регистровая. Флаги: Z, S, P, CY, AC.

SUB M (ВЫЧИТАНИЕ СОДЕРЖИМОГО ЯЧЕЙКИ ПАМЯТИ)

(A) (A) – ((H) (L))

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

SUB M

Циклы: 2. Состояния: 7. Адресация: косвенная регистровая. Флаги: Z, S, P, CY, AC.

SUI байт (НЕПОСРЕДСТВЕННОЕ ВЫЧИТАНИЕ)

(A) (A) – (байт 2)

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

Данные
SUI байт D6

Циклы: 2. Состояния: 7. Адресация: непосредственная. Флаги: Z, S, P, CY, AC.

SBB r (ВЫЧИТАНИЕ СОДЕРЖИМОГО РЕГИСТРА И БИТА ПЕРЕНОСА)

(A) (A) – (r) – (CY)

Содержимое регистра r и бит флага переноса CY вычитаются из содержимого аккумулятора. Результат помещается в аккумулятор.

S S S
SBB А 9F SBB D 9A SBB L 9D
B E 9B  
С H 9C

Циклы: 1. Состояния: 4. Адресация: регистровая. Флаги: Z, S, P, CY, AC.

SBB M (ВЫЧИТАНИЕ СОДЕРЖИМОГО ЯЧЕЙКИ ПАМЯТИ И БИТА ПЕРЕНОСА)

(A) (A) – ((H) (L)) – (CY)

Содержимое ячейки памяти, адрес которой содержится в регистрах H и L, и содержимое бита флага переноса CY вычитаются из содержимого аккумулятора. Результат помещается в аккумулятор.

SBB M 9E

Циклы: 2. Состояния: 7. Адресация: косвенная регистровая. Флаги: Z, S, P, CY, AC.

SBI байт (НЕПОСРЕДСТВЕННОЕ ВЫЧИТАНИЕ С ЗАЕМОМ)

(A) (A) – (байт 2) – (CY)

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

Данные
SBI байт DE

Циклы: 2. Состояния: 7. Адресация: непосредственная. Флаги: Z, S, P, CY, AC.

INR r (УВЕЛИЧЕНИЕ СОДЕРЖИМОГО РЕГИСТРА)

(r) (r) + 1

Содержимое регистра r увеличивается на единицу.

Примечание. Команда влияет на состояние всех флагов, кроме флага переноса CY.

D D D
INR А 3C INR D INR L
B E 1C  
С 0C H

Циклы: 1. Состояния: 4. Адресация: регистровая. Флаги: Z, S, P, AC.

INR M (УВЕЛИЧЕНИЕ СОДЕРЖИМОГО ЯЧЕЙКИ ПАМЯТИ)

((H) (L)) ((H) (L)) + 1

Содержимое ячейки памяти, адрес которой содержится в регистрах H и L, увеличивается на единицу.

Примечание. Команда воздействует на все флаги, кроме флага переноса CY.

INR M

Циклы: 3. Состояния: 10. Адресация: косвенная регистровая. Флаги: Z, S, P, AC.

DCR r (УМЕНЬШЕНИЕ СОДЕРЖИМОГО РЕГИСТРА)

(r) (r) – 1

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

Примечание. Команда воздействует на все флаги, кроме флага переноса CY.

D D D
DCR А 3D DCR D DCR L 2D
B E 1D  
С 0D H

Циклы: 1. Состояния: 4. Адресация: регистровая. Флаги: Z, S, P, AC.

DCR M (УМЕНЬШЕНИЕ СОДЕРЖИМОГО ЯЧЕЙКИ ПАМЯТИ)

((H) (L)) ((H) (L)) – 1

Содержимое ячейки памяти, адрес которой содержится в регистрах H и L, уменьшается на единицу.

Примечание. Команда воздействует на все флаги, кроме флага переноса CY.

DCR M

Циклы: 3. Состояния: 10. Адресация: косвенная регистровая. Флаги: Z, S, P, AC.

INX rp (УВЕЛИЧЕНИЕ СОДЕРЖИМОГО ПАРЫ РЕГИСТРОВ)

(rh) (rl) (rh) (rl) + 1

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

Примечание. Команда не воздействует на флаги.

R P
INX B (пара регистров B и C)
D (пара регистров D и E)
H (пара регистров H и L)
SP (указатель стека)

Циклы: 1. Состояния: 6. Адресация: регистровая. Флаги: нет.

DCX rp (УМЕНЬШЕНИЕ СОДЕРЖИМОГО ПАРЫ РЕГИСТРОВ)

(rh) (rl) (rh) (rl) – 1

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

Примечание. Команда не воздействует на флаги.

R P
DCX B 0B (пара регистров B и C)
D 1B (пара регистров D и E)
H 2B (пара регистров H и L)
SP 3B (указатель стека)

Циклы: 1. Состояния: 6. Адресация: регистровая. Флаги: нет.

DAD rp (СЛОЖЕНИЕ СОДЕРЖИМОГО ПАРЫ РЕГИСТРОВ С СОДЕРЖИМЫМ РЕГИСТРОВ H и L)

(H) (L) (H) (L) + (rh) (rl)

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

Примечание. Используется только флаг CY. Он устанавливается, если имеется перенос при сложении с двойной точностью, в противном случае он сбрасывается.

R P
DAD B (пара регистров B и C)
D (пара регистров D и E)
H (пара регистров H и L)
SP (указатель стека)

Циклы: 3. Состояния: 10. Адресация: регистровая. Флаги: CY.

DAA (ДЕСЯТИЧНОЕ ДОПОЛНЕНИЕ АККУМУЛЯТОРА)

8-битное число в аккумуляторе дополняется до представления в виде 4-битных чисел в двоично-десятичном коде с помощью следующих операций.

1. Если число, представленное четырьмя младшими битами аккумулятора, больше 8 или установлен флаг вспомогательного переноса АС, то к содержимому аккумулятора добавляется 6.

2. Если теперь число, представленное четырьмя старшими битами аккумулятора, больше 9 или установлен флаг переноса CY, то число 6 добавляется к числу, образованному четырьмя старшими битами аккумулятора.

Примечание. Используются все флаги.

DAA

Циклы: 1. Состояния: 4. Флаги: Z, S, P, CY, AC.

Логические команды

Команды этой группы выполняют логические (булевы) операции над данными, хранящимися в регистрах и ячейках памяти и флагами.

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

ANA r (ОПЕРАЦИЯ «И» НАД СОДЕРЖИМЫМ РЕГИСТРА И АККУМУЛЯТОРА)

(A) (A) Ù (r)

Над содержимым регистра r и аккумулятора выполняется операция логическое «И». Результат помещается в аккумулятор. Сбрасывается флаг переноса CY, устанавливается флаг вспомогательного переноса АС.

S S S
ANA А А7 ANA D А2 ANA L А5
B А0 E А3  
С А1 H А4

Циклы: 1. Состояния: 4. Адресация: регистровая. Флаги: Z, S, CY, AC, P.

ANA М (ОПЕРАЦИЯ «И» НАД СОДЕРЖИМЫМ ЯЧЕЙКИ ПАМЯТИ И АККУМУЛЯТОРА)

(A) (A) Ù ((H) (L))

Над содержимым ячейки памяти, адрес которой содержится в регистрах H и L, и содержимым аккумулятора выполняется операция логическая «И». Результат помещается в аккумулятор. Сбрасывается флаг переноса CY и вспомогательного переноса АС.

ANA M A6

Циклы: 2. Состояния: 7. Адресация: косвенная регистровая. Флаги: Z, S, P, AC, CY.

XRI байт (НЕПОСРЕДСТВЕННАЯ ОПЕРАЦИЯ)

(A) (A) Ù (байт 2)

Над содержимым второго байта команды и аккумулятора выполняется операция логическое «И». Результат помещается в аккумулятор. Сбрасываются флаги переноса CY и вспомогательного переноса АС.

Данные
XRI байт Е6

Циклы: 2. Состояния: 7. Адресация: непосредственная. Флаги: Z, S, P, CY, AC.

XRА r (ОПЕРАЦИЯ «ИСКЛЮЧАЮЩЕЕ ИЛИ» НАД СОДЕРЖИМЫМ АККУМУЛЯТОРА И РЕГИСТРА)

(A) (A) Ú (r)

Над содержимым регистра r и аккумулятора выполняется операция «исключающее ИЛИ». Результат помещается в аккумулятор. Сбрасываются флаги переноса CY и вспомогательного переноса АС.

S S S
XRA А АF XRA D АA XRA L АD
B А8 E АB  
С А9 H АC

Циклы: 1. Состояния: 4. Адресация: регистровая. Флаги: Z, S, P, CY, AC.

XRА M (ОПЕРАЦИЯ «ИСКЛЮЧАЮЩЕЕ ИЛИ» НАД СОДЕРЖИМЫМ ЯЧЕЙКИ ПАМЯТИ И АККУМУЛЯТОРА)

(A) (A) Ú ((H) (L))

Над содержимым ячейки памяти, адрес которой содержится в регистрах H и L, и содержимым аккумулятора выполняется операция «исключающее ИЛИ». Результат помещается в аккумулятор. Сбрасываются флаги переноса CY и вспомогательного переноса АС.

XRA M

Циклы: 2. Состояния: 7. Адресация: косвенная регистровая. Флаги: Z, S, P, CY, AC.

XRI байт (НЕПОСРЕДСТВЕННАЯ ОПЕРАЦИЯ «ИСКЛЮЧАЮЩЕЕ ИЛИ»)

(A) (A) Ú (байт 2)

Над содержимым аккумулятора и второго байта команды выполняется операция «исключающее ИЛИ». Результат помещается в аккумулятор. Сбрасываются флаги переноса CY и вспомогательного переноса АС.

Данные
XRI байт ЕЕ

Циклы: 2. Состояния: 7. Адресация: непосредственная. Флаги: Z, S, P, CY, AC.

ORA r (ЛОГИЧЕСКОЕ СЛОЖЕНИЕ («ИЛИ» АККУМУЛЯТОРА С СОДЕРЖИМЫМ РЕГИСТРА)

(A) (A) Ú (r)

Содержимое регистра r логически складывается с содержимым аккумулятора. Результат помещается в аккумулятор. Сбрасываются флаги переноса CY и вспомогательного переноса АС.

S S S
ORA А B7 ORA D B2 ORA L B5
B B0 E B3  
С B1 H B4

Циклы: 1. Состояния: 4. Адресация: регистровая. Флаги: Z, S, P, CY, AC.

ORA M (ЛОГИЧЕСКОЕ СЛОЖЕНИЕ («ИЛИ») СОДЕРЖИМОГО ЯЧЕЙКИ ПАМЯТИ ИЛИ АККУМУЛЯТОРА)

(A) (A) Ú ((H) (L))

Содержимое ячейки памяти, адрес которой определен в регистрах H и L, логически складывается с содержимым аккумулятора. Результат помещается в аккумулятор. Сбрасываются флаги переноса CY и вспомогательного переноса АС.

ORA M B6

Циклы: 2. Состояния: 7. Адресация: косвенная регистровая. Флаги: Z, S, P, CY, AC.

ORI байт (НЕПОСРЕДСТВЕННОЕ ЛОГИЧЕСКОЕ СЛОЖЕНИЕ)

(A) (A) Ú (байт 2)

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

Данные
ORI байт F6

Циклы: 2. Состояния: 7. Адресация: непосредственная. Флаги: Z, S, P, CY, AC.

CMP r (СРАВНЕНИЕ СОДЕРЖИМОГО РЕГИСТРА С СОДЕРЖИМЫМ АККУМУЛЯТОРА)

(A) - (r)

Содержимое регистра r вычитается из содержимого аккумулятора. Аккумулятор не изменяется. По результату вычитания флаги устанавливаются следующим образом: флаг нуля Z – в 1, если (А) = (r); флаг переноса CY – в 1,если (A) < (r).

S S S
CMP А BF CMP D BA CMP L BD
B B8 E BB  
С B9 H BC

Циклы: 1. Состояния: 4. Адресация: регистровая. Флаги: Z, S, P, CY, AC .

CMP M (СРАВНЕНИЕ СОДЕРЖИМОГО ЯЧЕЙКИ ПАМЯТИ С СОДЕРЖИМЫМ АККУМУЛЯТОРА)

(A) - ((H) (L))

Содержимое ячейки памяти, адрес которой определен в регистрах H и L, вычитается из содержимого аккумулятора. Аккумулятор не изменяется. Флаги устанавливаются по результату вычитания следующим образом: флаг нуля Z – в 1, если (А) = ((H) (L)); флаг переноса CY – в 1,если A < ((H) (L)).

CMP M BE

Циклы: 2. Состояния: 7. Адресация: косвенная регистровая. Флаги: Z, P, S, CY, AC.

CPI (байт) (НЕПОСРЕДСТВЕННОЕ СРАВНЕНИЕ)

(A) - (байт 2)

Содержимое второго байта команды вычитается из содержимого аккумулятора. По результату вычитания флаги устанавливаются следующим образом: флаг нуля Z – в 1, если (А) = (байт 2); флаг переноса CY – в 1,если (A) < (байт 2).

Данные
CPI байт FE

Циклы: 2. Состояния: 7. Адресация: непосредственная. Флаги: Z, S, P, CY, AC.

RLC (ЦИКЛИЧЕСКИЙ СДВИГ ВЛЕВО)

(An+1) (An), (A0) (A7), (CY) (A7)

Содержимое аккумулятора сдвигается влево на одну позицию. Содержимое самого старшего бита заносится в младший бит и бит флага переноса. Команда воздействует только на флаг переноса CY.

RLC

Циклы: 1. Состояния: 4. Флаги: CY.

RRC (ЦИКЛИЧЕСКИЙ СДВИГ ВПРАВО)

(An) (An+1), (A7) (A0), (CY) (A0)

Содержимое аккумулятора сдвигается на одну позицию вправо. Содержимое младшего бита заносится в самый старший бит и бит флага переноса. Команда воздействует только на флаг переноса CY.

RRC 0F

Циклы: 1. Состояния: 4. Флаги: CY.

RAL (СДВИГ ВЛЕВО ЧЕРЕЗ ПЕРЕНОС)

(An+1) (An), (CY) (A7), (A0) (CY)

Содержимое аккумулятора сдвигается на одну позицию влево через бит флага переноса CY. Младший бит устанавливается равным флагу переноса, а бит флага переноса CY – равным величине старшего бита аккумулятора. Команда воздействует только на флаг переноса CY.

RAL

Циклы: 1. Состояния: 4. Флаги: CY.

RAR (СДВИГ ВПРАВО ЧЕРЕЗ ПЕРЕНОС)

(An) (An+1), (CY) (A0), (A7) (CY)

Содержимое аккумулятора сдвигается на одну позицию вправо через бит флага переноса. Старший бит аккумулятора устанавливается равным флагу переноса, флаг переноса – равным младшему биту аккумулятора. Используется только флаг переноса CY.

RAR 1F

Циклы: 1. Состояния: 4. Флаги: CY.

CMA (ДОПОЛНЕНИЕ АККУМУЛЯТОРА)

(A) (A)

Содержимое аккумулятора инвертируется (бит, равный 1, становится равным 0; бит, равный 0, становится равным 1). Флаги не используются.

CMA 2F

Циклы: 1. Состояния: 4. Флаги: нет.

CMC (ДОПОЛНЕНИЕ ФЛАГА ПЕРЕНОСА)

CY (CY)

Инвертируется бит флага переноса CY. Другие флаги не используются.

CMC 3F

Циклы: 1. Состояния: 4. Флаги: CY.

STC (УСТАНОВКА ФЛАГА ПЕРЕНОСА)

(CY) 1

Бит флага переноса устанавливается в 1. Другие флаги не используются.

STC

Циклы: 1. Состояния: 4. Флаги: CY.

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

Команды этой группы изменяют нормальное последовательное исполнение программы. Исполнение команд не влияет на состояние флагов.

Имеется два типа команд перехода: безусловные и условные. Безусловные команды перехода осуществляют передачу управления, изменяя значение программного счетчика РС. Команды условного перехода сначала проверяют состояние одного из четырех флагов процессора, чтобы определить, выполнено ли указанное в команде условие. Имеются следующие условия перехода:

Условие Код
NZ – не ноль (Z=0)
Z – ноль (Z=1)
NC – нет переноса (CY=0)
C – есть перенос (CY=1)
РО – нечетный результат (Р=0)
РЕ – четный результат (Р=1)
Р – плюс (S=0)
M – минус (S=1)

JMP [адр.] (ПЕРЕХОД)

(PC) (байт 3) (байт 2)

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

Младший байт адреса
Старший байт адреса
JMP [адр.] C3

Циклы: 3. Состояния: 10. Адресация: непосредственная. Флаги: нет.

J (УСЛОВИЕ) [адр.] (УСЛОВНЫЙ ПЕРЕХОД)

Если (ССС), то(PC) (байт 3) (байт 2)

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

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

С С С
Младший байт адреса
Старший байт адреса
JNZ [адр.] C2 JC [адр.] DA JP [адр.] F2
JZ [адр.] CA JPO [адр.] E2 JM [адр.] FA
JNC [адр.] D2 JPE [адр.] EA  

Циклы: 3. Состояния: 10. Адресация: непосредственная. Флаги: нет.

CALL [адр.] (ВЫЗОВ)

((SP) – 1) (PCH)

((SP) – 2) (PCL)

(SP) (SP) - 2

(PC) (байт 3) (байт 2)

Старшие 8 бит адреса следующей команды пересылаются в ячейку памяти, адрес которой на 1 меньше содержимого указателя стека SP. Младшие 8 бит адреса следующей команды пересылаются в ячейку памяти, адрес которой на 2 меньше величины указателя стека SP. Содержимое указателя стека уменьшается на 2. Управление передается команде, адрес которой указан во втором и третьем байтах команды вызова.

Младший байт адреса
Старший байт адреса
CALL [адр.] CD

Циклы: 5. Состояния: 18. Адресация: непосредственная/косвенная регистровая. Флаги: нет.

(УСЛОВИЕ) (адр.) (УСЛОВНЫЙ ВЫЗОВ)

если (ССС), то ((SP) – 1) (PCH), ((SP) – 2) (PCL), (SP) (SP) – 2, (PC) (байт 3) (байт 2)

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

C C C
Младший байт адреса
Старший байт адреса
CNZ [адр.] C4 CC [адр.] DC CP [адр.] F4
CZ [адр.] CC CPO [адр.] E4 CM [адр.] FC
CNC [адр.] D4 CPE [адр.] EC  

Циклы: 5. Состояния: 18. Адресация: непосредственная/косвенная регистровая. Флаги: нет.

RET (ВОЗВРАТ)

(PCL) ((SP))

(PCH) ((SP) + 1)

(SP) (SP) + 2

Содержимое ячейки памяти, адрес которой содержится в указателе стека SP, пересылается в 8 младших бит программного счетчика PC. Содержимое ячейки памяти, адрес которой на 1 больше содержимого указателя стека, пересылается в 8 старших бит программного счетчика. Содержимое указателя стека увеличивается на 2.

Наши рекомендации