Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Процессорный модуль CPU08



Процессорный модуль CPU08, используемый в микроконтроллерах семейства 68HC08, выполняет набор из 90 команд с использованием 9 способов адресации.

Регистровая модель. Процессорный модуль CPU08 (рис.3) содержит 8-разрядные аккумулятор A и регистр признаков CCR, 16-разрядные индексный регистр H:X, указатель стека SP и программный счетчик PC.

  7 0   Аккумулятор A
  A
15 8 7 0  
Н Х Индексный регистр Н:Х
15 0  
РС Программный счетчик PC
15 0  
SP Указатель стека SP
                   
  V     H I N Z C Регистр признаков CCR
                     

Рис.3. Регистровая модель процессора CPU08

Регистр CCR содержит значения следующих признаков:

C - признак переноса (принимает значение C=1 при возникновении переноса из старшего разряда результата);

Z - признак нуля (принимает значение Z=1 при нулевом результате);

N - признак знака (равен старшему разряду результата, при обработке чисел со знаком имеет значения N=0 при положительном результате, N=1 при отрицательном результате);

I - маска прерывания (при значении I=0 обработка прерываний разрешается, при I=1 – запрещается);

H - признак переноса между тетрадами (используется при операциях над двоично-десятичными числами).

V – признак переполнения при обработке чисел со знаком (принимает значение V=1, когда результат выходит за границы диапазона чисел +127…-128).

Программный счетчик PC содержит адрес очередной выполняемой команды.. Максимальный объем адресуемой памяти для семейства 68HC08/908 составляет 64 Кбайт, при этом модели с меньшим размером памяти используют только часть адресуемого пространства. Адресное пространство таких микроконтроллеров имеет неиспользуемые окна (см. раздел 7). При обращении к этим окнам модуль SIM08 реализует перезапуск микроконтроллера, указывающий на наличие ошибки в программе – обращение к несуществующей ячейке памяти.. При запуске и перезапуске микроконтроллера (процедура RESET) в PC автоматически загружается адрес первой команды выполняемой программы (вектор начального запуска) из двух последних ячеек адресуемой памяти с адресами $FFFE-FFFF (старший байт PCh – младший байт PCl).

Указатель стека SP служит для адресации ячейки ОЗУ, являющейся вершиной стека. При запуске микроконтроллера (процедура RESET) в SP автоматически загружается значение $00FF, обеспечивая возможность использования в качестве стека ячеек ОЗУ и регистров, имеющих адреса в диапазоне $0000-FF. При дальнейшей работе процессора в качестве вершины стека может быть использована любая позиция адресуемой памяти в пределах имеющегося в данной модели ОЗУ данных.

Способы адресации. Микроконтроллер выполняет набор операций над операндами, размещенными в регистрах A, X и памяти. Команды имеют длину от 1 до 3 байтов: первый байт содержит код операции, второй и третий байты обеспечивают адресацию операнда. Для выборки операнда используются следующие способы адресации:

- регистровая (операнд располагается в регистре A или X);

- индексная (адресом операнда служит содержимое регистра H:X);

- индексная со смещением (адрес операнда образуется сложением содержимого регистра H:X и 8- или 16-разрядного смещения, заданного во втором и третьем байте команды);

- индексная с пост-инкрементом (используется только в командах MOV и CBEQ - адресом операнда служит содержимое регистра H:X, которое после выполнения команды автоматически увеличивается на 1);

- индексная со смещением и пост-инкрементом (используется только в команде CBEQ - адрес операнда образуется сложением содержимого регистра H:X и 8-разрядного смещения, заданного во втором и третьем байте команды, после выполнения команды содержимое регистра H:X автоматически увеличивается на 1);

- индексная по указателю стека со смещением (адрес операнда образуется сложением содержимого регистра SP и 8- или 16-разрядного смещения, заданного во втором и третьем байте команды);

- прямая (8- или 16-разрядный адрес операнда задается во втором и третьем байте команды);

- непосредственная (8-разрядный операнд содержится во втором байте команды);

- относительная (используется только в командах ветвления - адрес команды образуется сложением текущего содержимого PC и заданного во втором байте команды 8-разрядного смещения, которое является числом со знаком).

При прямой адресации с 8-разрядным адресом обращение возможно только к 256 начальным позициям адресного пространства (см. рис.7), в котором располагаются регистры интерфейсных и периферийных модулей и часть ОЗУ. При индексной адресации смещение является числом без знака. Индексная адресация и прямая адресация с 16-разрядным адресом позволяют обращаться к любой позиции адресного пространства, однако при этом необходимо, чтобы значение адреса не превышало $FFFF. При относительной адресации возможен переход к командам, расположенным в пределах 127 позиций ниже или выше очередной команды программы.

Система команд. Выполняемые микроконтроллером команды делятся на группы команд пересылки, арифметических и логических операций, сдвигов, битовых операций и установки признаков, управления программой и процессором. Ниже описывается реализация этих команд, в приведенных таблицах даются их мнемокоды. В набор команд входят безадресные и одноадресные команды. Регистровая адресация задается указанием имени соответствующего регистра A, X в мнемокоде команды, поэтому команды с такой адресацией являются безадресными. В одноадресных командах задается адрес используемого операнда или размещения результата. В таблицах после мнемокода этих команд указывается символ (opr), который при записи на языке Ассемблера заменяется символом, определяющим способ адресации:

$addr8 или $addr16 – 8- или 16-разрядное значение адреса в шестнадцатиричной форме при прямой адресации;

X – при индексной адресации;

X+ - при индексной адресации с пост-инкрементом;

d8, X или d16, X – при индексной адресации со смещением (d8, d16 – 8- или 16-разрядное смещение);

d8, X+ - при индексной адресации с пост-инкрементом и смещением (d8 – 8-разрядное смещение);

d8, SP или d16, SP – при индексной адресации по указателю стека со смещением (d8, d16 – 8- или 16-разрядное смещение).

Адресуемый таким образом операнд, выбираемый из ячейки памяти, обозначается символом M. При непосредственной адресации вместо символа (opr) записывается #Im - значение операнда Im с префиксом #.

Команды пересылки (табл.3) осуществляют пересылку операндов между регистрами и ячейками памяти. Команды LDA, LDX, производящие загрузку операнда в регистры A, X, используются все способы адресации, кроме относительного. При записи содержимого этих регистров в память командами STA, STX не используется также непосредственная адресация. Команда LDHX позволяет записать в индексный регистр H:X двухбайтовый непосредственный операнд #Im, который содержится во втором и третьем байте команды, или загрузить в этот регистр содержимое двух рядом расположенных ячеек памяти. Команда STHX производит запись содержимого H:X в две рядом расположенные ячейки памяти. При обращении к памяти в командах LDHX,STHX задается адрес первой ячейки памяти с помощью 8-разрядной прямой адресации.

Таблица 3. Команды пересылки.

Мнемокод Команда Операция
LDA (opr) Загрузка A M ® A
LDX (opr) Загрузка X M ® X
LDHX (opr) Загрузка H:X M ® H:X
STA (opr) Запись A в память A ® M
STX (opr) Запись X в память X ® M
STHX Пересылка H:X в память H:X ® M
MOV (addr1),(addr2) Пересылка «память-память» M1 ® M2
TAX Пересылка A в X A ® X
TXA Пересылка X в A X ® A
TAP Пересылка A в CCR A ® CCR
TPA Пересылка CCR в A CCR ® A
TSX Пересылка SP+1 в H:X SP+1 ® H:X
TXS Пересылка H:X-1 в SP H:X -1 ® SP
CLR (opr) Запись 0 в M $00 ® M
CLRA Запись 0 в A $00 ® A
CLRX Запись 0 в X $00 ® X
CLRH Запись 0 в H $00 ® H
NSA Перестановка тетрад в A (A7-4) <-> (A3-0)
PUSHA Запись A в стек A ® (SP), SP-1 ® SP
PUSHH Запись H в стек H ® (SP), SP-1 ® SP
PUSHX Запись X в стек X ® (SP), SP-1 ® SP
PULA Загрузка A из стека SP+1 ® SP, (SP) ®A
PULH Загрузка H из стека SP+1 ® SP, (SP) ®H
PULX Загрузка X из стека SP+1 ® SP, (SP) ®X

Команда MOV обеспечивает пересылку содержимого между двумя ячейками памяти. При этом возможны четыре варианта выполнения команды:

MOV #Im, addr8 - пересылка непосредственного операнда #Im в прямо адресуемую ячейку памяти;

MOV addr8-s, addr8-d - пересылка между двумя прямо адресуемыми ячейками памяти: источником (адрес addr8-s) и приемником (адрес addr8-d);

MOV addr8, X+ - пересылка содержимого прямо адресуемой ячейки в ячейку, адресуемую с помощью регистра H:X, после пересылки производится инкремент содержимого H:X;

MOV X+, addr8 - пересылка содержимого ячейки, адресуемой с помощью регистра H:X, в прямо адресуемую ячейку памяти; после пересылки производится инкремент содержимого H:X.

Во всех вариантах команды MOV используется только 8-рязрядная прямая адресация.

Команды TAX, TXA выполняют пересылку операндов между регистрами A и X. Команды TAP и TPA позволяют считать в аккумулятор содержимое регистра признаков CCR для последующего анализа или сохранения и загрузить в этот регистр новое содержимое из аккумулятора.

К этой же группе относятся команды CLRA, CLRX, CLRH, CLR, производящие запись 0 в регистры A, X, H и ячейку памяти. В команде CLR могут использоваться следующие способы адресации: индексная, индексная по указателю стека с 8-разрядным смещением или прямая с 8-разрядным адресом.

Команда NSA меняет местами старшую (биты A7-4) и младшую (биты A3-0) тетрады содержимого аккумулятора.

Отдельную подгруппу составляют команды сохранения в стеке содержимого регистров A, H, X и загрузки этих регистров из стека. Команды сохранения PSHA, PSHH, PSHX пересылают содержимое соответствующих регистров в ячейку памяти, адресуемую содержимым регистра SP, затем содержимое этого регистра уменьшается на 1, адресуя следующую свободную ячейку стека. Команды загрузки увеличивают на 1 содержимое SP, адресуя верхнюю заполненную ячейку стека, после чего содержимое ячейки загружается в соответствующий регистр.

Команды арифметических операций (табл.4) выполняют соответствующие действия над операндами, один из которых располагается в аккумуляторе A, где размещается затем результат. При операциях сложения и вычитания с учетом и без учета признака переноса C (команды ADC, ADD, SBC, SUB) второй операнд M адресуется любым способом, кроме относительного. Команда двоично-десятичной коррекции DAA выполняется после команды ADD для получения правильного результата, если в качестве слагаемых использовались двоично-десятичные числа (две тетрады представляют два десятичных разряда числа).

Команда умножения MUL выполняется над 8-разрядными операндами без знака, расположенными в регистрах A, X, 16-разрядное произведение X:A размещается в этих же регистрах (старший байт в X, младший байт в A). Команда деления DIV использует в качестве делимого 16-разрядный операнд H:A (старший байт в H, младший байт в A), делитель находится в регистре X. Полученное 8-разрядное частное размещается в аккумуляторе, остаток – в регистре H.

При операциях инкремента, декремента (команды INC,INCA, INCX, DEC, DECA, DECX) и изменения знака (перевод операнда в дополнительный код, команды NEG, NEGA, NEGX) используются следующие способы адресации: индексная, индексная по указателю стека с 8-разрядным смещением или прямая с 8-разрядным адресом.

Таблица 4. Команды арифметических и логических операций,

сравнения и тестирования

Мнемокод Команда Операция
ADD (opr) Сложение A + M ® A
ADC (opr) Сложение с переносом A + M + С ® A
SUB (opr) Вычитание A - M ® A
SBC (opr) Вычитание с заемом A - M - С ® A
MUL Беззнаковое умножение A * X ® X: A
DIV Беззнаковое деление H:A / X -> A, остаток -> H
DAA Двоично-десятичная коррекция результата сложения
INC (opr) Инкремент M M + 1 ® M
INCA Инкремент A A + 1 ® A
INCX Инкремент X X + 1 ® X
DEC (opr) Декремент M M - 1 ® M
DECA Декремент A A - 1 ® A
DECX Декремент X X - 1 ® X
NEG (opr) Изменение знака M 0 - M ® M
NEGA Изменение знака A 0 - A ® A
NEGX Изменение знака X 0 - X ® X
AIX #Im Сложение H:X с константой H:X + Im -> H:X
AIS #Im Сложение SP с константой SP + Im -> SP
CMP (opr) Сравнение A с M A – M, установка V,N,Z,C
CPX (opr) Сравнение X с M X - M, установка V,N,Z,C
CPHX (opr) Сравнение H:X c M:M+1 H:X – M:M+1, установка V,N,Z,C
TST (opr) Тестирование M M - 0, установка N,Z
TSTA Тестирование A A – 0, установка N,Z
TSTX Тестирование X X – 0, установка N,Z
AND (opr) Логическое И A Ù M ® A
OR (opr) Логическое ИЛИ A Ú M ® A
EOR (opr) Исключающее ИЛИ A Å M® A
COM (opr) Логическая инверсия M M ® M
COMA Логическая инверсия A `A ® A
COMX Логическая инверсия X `X ® X
BIT (opr) Битовое тестирование A Ù M, установка N,Z

Команды AIX, AIS позволяют корректировать значение адреса, размещенного а регистрах H:X или SP, путем сложения их содержимого с 8-разрядной константой, которая задается в виде непосредственного операнда Im. Этот операнд является числом со знаком (представляется в дополнительном коде).

Команды сравнения CMP, CPX выполняют вычитание операндов без записи результата, но с установкой значений признаков V, N, Z, C в соответствии с полученным результатом. Эти команды используют все возможные способы адресации операнда. Команда CPHX производит сравнение 16-разрядных операндов, одним из которых является содержимое индексного регистра H:X, а вторым – непосредственно заданный в команде двухбайтовый операнд Im или содержимое двух рядом расположенных ячеек памяти M:M+1. В последнем случае команда CPHX использует 8-разрядную прямую адресацию.

Команды тестирования TST, TSTA, TSTX устанавливают признаки N, Z в соответствии со значением выбираемого операнда. В команде TST используется индексную, индексную по указателю стека с 8-разрядным смещением или прямую адресацию с 8-разрядным адресом.

Команды логических операций AND, ORA, EOR выполняют операции И, ИЛИ, Исключающее ИЛИ над разрядами содержимого аккумулятора A и адресуемого операнда (табл.4). Команда битового тестирования BIT производит логическое умножение операндов (операция И) без записи результата, но с установкой признаков N, Z. При выполнении этих команд используются все способы адресации, как и в командах сложения-вычитания. В командах логической инверсии COM, COMA, COMX используется только индексная, индексная по указателю стека с 8-разрядным смещением или прямая адресация с 8-разрядным адресом.

. Команды сдвигов (табл.5) выполняют арифметические (команды ASL, ASLA, ASLX, ASR, ASRA, ASRX), логические (команды LSL, LSLA, LSLX, LSR, LSRA, LSRX) и циклические (команды ROL, ROLA, ROLX, ROR, RORA, RORX) сдвиги над операндами, расположенными в регистрах A, X или адресуемой ячейке памяти. При обращении к памяти используется индексная, индексная по указателю стека с 8-разрядным смещением или прямая адресация с 8-разрядным адресом. Команды ASL, ASLA, ASLX реализуют такие же операции, как и команды LSL, LSLA, LSLX.

Таблица 5. Команды сдвигов

Мнемокод Команда Операция
Операнд
С
 
ASL, LSL (opr)

ASLA, LSLA ASLX, LSLX

Арифметический или логический сдвиг влево  
Операнд
С
ASR (opr) ASRA ASRX

Арифметический сдвиг вправо  
 
Операнд
С
LSR (opr) LSRA LSRX

Логический сдвиг Вправо  

Операнд
С
ROL (opr) ROLA ROLX

Циклический сдвиг Влево  

Операнд
С
ROR (opr) RORA RORX

Циклический сдвиг вправо  

Команды битовых операций BCLR, BSET (табл.6) устанавливают значение 0 или 1 для n -го бита в операнде, 8-разрядный адрес которого содержится во втором байте команды (8-разрядная прямая адресация). Номер бита n задается в команде. Команды CLC, CLI и SEC, SEI устанавливают значение 0 или 1 признаков C, I в регистре условий CCR. При этом команды CLI и SEI разрешают и запрещают обслуживание поступающих запросов прерывания.

Таблица 6. Команды битовых операций и установки признаков.

Мнемокод Команда Операция
BCLR n, (opr) Установка значения бита bn = 0 0 ® bn
BSET n, (opr) Установка значения бита bn = 1 1 ® bn
CLC Установка признака C = 0 0 ® C
CLI Установка признака I = 0 0 ® I
SEC Установка признака C = 1 1 ® C
SEI Установка признака I = 1 1 ® I

При выполнении команд пересылки, арифметических и логических операций, сдвигов, битовых операций происходит изменение значений определенных признаков в регистре условий CCR. В табл.7 изменение этих признаков показано символами:

"+" - установка значения по результату операции,

"-" - значение остается неизменным,

0, 1 - установка соответствующих значений признаков,

“х” – принимает произвольное значение.

Таблица 7. Установка значений признаков при выполнении команд

Команды Признаки
  V H I N Z C
LDA, LDX, LDHX, STA, STX, STHX,   - - + + -
TST, TSTA, TSTX, AND, ORA, EOR, BIT,            
INC, INCA, INCX, DEC, DECA,DECX + - - + + -
ADD, ADDC + + - + + +
SUB, SBC, NEG, NEGA, NEGX, CMP, CPX, CPHX, ASL, ASLA, ASLX, + - - + + +
LSL, LSLA, LSLX, ASR, ASRA, ASRX,            
ROL, ROLA, ROLX, ROR, RORA, RORX            
LSR, LSRA, LSRX + - -   + +
CLR, CLRA, CLRX, CLRH   - -     -
COM, COMA, COMX   - - + +  
MOV + - - + + -
MUL -   - - -  
DIV - - - + + -
DAA x - - + + +
CLC - - - - -  
CLI - -   - - -
SEC - - - - -  
SEI - -   - - -
SWI - -   - - -
RTI, TAP + + + + + +
BRCLR, BRSET - - - - - +
WAIT, STOP - -   - - -

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

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

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

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

Команды условного ветвления Bcc производят загрузку в PC нового адреса, если выполняется определенное условие. В табл.9 приведены 18 видов условий, которые вызывают ветвление программы. Мнемокод условия сс приписывается к букве B, образуя мнемокод соответствующей команды условного ветвления. Например, B + PL = BPL - мнемокод команды ветвления при положительном результате предыдущей операции (признак N=0).

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

Мнемокод Команда Операция
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)

Большинство условий задается определенными значениями признаков в регистре CCR или комбинацией значений признаков, которая определяется соответствующим логическим выражением. Обычно эти значения признаков устанавливаются с помощью предыдущей команды сравнения или тестирования. Условем ветвления может быть равенство (Z=1) или неравенство (Z=0) сравниваемых операндов, а также различные варианты соотношений между ними. При сравнении операндов со знаком устанавливаются соотношения “больше”, “меньше”, “больше или равно”, “меньше или равно” (>, <, >=, <=). При сравнении беззнаковых операндов аналогичные соотношения (>, <, >=, <=) определяют условия “выше”, “ниже”, “ниже или равно”, “выше или равно”.

Таблица 9. Мнемокоды и условия выполнения команд условных переходов Bcc

Мнемокод cc Проверяемое условие Логическое выражение
NE Не равно (ненулевой результат) Z = 0
EQ Равно (нулевой результат) Z = 1
HI Выше (Z Ú C) = 0
HS Ниже или равно (Z Ú C) = 1
HS Выше или равно (нет переноса) C = 0
LO Ниже (есть перенос) C = 1
BGT Больше Z Ú (N Å V) =0
BLE Меньше или равно Z Ú (N Å V) =1
BGE Больше или равно N Å V = 0
BLT Меньше N Å V = 1
PL Положительный результат N = 0
MI Отрицательный результат N = 1
HCC Нет переноса между тетрадами H = 0
HCS Есть перенос между тетрадами H = 1
MC Прерывания разрешены I = 0
MS Прерывания запрещены I = 1
IH Отсутствие запроса прерывания IRQ# = 1
IL Поступление запроса прерывания IRQ# = 0

В качестве условий ветвления могут также использоваться значения признаков N, H и маски прерывания I. Одним из условий ветвления может быть поступление внешнего запроса прерывания на вход IRQ#.

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

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

Команды BRCLR, BRSET проверяют значение n -го бита bn в операнде, выбираемом с помощью 8-битной прямой адресации, и выполняют ветвление, если bn равен 0 или 1. Номер проверяемого бита n задается в этих командах с помощью непосредственного операнда #Im8= n. Эти команды содержат три байта, поэтому при их выполнении содержимое PC увеличивается на k=3.

Команды перехода и ветвления к подпрограмме JSR, BSR заносят из PC в стек адрес очередной команды программы, а затем загружают в PC новое содержимое. В команде JSR адрес ячейки памяти, из которой загружается новое содержимое PC, определяется с помощью индексной, индексной со смещением или прямой адресации. При этом адрес, загружаемый в стек при выполнении команды JSR, может быть больше адреса этой команды на k=1, 2 или 3 в зависимости от используемого способа адресации: k=1 при индексной адресации, k=2 при индексной адресации с 8-разрядным смещением или 8-разрядной прямой адресации, k=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), с помощью которого осуществляется последующий возврат в нормальный режим. Возможности реализации энерго сберегающих режимов рассмотрены в разделе 6.

Большинство команд имеют время выполнения от 1Tt до 5Tt, где Tt = 1/Ft – период тактовых импульсов. Для выполнения некоторых команд требуется большее время: DIV - 7Tt, SWI - 9Tt, RTI - 7Tt.





Дата публикования: 2014-11-02; Прочитано: 1352 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.018 с)...