- •Приложение 1. Система команд ассемблера hcs08
- •Команды загрузки и пересылки данных
- •Арифметические команды
- •Логические команды
- •Команды сдвига
- •Команды битового процессора
- •Команды условных и безусловных переходов
- •Команды работы со стеком вызова подпрограмм и обслуживания прерываний
- •Команды перехода к режимам пониженного энергопотребления и в режим отладки
Команды работы со стеком вызова подпрограмм и обслуживания прерываний
Мнемокод |
Операция |
Выполняемое действие |
Способ адресации |
Влияние на признаки |
|||||
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 |
— |
— |
— |
— |
— |
— |
