Команды управления программой и процессором




Команды управления программой и процессором (табл.5, табл.6). Для управления выполнением программы используются команды безусловного перехода JMP, условных и безусловных ветвлений Bcc, BRCLR, BRSET, BRA, BRN, сравнения с переходом по результату сравнения CBEQ, CBEQA, CBEQX, ветвления к подпрограмме JSR, BSR, возврата из подпрограммы RTS, организации циклов DBNZ, DBNZA, DBNZX, программного прерывания SWI, возврата из прерывания RTI.

Команда JMP загружает в программный счетчик PC адрес следующей команды EA из ячейки памяти, которая выбирается с помощью индексной, индексной со смещением или прямой адресации.

Команды ветвления используют только относительный способ адресации. При этом адрес следующей команды, загружаемый в PC, формируется путем суммирования текущего содержимого PC, увеличенного на 2, и 8-разрядного относительного смещения rel8, которое является числом со знаком. Таким образом, относительная адресация обеспечивает переход к командам, адреса которых находятся в пределах (PC +129)…(PC -126).

Команда BRA (обязательное ветвление) осуществляет безусловное ветвление, то есть эквивалентна команде JMP с относительной адресацией. Команда BRN (отсутствие ветвления) пропускает два байта в выполняемой программе (код команды с байтом смещения rel8), после чего выполняется очередная команда. Таким образом, эта команда эквивалентна команде NOP. Обычно она используется в процессе отладки программы, заменяя команду условного ветвления Bcc, когда необходимо проверить выполнение программы без ветвления.

Таблица 5. Команды управления программой и процессором.

Мнемокод Команда Операция
JMP (opr) Безусловный переход EA ® PC
BRA rel8 Безусловное ветвление PC +2 + rel8 ® PC
BRN rel8 Отсутствие ветвления PC + 2 ® PC
B cc rel8 Условное ветвление PC +2+ rel8 ®PC, если выполняется условие cc
BRCLR n, (opr), rel8 Ветвление при bn = 0 PC +3 + rel8 ® PC, если bn=0
BRSET n, (opr), rel8 Ветвление при bn = 1 PC + 3 + rel8 ® PC, если bn=1
CBEQ (opr), rel8 Сравнение A и M, Ветвление, если они равны A – M, PC + n + rel8 ® PC, если Z= 1
CBEQA #Im, rel8 Сравнение A и Im, Ветвление, если они равны A – Im, PC +3 + rel8 ® PC, если Z = 1
CBEQX #Im, rel8 Сравнение X и Im, ветвление, если они равны X– Im, PC +3 + rel8 ® PC, если Z = 1
DBNZ (opr), rel8 Декремент M и ветвление, если M не равно 0 M-1®M, PC + n + rel8 ® PC, если Z=0
DBNZA rel8 Декремент A и ветвление, если A не равно 0 A-1®A, PC +2 + rel8 ® PC, если Z=0
DBNZX rel8 Декремент X и ветвление, если A не равно 0 X-1®X, PC +2 + rel8 ® PC, если Z=0
JSR (opr) Переход к подпрограмме PC + n ® PC,
    PCl ® (SP), SP - 1 ® SP
    PCh ® (SP), SP - 1 ® SP
    (EA) ® PC
BSR rel8 Ветвление к подпрограмме PC + 2 ® PC
    PCl ® (SP), SP - 1 ® SP
    PCh ® (SP), SP - 1 ® SP
    PC + 2 + rel8 ® PC
RTS Возврат из подпрограммы SP + 1 ® SP, (SP) ® PCh
    SP + 1 ® SP, (SP) ® PCl
SWI Программное прерывание PC + 1 ® PC,
    PCl ® (SP), SP - 1 ® SP
    PCh ® (SP), SP - 1 ® SP
    X ® (SP), SP - 1 ® SP
    A ® (SP), SP - 1 ® SP
    CCR ® (SP), SP - 1 ® SP
    Ve ® (SP), SP - 1 ® SP
RTI Возврат из прерывания SP + 1 ® SP, (SP) ®CCR
    SP + 1 ® SP, (SP) ® A
    SP + 1 ® SP, (SP) ® X
    SP + 1 ® SP, (SP) ® PCh
    SP + 1 ® SP, (SP) ® PCl
RSP Начальная установка SP $00FF ® SP
NOP Отсутствие операций PC + 1 ® PC
WAIT Переход в режим ожидания Остановка процессора, 0 ® I (в CCR)
STOP Переход в режим останова Остановка ГТИ, 0 ® I (в CCR)

 

Команда CBEQ выполняют ветвление при условии равенства операндов, хранящихся в аккумуляторе и адресуемой ячейке памяти. В зависимости от используемого способа адресации памяти команда может содержать n = 2, 3 или 4 байта, поэтому при ее выполнении содержимое PC увеличивается на n. Команды CBEQA, CBEQX осуществляют ветвление при равенстве содержимого регистров A или X значению заданной в команде константе Im.

Команды DBNZ, DBNZA, DBNZX служат для организации программных циклов. Текущее значение счетчика циклов определяется содержимым адресуемой ячейки памяти M (команда DBNZ), аккумулятора (команда DBNZA) или регистра X (команда DBNZX). Команда производит уменьшение текущего значения числа циклов на 1 (декремент) и осуществляют ветвление (возврат) к началу цикла, если результат декремента не равен 0 (заданное количество циклов еще не реализовано). При выполнении команды DBNZ содержимое PC может увеличиваться на величину n = 2, 3 или 4 в зависимости от используемого способа адресации.

Команды перехода и ветвления к подпрограмме JSR, BSR заносят из PC в стек адрес очередной команды программы, а затем загружают в PC новое содержимое. В команде JSR адрес ячейки памяти, из которой загружается новое содержимое PC, определяется с помощью индексной, индексной со смещением или прямой адресации. При этом адрес, загружаемый в стек при выполнении команды JSR, может быть больше адреса этой команды на n = 1, 2 или 3 в зависимости от используемого способа адресации: n = 1 при индексной адресации, n = 2 при индексной адресации с 8-разрядным смещением или 8-разрядной прямой адресации, n = 3 при индексной адресации с 16-разрядным смещением или 16-разрядной прямой адресации. В команде BSR адрес вызываемой подпрограммы определяется с помощью относительной адресации. По команде возврата из подпрограммы RTS из стека выбирается и восстанавливается прежнее содержимое PC.

Команда программного прерывания SWI загружает в стек не только текущее содержимое PC, но и содержимое регистров A, X, CCR. При выполнении этой команды заполняется пять ячеек стека. Команда возврата из прерывания RTI восстанавливает прежнее содержимое регистров A, X, CCR, PC из стека. Отметим, что при выполнении этой команды в стеке не сохраняется содержимое регистра H -старшего байта индексного регистра. Для сохранения содержимого регистра H в начало программы обработки прерывания следует ввести команду PSHH, а в конце этой программы перед командой RTI выполнить команду PULH.

Управление процессором производится с помощью команды RSP, которая устанавливает в регистре SP начальное значение $00FF, команды NOP, не выполняющей каких-либо операций (пропуск байта), и команд WAIT, STOP, переводящих микроконтроллер в энергосберегающие режимы ожидания и останова с разрешением прерывания (установка признака I=0), с помощью которого осуществляется последующий возврат в нормальный режим.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: