Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
labramo-ar-log.doc
Скачиваний:
10
Добавлен:
10.02.2015
Размер:
253.95 Кб
Скачать

6. Маскирование данных и организация условных переходов

Во многих случаях при выполнении программ необходимо проверять, устанавливать или изменять состояние одного или нескольких разрядов числа в аккумуляторе. При этом разряды числа, которые не участвуют в операции, нужно заблокировать, то есть исключить из рассмотрения.

Блокирование, то есть исключение из рассмотрения одного или нескольких разрядов числа, называется маскированием.

Для блокирования отдельных разрядов данных используется специальное число, называемое маской. При составлении маски в разряды, которые необходимо заблокировать, записываются нули, а в разряды, которые будут исследоваться, записываются единицы. Далее между числом и маской выполняется логическая операция.

При выполнении команды логического умножения AND производится поразрядная конъюнкция. Данная команда применяется для проверки значения определенного бита данных в аккумуляторе с помощью слова-маски, записанного в регистре Х или в любую ячейку памяти. При этом значение проверяемого бита равно отрицанию от значения флага z. Кроме того, с помощью команды AND, используя слово-маску, можно сбрасывать определенные биты слова в аккумуляторе.

При выполнении логического сложения ORA осуществляется поразрядная дизъюнкция операндов. Эта команда применяется для установки определенных битов слова в аккумуляторе с помощью слова-маски, а также упаковки из полей других слов.

При выполнении команды "исключающее ИЛИ" (EOR) производится поразрядное сложение по mod2. Эта команда применяется для инвертирования определенных битов слова с помощью слова-маски на основе тождества: . Другое применение командыEOR связано со сравнением слов на абсолютное равенство. В единственном случае, когда операнды совпадают, результат операции содержит нули во всех разрядах (согласно тождеству ), о чем сигнализирует флагz.

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

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

Таблица 6. Мнемокоды и условия выполнения команд условных переходов 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#.

Проверку содержимого заданного бита в числе можно также выполнять с помощью команд: BRCLR, BRSET.

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

ВЫПОЛНЕНИЕ РАБОТЫ

1. Изучить команды арифметических, логических и битовых операций, команды сравнения, сдвигов и передачи управления, выполняемые контроллером MC68HC908GP32.

2. Включите питание инструментального компьютера, работающего под управлением ОС Windows 95 или старшей версии с установленным пакетом программ отладки ICS08GPZ; запустите интегрированную среду программирования WinIDE.exe.

3. После выполнения этой процедуры на экране монитора должно появиться главное окно среды программирования WinIDE, в котором доступно меню, функциональные клавиши и окна редактирования исходного текста.

4. В новом окне редактора ввести исходный текст программы, содержащий различные варианты применения команд арифметических, логических и битовых операций, а также команд сравнения и сдвигов (табл. 1. - 6) с использованием различных способов адресации и команд передачи управления.

(Примечание. При выполнении команд обратить внимание на изменение содержимого регистра состояния CCR).

5. Выполнить компиляцию программы путем нажатия клавиши Assemble/Compile File. В случае получения сообщений об ошибке исправить исходный текст программы и повторить попытку компиляции.

6. Войти в режим моделирования (симуляции) путем нажатия клавиши Simulator. Проконтролировать правильность выполнения команд, используя окна CPU08, Memory Window 1, Code Window 1: Source.

По указанию преподавателя ввести код программы в память микроконтроллера с помощью приложения Programmer. Войти в режим отладки путем нажатия клавиши In-Circuit Debuger. Проконтролировать правильность выполнения команд, используя окна CPU08, MemoryWindow1, CodeWindow1:Source.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]