МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«Московский политехнический университет» (московский политех)
Факультет машиностроения
Кафедра «Автоматика и управление»
Лабораторная работа №3
По дисциплине «Проектирование микропроцессорных систем управления»
Группа |
204-251 |
Бригада |
2 |
Студенты |
Антоненко А.С. Сагитова Л.С. Сагитова Н.С. Ширяев В.А. |
|
|
Преподаватель |
Палагута К.А. |
Москва 2021 Лабораторная работа №3. Микроконтроллер mc68hc908gp32: команды управления программой и процессором.
Цель работы: изучение команд управления программой и процессором.
Теоретическое введение
Для управления выполнением программы используются команды безусловного перехода 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, когда необходимо проверить выполнение программы без ветвления.
Команды условного ветвления Bcc производят загрузку в PC нового адреса, если выполняется определенное условие. В табл.1 приведены 18 видов условий, которые вызывают ветвление программы. Мнемокод условия сс приписывается к букве B, образуя мнемокод соответствующей команды условного ветвления. Например, B + PL = BPL - мнемокод команды ветвления при положительном результате предыдущей операции (признак N=0).
Таблица 1. Команды управления программой и процессором.
Мнемокод |
Команда |
Операция |
JMP (opr) |
Безусловный переход |
EA PC |
BRA rel8 |
Безусловное ветвление |
PC +2 + rel8 PC |
BRN rel8 |
Отсутствие ветвления |
PC + 2 PC |
Bcc 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-1M, PC + n + rel8 PC, если Z=0 |
DBNZA rel8 |
Декремент A и ветвление, если A не равно 0 |
A-1A, PC +2 + rel8 PC, если Z=0 |
DBNZX rel8 |
Декремент X и ветвление, если A не равно 0 |
X-1X, 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 PC |
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) сравниваемых операндов, а также различные варианты соотношений между ними. При сравнении операндов со знаком устанавливаются соотношения “больше”, “меньше”, “больше или равно”, “меньше или равно” ). При сравнении беззнаковых операндов аналогичные соотношения ( ) определяют условия “выше”, “ниже”, “ниже или равно”, “выше или равно”.
Таблица 2. Мнемокоды и условия выполнения команд условных переходов Bcc
Мнемокод cc |
Проверяемое условие |
Логическое выражение |
NE |
Не равно (ненулевой результат) |
Z = 0 |
EQ |
Равно (нулевой результат) |
Z = 1 |
HI |
Выше |
(Z C) = 0 |
LS |
Ниже или равно |
(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 выполняют ветвление при условии равенства операндов, хранящихся в аккумуляторе и адресуемой ячейке памяти. В зависимости от используемого способа адресации памяти команда может содержать 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 в зависимости от используемого способа адресации.
Команды BRCLR, BRSET проверяют значение n-го бита в операнде, выбираемом с помощью 8-битной прямой адресации, и выполняют ветвление, если бит соответственно равен 0 или 1. Номер проверяемого бита n задается в этих командах с помощью непосредственного операнда #Im8=n. Эти команды содержат три байта, поэтому при их выполнении содержимое PC увеличивается на 3.
Команды перехода и ветвления к подпрограмме 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), с помощью которого осуществляется последующий возврат в нормальный режим
Общее задание:
Записать по адресу $30 код $7C, по адресу $40 код $D4, по адресу $41 код $3E. Загрузить и выполнить программу. Ответить на вопрос: «Какой код в результате окажется по адресу $30 и что будет во флагах N, V и Z?»