Для лучшего понимания особенностей системы команд микропроцессора воспользуемся программистской моделью МП К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 |
*****