Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Система команд ассемблера HCS08.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
63.57 Кб
Скачать

Команды работы со стеком вызова подпрограмм и обслуживания прерываний

Мнемокод

Операция

Выполняемое действие

Способ адресации

Влияние на признаки

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