Приложение 1. Система команд ассемблера HCS08
(Руководство разработчика по микроконтроллерам семейства HCS08)Система команд CPU08 включает 94 команды. Длина кода команды в байтах определяется типом команды и способом адресации. Команды CPU08 могут иметь однобайтный, двухбайтный, трехбайтный и четырехбайтный формат. Однобайтными командами в соответствие с теорией являются команды с неявной адресацией (INH) и с индексной адресацией без смещения (IX). В двухбайтном формате представлены команды с непосредственной (IMM), прямой (DIR) и индексной с однобайтным смещением (IX1) адресацией. Трехбайтный формат имеют команды с прямой расширенной адресацией (EXT), индексной адресацией со смещением на два байта (IX2) и адресацией по указателю стека со смещением на один байт (SP1). Четырехбайтными командами являются только команды с адресацией по указателю стека со смещением в два байта (SP2).
Далее приведен полный перечень команд ассемблера процессорного ядра HCS08. Для каждой команды указан синтаксис записи для каждого из доступных способов адресации. В Ассемблерах от компании Freescale Semiconductor принято шестнадцатеричный код обозначать префиксом $. Поэтому именно это обозначение использовано в колонке «Выполняемое действие». Символ «(» в колонке признаков означает, что данная команда устанавливает отмеченный признак, но значение признака (0 или 1) определяется кодом результата команды.
Команды загрузки и пересылки данных
Мнемокод | Операция | Выполняемое действие | Способ адресации | Влияние на признаки | |||||
---|---|---|---|---|---|---|---|---|---|
V | H | I | N | Z | C | ||||
LDA LDA #opr LDA opr LDA opr LDA opr,x LDA opr,x LDA ,x LDA opr,SP LDA opr,SP | Загрузить в АСС константу или содержимое ячейки памяти | A ( (M) | IMM DIR EXT IX2 IX1 IX SP1 SP2 | 0 | — | — | ( | ( | — |
LDX LDX #opr LDX opr LDX opr LDX opr,x LDX opr,x LDX ,x LDX opr,SP LDX opr,SP | Загрузить в регистр Х константу или содержимое ячейки памяти | X ( (M) | IMM DIR EXT IX2 IX1 IX SP1 SP2 | 0 | — | — | ( | ( | — |
LDHX LDHX #opr LDHX opr LDНX opr LDНX opr,x LDНX opr,x LDНX ,x LDНX opr,SP | Загрузить в индексный регистр Н:X двухбайтную константу или содержимое двух ячеек памяти | H:X ((M:M+$0001) | IMM DIR EXT IX2 IX1 IX SP1 | 0 | — | — | ( | ( | — |
STA STA opr STA opr STA opr,X STA opr,X STA ,X STA opr,SP STA opr,SP | Запомнить содержимое аккумулятора АCC в ячейке памяти | M ( (A) | DIR EXT IX2 IX1 IX SP1 SP2 | 0 | — | — | ( | ( | — |
STX STX opr STX opr STX opr,X STX opr,X STX ,X STX opr,SP STX opr,SP | Запомнить содержимое регистра X в ячейке памяти | M ( (X) | DIR EXT IX2 IX1 IX SP1 SP2 | 0 | — | — | ( | ( | — |
STHX STHX opr STHX opr STНX opr,SP | Запомнить содержимое индексного регистра H:X в двух ячейках памяти | (M:M+$0001) ( (H:X) | DIR EXT SP1 | 0 | — | — | ( | ( | — |
MOV MOV opr1,opr2 MOV #opr1,opr2 MOV opr1,X+ MOV X+,opr2 | Переслать данные из одной ячейки памяти в другую | (M)opr2 ( (M)opr1 H:X ( (H:X)+$0001 в двух последних командах | DIR и DIR IMD и DIR DIR и IX+ IX+ и DIR | 0 | — | — | ( | ( | — |
TAX | Переслать содержимое аккумулятора АСС в регистр Х | X ( (A) | INH | — | — | — | — | — | — |
TXA | Переслать содержимое регистра Х в аккумулятор АСС | A ( (X) | INH | — | — | — | — | — | — |
TAP | Переслать содержимое аккумулятора АСС в регистр признаков CCR | CCR ( (A) | INH | ( | ( | ( | ( | ( | ( |
TPA | Переслать содержимое регистра признаков в аккумулятор АСС | A ( (CCR) | INH | — | — | — | — | — | — |
TSX | Переслать увеличенное на 1 содержимое указателя стека SP в индексный регистр H:X | H:X ( (SP)+$0001 | INH | — | — | — | — | — | — |
TXS | Переслать уменьшенное на 1 содержимое индексного регистра H:X в указатель стека SP | (SP) ( (H:X)–$0001 | INH | — | — | — | — | — | — |
Арифметические команды
Мнемокод | Операция | Выполняемое действие | Способ адресации | Влияние на признаки | |||||
---|---|---|---|---|---|---|---|---|---|
V | H | I | N | Z | C | ||||
ADD ADD #opr ADD opr ADD opr ADD opr,X ADD opr,X ADD ,X ADD opr,SP ADD opr,SP | Сложить содержимое аккумулятора АСС с байтом данных памяти М (или константой). Результат поместить в АСС | A ( (A) + (M) | IMM DIR EXT IX2 IX1 IX SP1 SP2 | ( | ( | — | ( | ( | ( |
ADC ADC #opr ADC opr ADC opr ADC opr,X ADC opr,X ADC ,X ADC opr,SP ADC opr,SP | Сложить содержимое аккумулятора АСС с байтом данных памяти М (или константой) и значением бита переноса С. Результат поместить в АСС | A ( (A) + (M) + (С) | IMM DIR EXT IX2 IX1 IX SP1 SP2 | ( | ( | — | ( | ( | ( |
SUB SUB #opr SUB opr SUB opr SUB opr,X SUB opr,X SUB ,X SUB opr,SP SUB opr,SP | Вычесть байт данных памяти М (или константу) из содержимого аккумулятора АСС. Результат поместить в АСС | A ( (A) – (M) | IMM DIR EXT IX2 IX1 IX SP1 SP2 | ( | — | — | ( | ( | ( |
SBC SBC #opr SBC opr SBC opr SBC opr,X SBC opr,X SBC ,X SBC opr,SP SBC opr,SP | Вычесть байт данных памяти М (или константу) и бит переноса С из аккумулятора АСС. Результат поместить в АСС | A ( (A) – (M) – (С) | IMM DIR EXT IX2 IX1 IX SP1 SP2 | ( | — | — | ( | ( | ( |
MUL | Умножить содержимое АСС на содержимое регистра Х. Произведение представлено в двухбайтном формате. Старший байт содержится в регистре Х, младший байт — в АСС | X:A ( (X) ( (A) | INH | — | 0 | — | — | — | 0 |
DIV | Разделить двухбайтное делимое на однобайтный делитель. Старший байт делимого находится в регистре Н, младший байт — в АСС. Однобайтный делитель находится в регистре Х. Целое частное помещается в АСС, остаток от деления — в регистр Н | A ( (H:A)/(X) H ( Остаток | INH | — | — | — | — | ( | ( |
CMP CMP #opr CMP opr CMP opr CMP opr,X CMP opr,X CMP ,X CMP opr,SP CMP opr,SP | Сравнить содержимое аккумулятора АСС с байтом памяти М (или константой). По результату сравнения установить признаки. Содержимое АСС и ячейки памяти М после операции не изменяется | (A) – (M) | IMM DIR EXT IX2 IX1 IX SP1 SP2 | ( | — | — | ( | ( | ( |
CPX CPX #opr CPX opr CPX opr CPX ,X CPX opr,X CPX opr,X CPX opr,SP CPX opr,SP | Сравнить содержимое регистра Х с байтом памяти М (или константой). По результату сравнения установить признаки. Содержимое регистра Х и ячейки памяти М после операции не изменяется | (Х) – (М) | IMM DIR EXT IX2 IX1 IX SP1 SP2 | ( | — | — | ( | ( | ( |
CPHX CPHX #opr CPHX opr CPHX opr CPНX opr,SP | Сравнить содержимое индексного регистра H:X с двухбайтной константой или содержимым двух ячеек памяти М:М+1. По результату сравнения установить признаки. Содержимое H:X и ячеек памяти после операции не изменяется | (H:X) – (M:M+$0001) | IMM DIR EXT SP1 | ( | — | — | ( | ( | ( |
INC INC opr INCA INCX INC opr,X INC ,X INC opr,SP | Увеличить на 1 содержимое аккумулятора АСС, регистра Х, ячейки памяти М | M ( (M) + $01 A ( (A) + $01 X ( (X) + $01 M ( (M) + $01 M ( (M) + $01 M ( (M) + $01 | DIR INH INH IX1 IX SP1 | ( | — | — | ( | ( | — |
DEC DEC opr DECA DECX DEC opr,X DEC ,X DEC opr,SP | Уменьшить на 1 содержимое аккумулятора АСС, регистра Х, ячейки памяти М | M ( (M) – $01 A ( (A) – $01 X ( (X) – $01 M ( (M) – $01 M ( (M) – $01 M ( (M) – $01 | DIR INH INH IX1 IX SP1 | ( | — | — | ( | ( | — |
DAA | Десятичная коррекция содержимого аккумулятора | (A)10 | INH | — | — | — | ( | ( | ( |
AIX AIX #opr | Сложить содержимое индексного регистра Н:Х с однобайтной константой, представленной в дополнительном коде со знаком. Результат поместить в Н:Х | H:X ( (H:X) + #opr | IMM | — | — | — | — | — | — |
AIS AIS #opr | Сложить содержимое указателя стека SP и однобайтной константой, представленной в дополнительном коде со знаком. Результат поместить в SP | SP ( (SP) + #opr | IMM | — | — | — | — | — | — |
Логические команды
Мнемокод | Операция | Выполняемое действие | Способ адресации | Влияние на признаки | |||||
---|---|---|---|---|---|---|---|---|---|
V | H | I | N | Z | C | ||||
AND AND #opr AND opr AND opr AND opr,X AND opr,X AND ,X AND opr,SP AND opr,SP | Побитовое логическое И над содержимым аккумулятора АСС и байтом данных М. Результат поместить в АСС | A ( (A) & (M) | IMM DIR EXT IX2 IX1 IX SP1 SP2 | 0 | — | — | ( | ( | — |
ORA ORA #opr ORA opr ORA opr ORA opr,X ORA opr,X ORA ,X ORA opr,SP ORA opr,SP | Побитовое логическое ИЛИ над содержимым аккумулятора АСС и байтом данных М. Результат поместить в АСС | A ( (A) ( (M) | IMM DIR EXT IX2 IX1 IX SP1 SP2 | 0 | — | — | ( | ( | — |
EOR EOR #opr EOR opr EOR opr EOR opr,X EOR opr,X EOR ,X EOR opr,SP EOR opr,SP | Побитовое Исключающее ИЛИ над содержимым аккумулятора АСС и байтом данных. Результат поместить в АСС | A ( (A M) | IMM DIR EXT IX2 IX1 IX SP1 SP2 | 0 | — | — | ( | ( | — |
COM COM opr COMA COMX COM opr,X COM ,X COM opr,SP | Инверсия содержимого аккумулятора АСС или регистра Х или ячейки памяти М | M ( (M)=$FF–(M) A ( (A)=$FF–(M) X ( (X)=$FF–(M) M ( (M)=$FF–(M) M ( (M)=$FF–(M) M ( (M)=$FF–(M) | DIR INH INH IX1 IX SP1 | 0 | — | — | ( | ( | 1 |
NEG NEG opr NEGA NEGX NEG opr,X NEG ,X NEG opr,SP | Получение дополнительного кода содержимого аккумулятора АСС или регистра Х или ячейки памяти М | M ( –(M)=$00–(M) A ( –(A)=$00–(A) X ( –(X)=$00–(X) M ( –(M)=$00–(M) M ( –(M)=$00–(M) | DIR INH INH IX1 IX SP1 | ( | — | — | ( | ( | ( |
CLR CLR opr CLRA CLRX CLRH CLR opr,X CLR ,X CLR opr,SP | Очистить (сбросить в 0) аккумулятор АСС или регистр Х или регистр Н или ячейку памяти М | M ( $00 A ( $00 X ( $00 H ( $00 M ( $00 M ( $00 M ( $00 | DIR INH INH INH IX1 IX SP1 | 0 | — | — | 0 | 1 | — |
BIT BIT #opr BIT opr BIT opr BIT opr,X BIT opr,X BIT ,X BIT opr,SP BIT opr,SP | Выполняет операцию побитового логического И над содержимым аккумулятора АСС и байтом памяти М. Результат операции никуда не записывается. По результату операции устанавливаются признаки N и Z | (A) & (M) | IMM DIR EXT IX2 IX1 IX SP1 SP2 | 0 | — | — | ( | ( | — |
TST TST opr TSTA TSTX TST opr,X TST ,X TST opr,SP | Устанавливает признаки N и Z по содержимому аккумулятора АСС или регистра Х или ячейки памяти М. Содержимое последних не изменяется | (A) – $00 (X) – $00 (M) – $00 | DIR INH INH IX1 IX SP1 | 0 | — | — | ( | ( | — |
NSA | Поменять местами тетрады (полубайты) аккумулятора АСС | A ( (A[3:0]:A[7:4]) | INH | — | — | — | — | — | — |
Команды сдвига
Мнемокод | Операция | Выполняемое действие | Способ адресации | Влияние на признаки | |||||
---|---|---|---|---|---|---|---|---|---|
V | H | I | N | Z | C | ||||
ASL ASL opr ASLA ASLX ASL opr,X ASL ,X ASL opr,SP | Арифметический сдвиг влево содержимого аккумулятора ACC или регистра Х или байта памяти М. В бит b0 загружается 0, бит b7 загружается в бит переноса С | DIR INH INH IX1 IX SP1 | ( | — | — | ( | ( | ( | |
ASR ASR opr ASRA ASRX ASR opr,X ASR opr,X ASR opr,SP | Арифметический сдвиг вправо содержимого аккумулятора АCC или регистра Х или байта памяти М. Бит b7 не изменяется, бит b0 загружается в бит переноса С | DIR INH INH IX1 IX SP1 | ( | — | — | ( | ( | ( | |
LSL LSL opr LSLA LSLX LSL opr,X LSL ,X LSL opr,SP | Логический сдвиг влево содержимого аккумулятора АCC или регистра Х или байта памяти М. В бит b0 загружается 0, бит b7 загружается в бит переноса С (аналог ASL) | DIR INH INH IX1 IX SP1 | ( | — | — | ( | ( | ( | |
LSR LSR opr LSRA LSRX LSR opr,X LSR ,X LSR opr,SP | Логический сдвиг вправо содержимого аккумулятора АCC или регистра Х или байта памяти М. В бит b7 загружается 0, бит b0 загружается в бит переноса С | DIR INH INH IX1 IX SP1 | ( | — | — | 0 | ( | ( | |
ROL ROL opr ROLA ROLX ROL opr,X ROL ,X ROL opr,SP | Циклический сдвиг влево содержимого аккумулятора АCC или регистра Х или байта памяти М через бит переноса С | DIR INH INH IX1 IX SP1 | ( | — | — | ( | ( | ( | |
ROR ROR opr RORA RORX ROR opr,X ROR ,X ROR opr,SP | Циклический сдвиг вправо содержимого аккумулятора АCC или регистра Х или байта памяти М через бит переноса С | DIR INH INH IX1 IX SP1 | ( | — | — | ( | ( | ( |
Команды битового процессора
Мнемокод | Операция | Выполняемое действие | Способ адресации | Влияние на признаки | |||||
---|---|---|---|---|---|---|---|---|---|
V | H | I | N | Z | C | ||||
BSET BSET n, opr | Установить в 1 бит с номером n в байте данных. Данные могут располагаться в ячейке ОЗУ или регистре специальных функций. В команде используется только прямая адресация. Диапазон адресов байтов данных $00($FF | Mn ( 1 | DIR (b0) DIR (b1) DIR (b2) DIR (b3) DIR (b4) DIR (b5) DIR (b6) DIR (b7) | — | — | — | — | — | — |
BCLR BCLR n, opr | Сбросить в 0 бит с номером n в байте данных. Данные могут располагаться в ячейке ОЗУ или регистре специальных функций. В команде используется только прямая адресация. Диапазон адресов байтов данных $00($FF | Mn ( 0 | DIR (b0) DIR (b1) DIR (b2) DIR (b3) DIR (b4) DIR (b5) DIR (b6) DIR (b7) | — | — | — | — | — | — |
SEC | Установить бит переноса С в 1 | C ( 1 | INH | — | — | — | — | — | 1 |
CLC | Сбросить бит переноса С в 0 | C ( 0 | INH | — | — | — | — | — | 0 |
SEI | Установить в 1 глобальную маску прерываний I. Запретить прерывания | I ( 1 | INH | — | — | 1 | — | — | — |
CLI | Установить в 0 глобальную маску прерываний I. Разрешить прерывания | I ( 0 | INH | — | — | 0 | — | — | — |
Команды условных и безусловных переходов
Мнемокод | Операция | Выполняемое действие | Способ адресации | Влияние на признаки | |||||
---|---|---|---|---|---|---|---|---|---|
V | H | I | N | Z | C | ||||
Команды безусловного перехода | |||||||||
JMP JMP opr JMP opr JMP opr,X JMP opr,X JMP ,X | Безусловный переход по адресу, указанному в ячейке памяти (ОЗУ или ПЗУ). Адрес ячейки задан используемым в команде способом адресации | PC ( код адреса | DIR EXT IX2 IX1 IX | — | — | — | — | — | — |
BRA BRA rel | Безусловный переход по адресу, код смещения которого указан во втором байте команды | PC ( (PC) + $0002 + rel | REL | — | — | — | — | — | — |
BRN BRN rel | Перейти к следующей команде. Эквивалентна двум командам NOP. Полезна в режиме отладки в абсолютном коде для замены команд условного перехода без изменения абсолютных адресов | PC ( (PC) + $0002 | REL | — | — | — | — | — | — |
NOP | Пустая операция. Счетчик команд PC увеличивается на 1. Другие регистры не изменяются | Нет | INH | — | — | — | — | — | — |
Команды ветвления | |||||||||
BCS BCS rel | Перейти по метке, если бит переноса С установлен. Иначе перейти к следующей команде | PC ( (PC) + $0002 + rel, если (С) = 1 | REL | — | — | — | — | — | — |
BCC BCC rel | Перейти по метке, если бит переноса С сброшен. Иначе перейти к следующей команде | PC ( (PC) + $0002 + rel, если (С) = 0 | REL | — | — | — | — | — | — |
BEQ BEQ rel | Перейти по метке, если r = m. Иначе перейти к следующей команде | PC ( (PC) + $0002 + rel, если (Z) = 1 | REL | — | — | — | — | — | — |
BNE BNE rel | Перейти по метке, если r ( m. Иначе перейти к следующей команде | PC ( (PC) + $0002 + rel, если (Z) = 0 | REL | — | — | — | — | — | — |
BHCS BHCS rel | Перейти по метке, если бит дополнительного переноса H установлен. Иначе перейти к следующей команде | PC ( (PC) + $0002 + rel, если (H) = 1 | REL | — | — | — | — | — | — |
BHCC BHCC rel | Перейти по метке, если бит дополнительного переноса H сброшен. Иначе перейти к следующей команде | PC ( (PC) + $0002 + rel, если (H)=0 | REL | — | — | — | — | — | — |
CBEQ CBEQ opr,rel CBEQA #opr,rel CBEQX #opr,rel CBEQ opr,X+,rel CBEQ X+,rel CBEQ opr,SP,rel | Сравнить содержимое аккумулятора ACC или регистра Х с содержимым ячейки памяти M (или константой) и перейти по метке, если они равны | PC ( (PC)+$0003+rel, если (A)–(M)=$00 PC ( (PC)+$0003+rel, если (A)–(M)=$00 PC ( (PC)+$0003+rel, если (X)–(M)=$00 PC ( (PC)+$0003+rel, если (A)–(M)=$00 PC ( (PC)+$0002+rel, если (A)–(M)=$00 PC ( (PC)+$0004+rel, если (A)–(M)=$00 | DIR IMM IMM IX1+ IX+ SP1 | — | — | — | — | — | — |
DBNZ DBNZ opr,rel DBNZA rel DBNZX rel DBNZ opr,X,rel DBNZ X,rel DBNZ opr,SP,rel | Вычесть единицу из содержимого ячейки памяти M или аккумулятора ACC или регистра X и перейти по метке, если результат не равен 0 | A((A)–$01 или M((M)–$01 или X((X)–$01, PC((PC)+$0003+rel, если (result)(0 для DBNZ DIR и IX1 PC((PC)+$0002+rel если (result)(0 для DBNZA, DBNZX и IX PC((PC)+$0004+rel, если (result) (0 для DBNZ SP1 | DIR INH INH IX1 IX SP1 | — | — | — | — | — | — |
BIH BIH rel | Перейти по метке, если на входе IRQ ВЫСОКИЙ логический уровень. Иначе перейти к следующей команде | PC((PC) + $0002 + rel, если IRQ=1 | REL | — | — | — | — | — | — |
BIL BIL rel | Перейти по метке, если на входе IRQНИЗКИЙ логический уровень. Иначе перейти к следующей команде | PC((PC) + $0002 + rel, если IRQ =0 | REL | — | — | — | — | — | — |
BMS BMS rel | Перейти по метке, если бит маски I установлен. Иначе перейти к следующей команде. Условие: I = 1 | PC((PC) + $0002 + rel, если (I)=1 | REL | — | — | — | — | — | — |
BMC BMC rel | Перейти по метке, если бит маски I сброшен. Иначе перейти к следующей команде. Условие: I = 0 | PC((PC) + $0002 + rel, если (I)=0 | REL | — | — | — | — | — | — |
BRSET BRSET n, opr, rel | Перейти по указанному адресу, если бит n в байте данных установлен. Иначе перейти к следующей команде. Для указания байта данных используется только прямая адресация. Диапазон адресов $00 ( $FF | PC ( (PC) + $0003 + rel, если (Mn) = 1 | DIR (b0) DIR (b1) DIR (b2) DIR (b3) DIR (b4) DIR (b5) DIR (b6) DIR (b7) | — | — | — | — | — | ( |
BRCLR BRCLR n, opr, rel | Перейти по указанному адресу, если бит n в байте данных равен 0. Иначе перейти к следующей команде. Для указания байта данных используется только прямая адресация. Диапазон адресов $00 ( $FF | PC ( (PC) + $0003 + rel, если (Mn) = 0 | DIR (b0) DIR (b1) DIR (b2) DIR (b3) DIR (b4) DIR (b5) DIR (b6) DIR (b7) | — | — | — | — | — | ( |
Команды ветвления при сравнении чисел без знака | |||||||||
BHI BHI rel | Перейти по метке, если r > m. Иначе перейти к следующей команде | PC ( (PC) +$0002 + rel, если (C) & (Z) =0 | REL | — | — | — | — | — | — |
BHS BHS rel | Перейти по метке, если r ( m. Иначе перейти к следующей команде | PC ( (PC) +$0002 + rel, если (C)=0 | REL | — | — | — | — | — | — |
BLO BLO rel | Перейти по метке, если r < m. Иначе перейти к следующей команде | PC ( (PC) +$0002 + rel, если (C)=1 | REL | — | — | — | — | — | — |
BLS BLS rel | Перейти по метке, если r ( m. Иначе перейти к следующей команде | PC ( (PC) +$0002 + rel (C) ( (Z) =1 | REL | — | — | — | — | — | — |
Команды ветвления при сравнении чисел со знаком | |||||||||
BPL BPL rel | Перейти по метке, если бит знака установлен в 0, т.е число положительное. Иначе перейти к следующей команде | PC ( (PC) +$0002 + rel, если (N) =0 | REL | — | — | — | — | — | — |
BMI BMI rel | Перейти по метке, если бит знака установлен в 1, т.е число отрицательное. Иначе перейти к следующей команде | PC ( (PC) +$0002 + rel, если (N) =1 | REL | — | — | — | — | — | — |
BGE BGE rel | Перейти по метке, если r ( m. Иначе перейти к следующей команде | PC ( (PC) +$0002 + rel, если (N ( V)=0 | REL | — | — | — | — | — | — |
BGT BGT rel | Перейти по метке, если r > m. Иначе перейти к следующей команде | PC ( (PC) +$0002 + rel, если (Z) & (N ( V)=0 | REL | — | — | — | — | — | — |
BLE BLE rel | Перейти по метке, если r ( m. Иначе перейти к следующей команде | PC ( (PC) +$0002 + rel, если (Z)( (N(V)=1 | REL | — | — | — | — | — | — |
BLT BLT rel | Перейти по метке, если r < m. Иначе перейти к следующей команде | PC ( (PC)+$0002 + rel, если (N(V)=1 | REL | — | — | — | — | — | — |
Команды работы со стеком вызова подпрограмм и обслуживания прерываний
Мнемокод | Операция | Выполняемое действие | Способ адресации | Влияние на признаки | |||||
---|---|---|---|---|---|---|---|---|---|
V | H | I | N | Z | C | ||||
JSR JSR opr JSR opr JSR opr,X JSR opr,X JSR ,X | Вызов подпрограммы. Адрес подпрограммы хранится в ячейке памяти (ОЗУ или ПЗУ). Адрес ячейки задан используемым в команде способом адресации | PC = PC + n, где n = 1,2,3 в зависимости от способа адресации. (SP) ( PCL SP = SP – 1 (SP) ( PCH SP = SP – 1 PC ( адрес подпрограммы | DIR EXT IX2 IX1 IX | — | — | — | — | — | — |
BSR BSR rel | Вызов подпрограммы, записанной по адресу, код смещения которого указан во втором байте команды | PC = PC +$0002 (SP) ( PCL SP = SP – 1 (SP) ( PCH SP = SP – 1 PC = PC + rel, где rel — код смещения | REL | — | — | — | — | — | — |
CALL CALL page,opr | Вызов подпрограммы, записанной по адресу, который располагается в расширенном адресном пространстве, превышающем 64КБ | PC = PC +$0004 (SP) ( PCL SP = SP – 1 (SP) ( PCH SP = SP – 1 (SP) ( PPAGE SP = SP – 1 PPAGE=page PC = opr | EXT | — | — | — | — | — | — |
SWI | Программное прерывание. Счетчик команд загружается вектором программного прерывания из ячеек памяти $FFFC и $FFFD. Предварительно в стек загружаются регистры в том же порядке, если бы прерывание было вызвано на аппаратном уровне по запросу какого-либо устройства | PC = PC +$0001 (SP) ( PCL SP = SP – 1 (SP) ( PCH SP = SP – 1 (SP) ( X SP = SP – 1 (SP) ( A SP = SP – 1 (SP) ( CCR SP = SP – 1 I = 1, установка глобальной маски прерывания PCH ( ($FFFC) PCH ( ($FFFD) | INH | — | — | 1 | — | — | — |
RTS | Возврат из подпрограммы. Адрес возврата загружается из стека в счетчик команд | SP = SP + 1, PCH ( (SP) SP = SP + 1, PCL ( (SP) | INH | — | — | — | — | — | — |
RTC | Возврат из подпрограммы, которая была вызвана командой CALL | SP = SP + 1, PPAGE ( (SP) SP = SP + 1, PCH ( (SP) SP = SP + 1, PCL ( (SP) | INH | — | — | — | — | — | — |
RTI | Возврат из прерывания. Восстанавливается содержимое регистров CPU и счетчика команд | SP = SP + 1 CCR ( (SP) SP = SP + 1 A ( (SP) SP = SP + 1 X ( (SP) SP = SP + 1 PCH ( (SP) SP = SP + 1 PCL ( (SP) | INH | ( | ( | ( | ( | ( | ( |
RSP | Установить регистр-указатель стека в состояние $FF | SP ( $FF | INH | — | — | — | — | — | — |
PSHA | Загрузить аккумулятор ACC в стек | Push (A); SP ( (SP) – $0001 | INH | — | — | — | — | — | — |
PSHH | Загрузить старший байт индексного регистра H в стек | Push (H); SP ( (SP) – $0001 | INH | — | — | — | — | — | — |
PSHX | Загрузить младший байт индексного регистра X в стек | Push (X); SP ( (SP) – $0001 | INH | — | — | — | — | — | — |
PULA | Восстановить аккумулятор ACC из стека | SP ( (SP+$0001); Pull (A) | INH | — | — | — | — | — | — |
PULH | Восстановить старший байт индексного регистра H из стека | SP ( (SP+$0001); Pull (H) | INH | — | — | — | — | — | — |
PULX | Восстановить младший байт индексного регистра X из стека | SP ( (SP+$0001); Pull (X) | INH | — | — | — | — | — | — |
Команды перехода к режимам пониженного энергопотребления и в режим отладки
Мнемокод | Операция | Выполняемое действие | Способ адресации | Влияние на признаки | |||||
---|---|---|---|---|---|---|---|---|---|
V | H | I | N | Z | C | ||||
WAIT | Переводит МК в режим ожидания (Wait). | Бит I ( 0 | INH | — | — | 0 | — | — | — |
STOP | Переводит МК в режим останова (Stop). | Бит I ( 0; Stop | INH | — | — | 0 | — | — | — |
BKGD | Переводит МК в режим отладки | МК ожидает поступления команд отладки по однопроводному интерфейсу | INH | — | — | 0 | — | — | — |
Электронные компоненты Freescale >>>
Подробнее о компании Freescale >>>