Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Логин, В. М. 8-разряд_микроконтрол_семейства_МС68НС11_фирмы_MOTOROLA_Лаб_работы

.pdf
Скачиваний:
45
Добавлен:
24.02.2016
Размер:
1.37 Mб
Скачать

После этого приступайте к отладке программы. Для этого нажмите <F10> для появления окна отладчика (рис. 11).

Нажмите <F10> несколько раз подряд до появления зелёной полосы

(рис. 12).

 

 

 

 

 

 

 

 

 

Р

 

 

 

 

 

 

 

 

И

 

 

 

 

 

 

 

У

 

 

 

 

 

 

 

Г

 

 

 

 

 

 

 

 

Б

 

 

 

 

 

 

 

 

а

 

 

 

 

 

 

 

 

к

 

 

 

 

 

 

 

регист

Рис. 12

 

 

 

 

 

 

 

 

 

 

 

 

Теперь можно вручную о ладиеь код, нажимая <F10>, при этом отладчик

будет переходить от

строки

с роке по порядку, причём в окне «Registers» бу-

 

 

дет отражено

состояние

 

ров в текущий момент. Можно установить кон-

 

 

 

трольную точку на люб й из строк кода, нажав правую клавишу мыши и вы-

брав командул«Toggle Breakpoint» (рис. 13).

При нажат <F5> отладчик «прыгнет» на данную контрольную точку, причём состояниеб регистров изменится в соответствии с командой, находящейся вистроке, которая является предыдущей к строке с контрольной точкой

(рис. 14).

БДля того чтобы просмотреть состояние памяти, необходимо выбрать команду «Memory» в меню «View». При этом появится окно «Memory» (рис. 15).

Значения регистров отображены в шестнадцатеричной системе счисления. Для просмотра значения в десятеричной системе счисления необходимо навести курсор на значение необходимого регистра и щёлкнуть правой клавишей мыши (рис. 16).

Для того чтобы вернуться к коду, необходимо нажать <Shift+F5>, при этом будут закрыты все окна отладчика, а затем закрыть файл с расширением <*.lst>.

Остальные возможности работы с программой можно прочесть в «Help for Micro-IDE (6811 Dev System)».

11

 

 

 

 

 

 

 

 

 

 

 

 

Р

 

 

 

 

 

 

 

 

 

 

 

И

 

 

 

 

 

 

 

 

 

 

У

 

 

 

 

 

 

 

 

 

 

Г

 

 

 

 

 

 

 

 

 

 

а

 

 

 

 

 

 

 

 

 

Рис. 13

Б

 

 

 

 

 

 

 

 

 

 

к

 

 

 

 

 

 

 

 

 

 

е

 

 

 

 

 

 

 

 

 

 

т

 

 

 

 

 

 

 

 

 

 

о

 

 

 

 

 

 

 

 

 

 

и

 

 

 

 

 

 

 

 

 

 

л

 

 

 

 

 

 

 

 

 

 

б

 

 

 

 

 

 

 

 

 

 

и

 

 

 

 

 

 

 

 

 

 

 

Б

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 14

12

 

 

 

 

 

 

 

 

 

 

 

Р

 

 

 

 

 

 

 

 

 

 

И

 

 

 

 

 

 

 

 

Б

У

 

 

 

 

 

 

 

Рис. 15

 

 

 

 

 

 

 

 

 

Г

 

 

 

 

 

 

 

 

 

а

 

 

 

 

 

 

 

 

 

к

 

 

 

 

 

 

 

 

 

 

е

 

 

 

 

 

 

 

 

 

 

т

 

 

 

 

 

 

 

 

 

о

Рис. 16

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

и

 

 

 

 

 

 

 

 

 

л

 

 

 

 

 

 

 

 

 

б

 

 

 

 

 

 

 

 

 

и

 

 

 

 

 

 

 

 

 

 

Б

 

 

 

 

 

 

 

 

 

 

 

13

ЛАБОРАТОРНАЯ РАБОТА №1 МЕТОДЫ АДРЕСАЦИИ. КОМАНДЫ ПЕРЕСЫЛКИ ДАННЫХ

1.1. Цель работы

Изучить:

методы адресации;

группа команд пересылки данных.

1.2. Методы адресации

Микроконтроллеры семейства МC68НС11 выполняют обработку

ции: неявная, непосредственная, прямая, расширенная, индексная и относи-

8-, 16-разрядных операндов и реализуют набор из 108 команд. Они содержат

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Р

два 8-разрядных аккумулятора A и B, которые при выполнении ряда команд

используются как 16-разрядный регистр D, два 16-разрядных индексных реги-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

И

стра X и Y, регистр условий CCR и 16-разрядные регистр-указатель стека SP и

программный счетчик PC.

 

 

 

 

 

 

 

 

У

 

 

 

Регистр CCR (табл. 1.1) содержит значения признаков переноса C, пере-

 

 

 

 

 

 

 

 

 

 

 

Г

 

 

 

полнения V, нулевого результата Z, знака N, запрещения прерывания I, перено-

са между тетрадами H.

 

 

 

 

 

Б

 

 

Таблица 1.1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Формат содержимого

регистраусловий CCR

 

 

 

 

 

 

 

 

Биты

7

 

6

 

5

 

 

4

3

 

 

2

1

 

0

 

 

 

 

 

 

 

 

к

 

 

 

 

 

 

 

 

Признаки

S

 

X

 

H

 

 

I

N

 

 

Z

V

 

С

 

 

 

 

 

 

 

е

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Микроконтроллеры семейс ва МC68НС11 имеют следующие типы адреса-

 

 

 

 

 

т

 

 

 

 

 

 

 

 

 

 

 

 

 

о

 

 

 

 

 

 

 

 

 

 

 

тельная.

 

Рассмотрим каждый

з видов адресации подробнее.

 

Неявная адресац я

спользуется в том случае, когда в качестве операндов

используются

ибоирегистры (например СОМА, CLI), либо фиксированная

ячейка

 

(SWI). Другими словами можно сказать, что неявная адресация

 

 

 

л

 

не требует отдельного битового поля для указания операнда. В большинстве

случаев так е команды однобайтные.

 

 

б

 

43

памяти

СОМА

53

 

 

COMB

Б

 

 

 

 

Исключение составляют команды, взаимодействующие с регистром Y:

18

35

 

TYS

18

 

ABY

14

В случае использования непосредственной адресации операнд (или один из операндов) включен непосредственно в код команды. Длина таких команд может составлять от 2 до 4 байтов. При записи команд, использующих непосредственную адресацию, операнд предваряется символом «решетка» ('#').

86

03

 

LDAA

#3

СЕ

80

00

LDX

#32768

18

56

78 CPY

#$5678

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

зволяет сократить объем программы, а также время выполнения на выборке

операнда из памяти.

 

 

 

 

Р

 

 

 

И

96

3F

LDAA

 

 

 

У

 

63

DA FF

GRAB

$FF

 

 

 

 

 

 

 

Использование

 

 

Г

 

 

 

расширенной адресации позволяет осуществить доступ к

любой ячейке памяти в пределах адресного пространства контроллера. При

 

 

 

 

 

 

 

Б

этом 2 байта, следующие непосредственно кодом команды, представляют со-

бой абсолютный адрес операнда.

 

за

 

 

 

 

 

 

В6

40

00

LDAA

 

$4000

 

78

12

JMP

 

к

 

 

$7812

 

 

 

 

 

е

 

 

 

Как правило, ассемблер ав ома ически выбирает наиболее оптимальный из

двух вышеописанных мет д в адресации.

 

 

 

 

т

 

 

 

 

Для доступа к масс вам данных удобно использовать индексную адреса-

цию. В микроконтро

оерах семейства МC68НС11 используется так называемая

индексная адресация с 8-разрядным смещением. При этом в индексный регистр

 

 

 

и

 

X или Y заносится 16-разрядный адрес, а следующий за кодом команды байт

содержит 8-разрядноел

смещение.

Абсолютный адрес при этом вычисляется

 

 

б

 

 

 

 

и

 

 

 

простым суммированием содержимого индексного регистра с байтом смеще-

Б

 

 

 

 

ния.

 

 

 

 

 

А6

07

 

 

LDAA

$07,X

18

AD 00

 

JSR

0,Y

Команды работы со стеком также принято относить к командам с индексной адресацией.

32

PULA

37

PSHB

15

Эти команды используют индексную адресацию без смещения.

Относительная адресация используется в командах передачи управления. При этом абсолютный адрес перехода вычисляется путем сложения содержимого программного счетчика со смещением, представляющим собой 8-разрядное знаковое число. Таким образом, используя относительную адресацию, можно осуществить переход на адрес, лежащий в пределах от –128 до +127 относительно адреса, следующего за командой перехода.

8D

00

BSR

*+$2

24

FF

ВСС

*-125

Примечания:

Заметим, что для наглядности здесь использован символ «звездочка» ('*'), кото-

 

 

 

 

 

 

 

 

 

 

Р

рый заменяется ассемблером на адрес текущей команды. Программы, исполь-

 

 

 

 

 

 

 

 

 

И

 

 

 

 

 

 

 

 

У

 

 

зующие только относительную и неявную адресацию, принято называть пози-

 

 

 

 

 

 

 

Г

 

 

 

ционно-независимыми программами. Это объясняется тем, что при перемеще-

 

 

 

 

 

 

 

Б

 

 

 

 

нии кода из одной области памяти в другую работоспособность программы со-

храняется.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.3. Команды пересылки д нных

 

 

 

 

 

 

 

 

 

к

 

 

 

 

 

Простейшими командами являются

ом нды пересылки данных. Список

этих команд приведен в табл. 1.2. Рассмотримакаждую из команд подробнее на

простых примерах.

 

Командыепересылки данных

 

 

Таблица 1.2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

TSTA

 

 

CLRA

 

 

TAB

 

 

PSHA

 

TSTB

 

 

CLRB

 

 

ТВА

 

 

PULA

 

TST*

 

 

CLR*т

 

 

TAP

 

 

PSHB

 

 

 

 

о

 

 

ТРА

 

 

PULB

 

LDAA**

 

 

STAA***

 

 

 

 

LDAB**

 

 

STAB***

 

 

TSX

 

 

PSHX

 

LDD**

л

иSTD***

 

 

TXS

 

 

PULX

 

LDX**

 

STX***

 

 

TSY

 

 

PSHY

 

LDY**

 

STY***

 

 

TYS

 

 

PULY

 

LDS**

 

 

STS***

 

 

XGDX

 

 

 

 

 

б

 

 

 

 

XGDY

 

 

 

 

и

 

 

 

 

 

 

 

 

 

Б

 

 

 

 

 

 

 

 

 

 

 

* – команды, использующие расширенную и индексную адресацию; ** – команды, использующие непосредственную, прямую, расширенную и индексную адресацию;

*** – команды, использующие прямую, расширенную и индексную адресацию.

Команды TSTA, TSTB и TST служат для установки регистра статуса в соответствии с содержимым регистра А, В или ячейки памяти соответственно. Далее результат может быть использован в командах условного перехода. Зане-

16

 

 

 

 

 

 

сите в регистр А значение $00 и выполните в поша-

 

 

 

 

 

 

говом режиме команду TSTA. Теперь посмотрите на

 

 

 

 

 

 

содержимое регистра статуса: должен быть установ-

 

 

 

 

 

 

лен флаг нуля (Z) и сброшены флаг отрицательного

 

 

 

 

 

 

результата (М), переноса (С) и переполнения (V).

 

 

 

 

 

 

Проведите подобный опыт при других значениях ре-

 

 

 

 

 

 

гистра А, обращая внимание на различное состояние

 

 

 

 

 

 

регистра статуса.

 

 

 

 

 

 

 

 

 

 

 

Рассмотрим команды загрузки в регистр содер-

org

$8000

 

 

 

жимого ячейки памяти:

 

 

Р

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ldab

$56

 

;

загрузить в регистр В содержимое ячейки $56,

 

 

 

 

;

используя прямую адресацию

 

И

 

 

 

 

 

 

 

 

 

 

 

ldy

$c800

 

;

 

 

 

 

 

У

 

 

загрузить в регистр Y данные, расположенные по адресу

 

 

 

 

;

$с800 (предыдущую команду)

 

 

 

ldx

#$1f00

 

;

установить регистр X

 

Г

 

 

ldaa

$03,х

 

;

считать информацию

Б

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Работа команд очистки регистров А и В и ячейки

 

 

 

 

 

 

 

а

 

 

 

 

 

 

 

 

 

памяти может быть проиллюстрирована на примере

 

 

 

 

 

 

 

к

 

 

 

 

 

 

 

 

 

 

 

следующей простой программы:

 

 

org

$8000

 

 

 

т

 

 

 

 

 

 

clrb

 

 

 

;

 

 

 

 

 

 

 

 

 

 

очистить р гистр В

 

 

 

 

 

ldx

#$1f00

 

;

ус ановиеь регистр X

 

 

 

 

 

clr

$04,х

 

;

чис и ь

 

 

 

 

 

 

 

 

 

 

и

Теперь рассмотрим

работу команд модификации

 

 

 

л

оячеек памяти. Для

 

этого введем следующую про-

 

 

б

 

 

грамму:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

и

 

 

 

 

 

 

 

 

 

 

Б

 

 

 

 

 

 

 

 

 

 

 

org

$8000

 

 

 

 

 

 

 

 

 

 

ldd

#$AA55

;

установить в регистре D значение $АА55

 

ldx

#$1f00

 

;

установить регистр X

 

 

 

 

 

clr

$04,x

 

;

очистить

 

 

 

 

 

 

staa

$04,x

 

;

записать

 

 

 

 

 

 

stab

$04,х

 

;

записать

 

 

 

 

 

 

ldaa

$03,х

 

;

считать информацию

 

 

 

 

 

staa

$04,х

 

;

записать

 

 

 

 

 

 

В результате выполнения команды TAB значение аккумулятора А будет

17

присвоено аккумулятору В. Команда ТВА имеет

противоположный эффект. Следует отметить, что

регистр статуса принимает состояние, подобное

выполнению команд STAA, STAB.

 

Команда ТРА осуществляет перенос содержи-

мого регистра CCR в аккумулятор А. Это удобно,

если после выполнения какой-либо подпрограммы

необходимо сохранить состояние регистра статуса

(см. также ТАР).

Р

 

Группа команд работы с регистром стека имеет одну особенность: при пе-

 

И

реносе числа из индексного регистра регистр стека получает на единицу мень-

шее значение, при обратной пересылке происходит увеличение индексного ре-

гистра. Рассмотрим эти команды подробнее:

 

 

У

org

$8000

 

 

 

 

 

Г

 

 

 

 

Б

 

ldx

#$220

 

 

 

 

 

; занести в регистр X адрес $220

 

 

xgdx

 

; обмен содержимого регистров X и D

 

clrb

 

;

очистить младший байт регистра D

 

xgdx

 

; X = $200

 

а

 

 

txs

 

;

SP = $1ff

 

к

 

 

 

tsy

 

; Y = $200

 

 

 

 

 

Обмен содержимого индексного р гистра и регистра D, как правило, ис-

 

 

 

 

т

 

 

 

 

пользуется при арифметических операциях (так как арифметические команды работы с регистром D более разви ы) или в случае необходимости 8-разрядного

доступа к содержимому индексного регистра, что может быть полезно, напри-

 

 

 

 

и

 

мер, для организации к льцев го буфера.

 

 

б

 

оКоманда ТАР осуществляет перенос значения

 

 

 

 

регистра А в соответствующие биты регистра стату-

 

 

 

л

 

 

и

 

са CCR. При этом содержимое регистра А остается

 

 

неизменным. Флаг X, служащий для маскирования

Б

 

 

 

 

прерывания XIRQ, в результате выполнения этой

команды может быть сброшен, но он не может быть установлен, если до вы-

полнения команды флаг был сброшен.

org

$8000

 

 

 

 

ldaa

#$47

 

;

 

занести в регистр А новое cодержимое регистра статуса

tap

 

 

;

 

установить новое значение регистра статуса: заметьте,

 

 

 

;

 

что флаг X не будет установлен

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

18

Алгоритм работы команд PSH таков:

1) в ячейку памяти, на которую указывает регистр SP, записывается младший байт регистра-операнда; 2) значение регистра SP уменьшается на 1, указывая на следующую свободную ячейку в области сте-

ка; 3) в случае двухбайтного операнда последовательность (1–2) повторяется со

старшим байтом операнда.

Команды группы PUL выполняют данную последовательность в обратном

порядке, увеличивая значение регистра SP.

 

 

 

Р

 

 

 

 

Следующая программа демонстрирует, каким образом можно сохранить

 

 

 

 

 

 

 

 

 

 

 

 

 

И

неизменными все внутренние регистры ОЭВМ (рекомендуется также обратить

внимание на содержимое стека):

 

 

 

У

 

org

$8000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Г

 

 

psha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

; последовательно сохраняем регистры в стеке: А, В, X, Y, CCR

pshb

 

 

 

 

 

 

 

 

 

 

Б

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

pshx

 

 

 

 

 

 

 

 

 

 

 

 

 

 

pshy

 

 

 

 

 

 

 

 

 

 

 

 

 

 

tpa

 

 

 

 

 

 

 

 

к

 

 

 

 

psha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ldaa

#$20

; выполняем какие-либо действия, в результате которых изменяется

ldx

$12

; содержимое регистров

 

а

 

 

 

ldy

$1f03

 

 

 

 

т

 

 

 

 

 

 

clrb

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

е

 

 

 

 

 

xgdy

 

 

 

 

 

 

 

 

 

 

 

 

pula

 

 

; восстанавливаем регис ры: CCR, Y, X, В, А

 

 

tap

 

 

 

 

и

 

 

 

 

 

 

 

 

puly

 

 

 

л

о

 

 

 

 

 

 

 

pulx

 

 

 

 

 

 

 

 

 

 

 

б

 

 

 

 

 

 

 

 

pulb

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

pula

и

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Следует отметить, что из-за особенностей эмуляции при выполнении про-

Б

 

 

 

 

 

 

 

 

 

 

 

 

 

граммы в пошаговом режиме содержимое ячеек памяти, расположенных ниже указателя, не сохраняется.

1.4. Контрольные вопросы

1. Какие методы адресации вам известны? Дайте краткую характеристику каждого из них.

2. Какие методы адресации могут быть использованы в командах LDAA, STAA?

19

3.На какие флаги влияет выполнение команды TSTA?

4.Как формируется абсолютный адрес перехода в командах, использующих индексную адресацию?

5.Укажите на неточности (если они есть) в написании команд:

ldaa #20 staa #$50 ldab #$500 tax

6.Какие из изученных в данной лабораторной работе команд влияютРна содержимое регистра SP?

7.Что такое позиционно-независимая программа? И

8.Какие методы адресации используют приведенные нижеУкоманды:xgdycoma Г

pulb

 

 

 

 

 

9.Каково значение регистров X и D в

 

 

выполнения программы:

ldaa

#30

 

 

Б

ldx

#$4020

 

результате

 

tab

 

 

 

psha

 

к

 

 

psha

 

 

 

 

е

 

 

xgdx

 

 

 

pulx

 

 

 

 

 

10. Какие особенн

 

команда ТАР?

 

 

11. Какое применен е нах дит команда XGDX?

 

 

 

 

 

имеет

12. Каково значен еорегистра SP в результате выполнения фрагмента про-

граммы:

 

ldx

сти

 

 

 

 

#$200

 

 

txs

 

 

 

 

 

л

 

 

 

pshx

 

 

 

 

б

 

 

 

 

pula

 

 

 

13. Как формируется абсолютный адрес перехода в командах, использую-

и

 

 

 

 

щих относительную адресацию?

14. Какая логическая ошибка допущена при написании данного фрагмента

Б

 

 

 

 

 

программы:

ldx

 

#$20

 

 

 

 

pula

 

 

 

 

 

ldaa

 

0,x

 

 

 

staa

 

5,x

 

 

 

ldaa

 

3,х

 

20