December 15 2017 04:36:37
Навигация
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации .

Забыли пароль?
Запросите новый здесь.
Команды условных и безусловных переходов
МИКРОКОНТРОЛЛЕРЫ СЕМЕЙСТВА НС08

Команды CBEQ и DBNZ имеют достаточно широкий набор способов адресации (Табл. 3.12).



Табл. 3.12. Команды условных и безусловных переходов

Мнемокод Операция Выполняемое действие Способ адресации Влияние на признаки
V Н I N Z С
КОМАНДЫ БЕЗУСЛОВНОГО ПЕРЕХОДА
JMP
JMP opr
JMP opr
JMP opr,X
JMP opr,X
JMP ,X
Безусловный переход по адресу, указанному в ячейке памяти (ОЗУ или ПЗУ). Адрес ячейки задан используемым в команде способом адресации
PC¬ Jump Address


DIR
EXT
IX2
IX1
IX



-



-



-



-



-



-
BRA
BRA rel
Безусловный переход по адресу, код смещения которого указан во втором байте команды
PC¬(PC)+ $0002+rel

REL


-


-


-


-


-


-
BRN
BRN rel
Перейти к следующей команде. Эквивалентна двум инструкциям NOP. Полезна в режиме отладки в абсолютном коде для замены инструкций условного перехода без изменения абсолютных адресов
PC¬ (PC)+$0002

REL












NOP Пустая операция. Счетчик команд PC увеличивается на 1 . Другие регистры не изменяются None INH


-



-



-



-



-



-
КОМАНДЫ ВЕТВЛЕНИЯ
BCS
BCS rel
Перейти по метке, если бит переноса С установлен. Иначе перейти к следующей команде PC¬(PC)+ $0002+rel-(С) REL

-


-


-


-


-


-
BCC
BCC rel
Перейти по метке, если бит переноса С сброшен. Иначе перейти к следующей команде PC¬(PC)+ $0002+rel-(ØС) REL

-


-


-


-


-


-
BEQ
BEQ rel
Перейти по метке, если r=m. Иначе перейти к следующей команде PC¬(PC)+ $0002+rel-(Z) REL
-

-

-

-

-

-
BNE
BNErel

Перейти по метке, если r¹m. Иначе перейти к следующей команде PC¬(PC)+ $0002+rel-(ØZ) REL
-

-

-

-

-

-
BHCS
BHCS rel
Перейти по метке, если бит дополнительного переноса Н установлен. Иначе перейти к следующей команде PC¬(PC)+ $0002+rel-(H) REL
-

-

-

-

-

-
BHCC
BHCC rel
Перейти по метке, если бит дополнительного переноса Н сброшен. Иначе перейти к следующей команде PC¬(PC)+ $0002+rel-(ØH) REL
-

-

-

-

-

-
CBEQ Сравнить







CBEQ opr.rel содержимое АСС PC¬(PC)+$0003+rel, если (A)-(M)=$00 DIR





CBEQA #opr,rel с содержимым PC¬(PC)+$0003+rel, если (A)-(M)=$00 IMM





CBEQX #opr.rel ячейки памяти М PC¬(PC)+$0003+rel, если (X)-(M)=$00 IMM - - - - - -
CBEQ opr,X+,rel (или константой) PC¬(PC)+$0003+rel, если (A)-(M)=$00 IX1+





CBEQ X+,rel и перейти по метке, PC¬(PC)+$0003+rel, если (A)-(M)=$00 IX+





CBEQ opr,SP,rel если они равны PC¬(PC)+$0003+rel, если (A)-(M)=$00 SP1





DBNZ
DBNZ opr.rel
DBNZA rel
DBNZX rel
DBNZ opr,X,rel
DBNZ X,rel
DBNZ opr,SP,rel
Вычесть единицу из содержимого ячейки памяти М, или аккумулятора АСС, или регистра X и перейти по метке, если результат не равен 0
A¬(A)-$0001
or M-(M)-$01
or X¬(X)-$0001 PC¬(PC)+$0003+rel
if (result)¹0
for DBNZ direct,
IX1 PC¬(PC)+$0002+rel
if (result)¹0 for DBNZA, DBNZX,
or IX PC¬(PC)+$0004+rel
if (result)¹0 for DBNZ SP1

DIR
INH
INH
IX1
IX
SP1



-



-



-



-



-



-
BIH
BIH rel
Перейти по метке, если на входе ØIRQ высокий логический уровень. Иначе перейти к следующей команде PC¬(PC)+ $0002+rel×(ØIRQ) REL


-



-



-



-



-



-
BIL
BIL rel
Перейти по метке, если на входе ØIRQ низкий логический уровень. Иначе перейти к следующей команде PC¬(PC)+ $0002+relH×(IRQ) REL




-



-



-



-



-



-
BMS
BMSrel
Перейти по метке, если бит маски I установлен. Иначе перейти к следующей команде. Условие: I=1 PC¬(PC)+ $0002+rel×(I) REL


-



-



-



-



-



-
BMC
BMC rel
Перейти по метке, если бит маски I сброшен. Иначе перейти к следующей команде Условие: I=0 PC¬(PC)+ $0002+rel×(ØI) REL


-



-



-



-



-



-
BRSET
BRSET n,opr,rel
Перейти по указанному адресу, если бит n в байте данных установлен. Иначе перейти к следующей команде. Для указания байта данных используется только прямая адресация. Диапазон адресов $00...$FF. Бит переноса С устанавливается по значению тестируемого бита PC¬(PC)+ $0003+rel×(Mn) 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) 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)

REL


-


-


-


-


-


-
BHS
BHS rel
Перейти по метке, если r³m. Иначе перейти к следующей команде
PC¬(PC)+$0002+ rel×(ØC)

REL


-


-


-


-


-


-
BLO
BLO rel
Перейти по метке, если r<m. Иначе перейти к следующей команде
PC¬(PC)+$0002+ rel×(C)

REL


-


-


-


-


-


-
BLS
BLS rel
Перейти по метке, если r£m. Иначе перейти к следующей команде
PC¬(PC)+$0002+ rel×[(C)½(Z)]

REL


-


-


-


-


-


-
КОМАНДЫ ВЕТВЛЕНИЯ ПРИ СРАВНЕНИИ ЧИСЕЛ СО ЗНАКОМ
BPL
BPL rel
Перейти по метке, если бит знака установлен в 0, т.е. число положительное. Иначе перейти к следующей команде
PC¬(PC)+$0002+ rel×(ØN)

REL


-


-


-


-


-


-
BMI
BMI rel
Перейти по метке, если бит знака установлен в 1, т. е. число отрицательное. Иначе перейти к следующей команде
PC¬(PC)+$0002+ rel×(N)

REL


-


-


-


-


-


-
ВGЕ
BGE rel
Перейти по метке, если r³m. Иначе перейти к следующей команде
PC¬(PC)+$0002+ rel×[Ø(NÅV)]

REL


-


-


-


-


-


-
BGT
BGT rel
Перейти по метке, если r>m. Иначе перейти к следующей команде
PC¬(PC)+$0002+ rel×[Ø(Z)Ø(NÅV)]

REL


-


-


-


-


-


-
BLE
BLE rel
Перейти по метке, если r£m. Иначе перейти к следующей команде
PC¬(PC)+$0002+ rel×[(Z)½(NÅV)]

REL


-


-


-


-


-


-
BLT
BLT rel
Перейти по метке, если r<m. Иначе перейти к следующей команде
PC¬(PC)+$0002+ rel×[(NÅV)]

REL


-


-


-


-


-


-

Среди команд вызова подпрограмм и обслуживания прерываний следует выделить команду программного немаскируемого прерывания SWI. Механизм программного прерывания позволяет обратиться к какой-либо подпрограмме обработки прерывания по ходу выполнения прикладной программы и воспользоваться подпрограммой обработки прерывания как обычной подпрограммой. Наличие в системе команд инструкции программного прерывания SWI предоставляет такую возможность. Эта команда автоматически загружает в стек регистры CCR, АСС, X и увеличенное на 1 содержимое счетчика команд PC, а затем осуществляет переход по адресу, который указан в ячейках памяти SFFFC и SFFFD сегмента векторов прерывания. Этот адрес может быть начальным адресом подпрограммы прерывания или же находиться внутри нее. При выходе из подпрограммы прерывания команда RTI восстановит содержимое регистров центрального процессора и МК продолжит выполнение прикладной программы с команды, которая была следующей за командой SWI. Таким образом, программисту предоставляется возможность обращения в произвольный момент времени к фрагменту подпрограммы прерывания, который начинается с произвольно выбранной инструкции внутри подпрограммы прерывания, но заканчивается обязательно командой RTI.

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

Мнемокод Операция Выполняемое действие Способ адресации Влияние на признаки




V Н I N Z С
JSR
JSR opr
JSR opr
JSR opr,X
JSR opr,X
JSR ,X
Вызов подпрограммы. Адрес подпрограммы хранится в ячейке памяти (ОЗУ или ПЗУ). Адрес ячейки задан используемым в команде способом адресации РС=РС+n,
где n=1,2,3 в зависимости от способа адресации.
(SP)¬PCL
SP=SP-1
(SP)¬PCH
SP=SP-1
PC¬адрес подпрограммы

DIR
EXT
IX2
IX1
IX



-



-



-



-



-



-
BSR
BSR rel
Вызов подпрограммы, записанной по адресу, код смещения которого указан во втором байте команды РС=РС+002,
(SP)¬PCL
SP=SP-1
(SP)¬PCH
SP=SP-1
PC=PC+Rel,
где Rel - код смещения

REL



-



-



-



-



-



-
SWI Программное прерывание. Счетчик команд загружается вектором программного прерывания из ячеек памяти $FFFC и $FFFD
PC=PC+01
(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

-


-


-


-


-


-
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¬SFF INH
-

-

-

-

-

-
PSHA Загрузить аккумулятор АСС в стек Push(A);
SP¬(SP)-$0001
INH
-

-

-

-

-

-
PSHH Загрузить старший байт индексного регистра Н в стек Push(H);
SP¬(SP)-$0001
INH
-

-

-

-

-

-
PSHX Загрузить младший байт индексного регистра X в стек Push(X);
SP¬(SP)-$0001
INH
-

-

-

-

-

-
PULA Восстановить аккумулятор АСС из стека SP¬(SP+$0001);
Pull (A)
INH
-

-

-

-

-

-
PULH Восстановить старший байт индексного регистра Н из стека SP¬(SP+$0001);
Pull (A)
INH
-

-

-

-

-

-
PULX Восстановить младший байт индексного регистра X из стека SP¬(SP+$0001);
Pull (A)
INH
-

-

-

-

-

-

3.3.6. КОМАНДЫ УПРАВЛЕНИЯ РЕЖИМАМИ ЭНЕРГОПОТРЕБЛЕНИЯ

Команды WAIT и STOP переводят МК в один из режимов пониженного энергопотребления (Табл. 3.14).

Табл. 3.14. Команды перехода к режимам пониженного энергопотребления

Мнемокод Операция Выполняемое действие Способ адресации Влияние на признаки




V Н I N Z C
WAIT Переводит МК в режим ожидания (Wait mode) I bit¬0 INH - - 0 - - -
STOP Переводит МК в режим останова (Stop mode) I bit¬0; Останов генератора INH - - 0 - - -

Комментарии
Нет комментариев.
Добавить комментарий
Пожалуйста, залогиньтесь для добавления комментария.
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, авторизуйтесьили зарегистрируйтесь для голосования.

Нет данных для оценки.

Время загрузки: 0.05 секунд 2,297,611 уникальных посетителей