Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №3 / Laboratornaya_rabota_3B (1).docx
Скачиваний:
4
Добавлен:
21.06.2022
Размер:
106.4 Кб
Скачать

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«Московский политехнический университет» (московский политех)

Факультет машиностроения

Кафедра «Автоматика и управление»

Лабораторная работа №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-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  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?»