Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы / Lab_moto / 2.doc
Скачиваний:
16
Добавлен:
16.04.2013
Размер:
265.73 Кб
Скачать

2. Практическая часть1.

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. Команды передачи управления.

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

·отличие команд класса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)

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

Соседние файлы в папке Lab_moto