Набор команд микропроцессора КР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 | 7А | B, D | C, D | 4A | ||||
А, Е | 7В | B, Е | C, Е | 4B | ||||
А, Н | 7С | 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 | 7Е | 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 | [адр.] | 3А |
Циклы: 4. Состояния: 13. Адресация: прямая. Флаги: нет.
STA [адр.] (ПРЯМАЯ ЗАПИСЬ СОДЕРЖИМОГО АККУМУЛЯТОРА В ПАМЯТЬ)
((байт 3) (байт 2)) (А)
Содержимое аккумулятора пересылается в ячейку памяти, адрес которой указан во втором и третьем байтах команды.
Младший байт адреса | |||||||
Старший байт адреса |
STA | [адр.] |
Циклы: 4. Состояния: 13. Адресация: прямая. Флаги: нет.
LHLD [адр.] (ПРЯМАЯ ЗАГРУЗКА H и L)
(L) ((байт 3) (байт 2))
(H) ((байт 3) (байт 2) + 1)
Содержимое ячейки памяти, адрес которой указан во втором и третьем байтах команды, пересылается в регистр L. Содержимое ячейки памяти со следующим адресом ((адр.) + 1) пересылается в регистр Н.
Младший байт адреса | |||||||
Старший байт адреса |
LHLD | [адр.] | 2А |
Циклы: 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 | AЕ |
Циклы: 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.