Для лучшего понимания особенностей системы команд микропроцессора воспользуемся программистской моделью МП К580 (рис.2.6), соответствующей упрощенной структуре микропроцессора. Модель содержит только узлы, наиболее важные для понимания программистам процесса работы МП /4, стр.24/.
В верхней части рисунка представлены все программно - доступные (адресуемые в командах в явной или неявной форме) узлы МП и памяти, а в нижней части -- программно - недоступные узлы процессора, наиболее существенные для процесса выполнения команд. К последним относятся АЛУ, управляющее устройство УУ, регистры временного хранения Т, W, Z и регистр адреса памяти РА.
В системе команд МП К580 имеются однобайтные, двухбайтные и трехбайтные команды. Формат команды и тип адресации задаются в команде неявно кодом операции. Адрес команды определяется адресом ее первого байта.
В командах условного перехода 3-разрядный код ССС задает в трехбайтной команде условие передачи управления по адресу, указанному в команде. Возможны задания восьми вариантов условия перехода: по наличию переноса, отсутствию переноса, пулевому, ненулевому, положительному, отрицательному, четному, нечетному результатам.
Систему команд МП можно разделить на группы команд и соответствии с их функциональным назначением. Выделим следующие группы команд:
· пересылки информации;
· арифметических операций;
· логических операции;
· передачи управления;
· специальные.
Система команд МП К580 представлена в таблице 11. В таблице указаны символические мнемонические обозначения (мнемокоды) команд, используемые при написании программ на языке ассемблера МП К580. В основе этих символических обозначении, как правило, лежит аббревиатура от полной записи наименования команды на английском языке. Например, команда «загрузить аккумулятор с прямой адресацией» имеет мнемокод LDА, который представляет собой аббревиатуру от английского load direct accumulator.
Решению проблемы построения достаточно эффективной системы команд при коротком слове микропроцессора способствует использование регистра-аккумулятора с подразумеваемой адресацией для реализации одноадресных и безадресных команд (в последних адрес операнда неявно задается кодом операции). Широко применяется подразумеваемая и укороченная регистровая адресация для обращения к общим и специализированным регистрам блока регистров и регистровая косвенная адресация для задания операнда в оперативной памяти (ОП).
Подробное описание команд дано ниже, где для ряда команд приведены операционные схемы, детально поясняющие процедуры их выполнения, также содержание регистра признаков (табл. 12)
Программистская модель микропроцессора К580 |
ПРИЛОЖЕНИЕ
таблица 11. Система команд МП 580
Группа команд пересылки | ||||||
№ | Мнемокод | Операция | МЦ | МТ | Ф | Изменяемые признаки |
MOV R1, R2 | (R1) Ü (R2) | Все признаки | ||||
XCHG | (HL) Û (DE) | сохраняют свои | ||||
SPHL | (SP) Ü (HL) | значения | ||||
MOV R, M | (R) Ü M (HL) | |||||
MOV M, R | M (HL) Ü (R) | |||||
LDAX RP’ | (A) Ü M (RP) | |||||
STAX RP’ | M (RP) Ü (A) | |||||
LDA A16 | (A) Ü M (A16) | |||||
STA A16 | M (A16) Ü (A) | |||||
LHLD A16 | (HL) Ü M (A16) | |||||
SHLD A16 | M (A16) Ü (HL) | |||||
MVI R, D8 | (R) Ü D8 | |||||
LXI RP, D16 | (RP) Ü D16 | |||||
MVI M, D8 | M (HL) Ü D8 | |||||
PUSH RP’’ | M (SP-1) Ü (RPH) M (SP-2) Ü (RPL) (SP) Ü (SP) - 2 | |||||
POP RP’’ | (RPL) Ü M (SP) (RPH) Ü M (SP+1) (SP) Ü (SP) + 2 | |||||
XTHL | M (SP) Û (H) M (SP-1) Û (L) | |||||
IN PORT | (A) Ü I (PORT) | |||||
OUT PORT | O (PORT) Ü (A) |
Группа команд арифметических операций | |||||||
ADD R | (A) Ü (A) + (R) | S, Z, AC, P, CY | |||||
ADC R | (A) Ü (A) + (R) + CY | S, Z, AC, P, CY | |||||
SUB R | (A) Ü (A) - (R) | S, Z, AC, P, CY | |||||
SBB R | (A) Ü (A) - (R) - CY | S, Z, AC, P, CY | |||||
INR R | (R) Ü (R) + 1 | S, Z, AC, P | |||||
DCR R | (R) Ü (R) - 1 | S, Z, AC, P | |||||
DAD RP | (HL) Ü (HL) + (RP) | CY | |||||
INX RP | (RP) Ü (RP) + 1 | ¾ ¾ ¾ ¾ | |||||
DCX RP | (RP) Ü (RP) - 1 | ¾ ¾ ¾ ¾ | |||||
ADD M | (A) Ü (A) + M (HL) | S, Z, AC, P, CY | |||||
ADC M | (A) Ü (A) + M (HL) +CY | S, Z, AC, P, CY | |||||
SUB M | (A) Ü (A) - M (HL) | S, Z, AC, P, CY | |||||
SBB M | (A) Ü (A) - M (HL) - CY | S, Z, AC, P, CY | |||||
INR M | M (HL) Ü M (HL) + 1 | S, Z, AC, P | |||||
DCR M | M (HL) Ü M (HL) - 1 | S, Z, AC, P | |||||
ADI D8 | (A) Ü (A) + D8 | S, Z, AC, P, CY | |||||
ACI D8 | (A) Ü (A) + D8 + CY | S, Z, AC, P, CY | |||||
SUI D8 | (A) Ü (A) - D8 | S, Z, AC, P, CY | |||||
SBI D8 | (A) Ü (A) - D8 -CY | S, Z, AC, P, CY | |||||
DAA | десятичная коррекция (А) | S, Z, AC, P, CY | |||||
Группа команд логических операций | |||||||
ANA R | (A) Ü (A) AND (R) | S, Z, AC*, P, CY=0 | |||||
XRA R | (A) Ü (A) XOR (R) | S, Z, P, AC = CY = 0 | |||||
ORA R | (A) Ü (A) OR (R) | S, Z, P, AC = CY = 0 | |||||
CMP R | (A) - (R) | S, Z, P, AC, CY | |||||
RLC | Цикл. сдвиг влево | CY Ü A (7), AC = 0 | |||||
RRC | Цикл. сдвиг вправо | CY Ü A (0), AC = 0 | |||||
RAL | Цикл. сдвиг влево через A(0) Ü CY | CY Ü A (7), AC = 0 | |||||
RAR | Цикл. сдвиг вправо через A(7) Ü CY | CY Ü A (0), AC = 0 | |||||
CMA | (A) Ü INV (A) | ¾ ¾ ¾ ¾ | |||||
ANA M | (A) Ü (A) AND M (HL) | S, Z, P, AC, CY = 0 | |||||
XRA M | (A) Ü (A) XOR M (HL) | S, Z, P, AC = CY = 0 | |||||
ORA M | (A) Ü (A) OR M (HL) | S, Z, P, AC = CY = 0 | |||||
CMP M | (A) - M (HL) | S, Z, P, AC, CY | |||||
ANI D8 | (A) Ü (A) AND D8 | S, Z, P, AC*, CY = 0 | |||||
XRI D8 | (A) Ü (A) XOR D8 | S, Z, P, AC = CY = 0 | |||||
ORI D8 | (A) Ü (A) OR D8 | S, Z, P, AC = CY = 0 | |||||
CPI D8 | (A) - D8 | S, Z, P, AC, CY | |||||
CMC | (CY) Ü INV (CY) | CY | |||||
STC | (CY) Ü 1 | CY = 1 | |||||
Группа команд передачи управления | |||||||
PCHL | (PCH) Ü (H) (PCL) Ü (L) | Все признаки сохраняют свои | |||||
JMP A16 | (PC) Ü A16 | значения | |||||
J (COND) A16 | Если условие выполняется, то (PC) Ü A16, иначе (PC) Ü (PC) = 1 | ||||||
CALL A16 | M (SP - 1) Ü (PCH) M (SP - 2) Ü (PCL) (SP) Ü (SP) - 2 (PC) Ü A16 | ¾ | |||||
C (COND) A16 | Если условие выполняется, то см. 62, иначе (PC) Ü (PC) + 1 | ¾ | |||||
RST N | M (SP) Ü (PC) (PC) Ü N*8 | ||||||
RET | (PCL) Ü M (SP) (PCH) Ü M (SP + 1) (SP) Ü (SP) + 2 | ||||||
R (COND) | Если условие выполняется, то см. 65, иначе (PC) Ü (PC) + 1 | ||||||
Группа специальных команд | |||||||
EI | Разрешить прерывание (триггер РПР) Ü 1 | Все признаки сохраняют свои | |||||
DI | Запретить прерывание (триггер РПР) Ü 0 | значения | |||||
HLT | Останов | ||||||
NOP | Пустая операция |
таблица 12. Регистр признаков.
Содержимое регистра признаков | Активные признаки (=1) | S | Z | AC | P | CY | ||||
¾ ¾ ¾ ¾ | S-признак ”знака”; принимает значение старшего | |||||||||
CY | разряда результата | |||||||||
P | ||||||||||
P, CY | Z - признак нуля; если результат = 0, то Z=1, иначе Z=0 | |||||||||
AC | ||||||||||
AC, CY | AC - признак вспомогательного переноса, если есть | |||||||||
AC, P | перенос между тетрадами байта, то АС=1, иначе АС=0 | |||||||||
AC, P, CY | ||||||||||
Z, P | P - признак четности; если число единиц в байте результат | |||||||||
Z, P, CY | четно, то Р=1, иначе Р=0 | |||||||||
Z, AC, P | ||||||||||
Z, AC, P, CY | CY- признак переноса (заема); если при выполнении | |||||||||
S | команды возник перенос из старшего разряда или заем | |||||||||
S, CY | в старший разряд то CY=1, иначе CY=0 | |||||||||
S, P | ||||||||||
S, P, CY | ||||||||||
S, AC | Примечание: Для команд логического умножения признак | |||||||||
S, AC, CY | вспомогательного переноса (АС) принимает значение | |||||||||
S, AC, P | четвертого разряда результата (AC) Ü A (3) | |||||||||
S, AC, P, CY |
*****