Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LAB2_W95.DOC
Скачиваний:
19
Добавлен:
16.04.2013
Размер:
172.03 Кб
Скачать

2.2.1. Исследование работы команд пересылки данных.

Рассмотрим команды пересылки данных в следующей последовательности:

·команды загрузки регистровÀèÕданными из памяти

·команды модификации памяти

·команды межрегистровой пересылки

·команды обнуления регистров и ячеек памяти

Команды загрузки регистров а и х данными из памяти.

1. Исследуем работу команды LDAна элементарном примере:

0100 LDA #$01 занести в аккумулятор значение$01:непосредственная адресация

Занесите в регистр Àзначение$EFкомандойRM. Выполните программу директивой терминалаT 1, предварительно установив в счетчике команд значение$0100. Убедитесь, что в регистрÀзанесено значение$01. Заметьте, что регистр признаков установлен в следующее состояние:

Ñ=E8 111.I...

2. Проведем аналогичный эксперимент с командой LDX:

0100 LDX $50,Xзанести вXзначение ячейки памяти$50+X(индексная адресация с8-бит. смещением)

Занесите в ячейки памяти $50-$55значения{$01, $45, $A3, $00, $56, $F6}. Выполните программу несколько раз, занося в регистрÕзначения от$00äî$05. Убедитесь в том, чтоÕбудут присваиваться значения, соответствующие элементам последовательности. При этом регистр признаков будет также изменяться в соответствии с таблицей:

$01

C=E8 111.I...

$45

C=E8 111.I...

$A3

C=EC 111.IN..

$00

C=EA 111.I.Z.

$56

C=E8 111.I...

$F6

C=EC 111.IN..

Команды модификации памяти.

1. Покажем, каким образом можно произвести запись в 5-éэлемент массива, расположенного, начиная с адреса$80.

0100 STA $80,X в ячейку$80+Xзаносится содержимое аккумулятора (индекс. адрес. с8-áèò. ñìåù.)

В регистр Õзанесите$04, в регистрÀ-$87. Выполнив программу, убедитесь, что в5-îìэлементе массива находится$87, а регистр признаков содержит$EC.

2. Чтобы убедиться в невозможности записи в ППЗУ, проиллюстрируем запись содержимого индексного регистра в ППЗУ:

0100 STX $0248попытка записи содержимого регистраÕ в ячейку$0248(ППЗУ) (использована индекс. адрес. с16-бит. смещением)

Выполните программу. Убедитесь, что содержимое ячейки памяти не изменилось, но изменилось содержимое регистра признаков, поэтому подобные команды можно использовать для установки флагов.

Команды межрегистровой пересылки.

1. Покажем работу команды пересылки регистра Àв индексный регистр на следующем примере:

0100 TAX пересылка содержимого регистраÀв регистрÕ (неявная адресация)

Занесите в регистр Àзначение$89. После выполнения программы убедитесь, что в регистреÕпоявилось число$89, а регистр признаков не изменился.

2. Иллюстрацию команды TXAпроизведем на следующем примере:

0100 TXA À=Õ

Измените число в регистре Õтаким образом, чтобы оно было отлично от числа в регистреÀ. Выполните программу Убедитесь, что содержимое регистраÀсоответствует введенному Вами числу, при этом заметьте, что регистр признаков установлен в соответствии со значением регистраÕ.

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

1. Продемонстрируем работу команды CLRAна простом примере:

0100 CLRA обнуление аккумулятора: неявная адресация

Занесите в аккумулятор произвольное значение. Выполнив программу, убедитесь, что в аккумуляторе находится нуль, а в регистре Ñустановлен флагZ.

2. Покажем, что аналогичным образом можно обнулить регистр Õ:

0100 CLRX Õ=$00

3. Иллюстрацию обнуления ячеек памяти проведем на примере:

0100 CLR $88обнуление ячейки$88:

прямая адресация

Занесите в ячейку $88значение, отличное от нуля. выполните программу. Посмотрите, какое значение находится по адресу$88.

2.2.2. Программы с использованием команд передачи управления.

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

·отличие команд классаJUMPот команд классаBRANCH;

·команды условного перехода;

·команды работы с подпрограммами.

Отличие команд класса JUMP от команд класса BRANCH.

Покажем важное качественное отличие команд класса JUMP(на примере команды безусловного переходаJMP) от команд классаBRANCHна следующих примерах:

0100 JMP $0500 команда классаJUMP: расширенная адресация

Нетрудно заметить, что ассемблер принял эту команду без сообщения об ошибке (заметьте: длина кода - 3байта). Выполните программу. Убедитесь, что вÐÑнаходится$0500. Это означает. что произошел переход. Однако, если Вы попытаетесь осуществить подобный переход командойBRANCH, Вам будет выдано сообщение об ошибке уже при вводе команды, т.к. будут нарушены пределы адресации. Попробуйте набрать:

0100 BRA $0500 команда классаBRANCH: относительная адресация

и Вы убедитесь в справедливости сказанного. Кроме расширенной адресации команды класса JUMPмогут использовать прямую и все типы индексной адресации:

0100 JMP $50 прямая адресация (2байта):PC=$50

0102 JMP ,X индекс. адресация без смещения (1áàéò):PC=(X)

0103 JMP $EE,X индексная адресация с8-ìèáèò.ñìåù. (2байта):PC=$EE+(X)

0105 JMP $3E95,X индексная адресация с16-òèáèò. ñìåù. (3байта):PC=$3E95+(X)

Выполните каждую команду приведенной выше программы (но по отдельности!). Посмотрите по какому адресу происходит переход и как это связано с содержимым индексного регистра (в последних трех случаях).

Соседние файлы в предмете Отладка микроконтроллеров ЭВМ