Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LH05-2N.DOC
Скачиваний:
21
Добавлен:
11.03.2015
Размер:
100.35 Кб
Скачать

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

6. Покажем работу пересылки регистра А в индексный регистр на примере:

0200 TAX ;пересылка регистра А в регистр Х

;(неявная адресация)

Занесите в регистр А значение 0B8h. После выполнения команды убедитесь, что в регистре Х появилось число 0B8h , а регистр признаков не изменился.

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

0200 TXA ;А=Х

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

Команды передачи управления.

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

Покажем важное качественное отличие команд класса JUMP от команд класса BRANCH на следующих примерах:

0200 JMP 00h ; установить счетчик адреса в 00h, команда JMP

; использует расширенную адресацию

Ассемблер принял эту команду без сообщения об ошибке (заметьте: длина кода адреса - 2 байта). Выполните команду. Убедитесь, что в РС находится 03A0h. Это означает. что произошел переход. Однако, если Вы попытаетесь осуществить подобный переход командой BRANCH, Вам будет выдано сообщение об ошибке уже при вводе команды, т.к. будут нарушены пределы относительной адресации: 03A0h-0200h=1A0h>128D . Попробуйте выполнить команду:

0200 BRA 03A0h ;ветвление всегда, относительная адресация

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

0200 JMP 0E0h ;прямая адресация (2 байта): PC=0E0h

0200 JMP ,X ;индексная адресация без смещения

;(1 байт): PC=(X)

0200 JMP 0B0h,X ;индексная адресация с 8-ми битовым

;смещением (2 байта): PC=0B0h+(X)

0200 JMP 100h,X ;индексная адресация с 16-ти битовым

;смещением (3 байта): PC=100h+(X)

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

9. Команды условного перехода.

Проиллюстрируем работу команд BRA и BRN примерами:

0200 BRA 0209h ; в результате теста ?1=1 происходит

; безусловный переход

Убедитесь, что переход происходит. Команда BRA, как и все команды типа BRANCH, занимает в памяти 2 байта.

0200 BRN 0209h ; в результате теста ?0=1 переход не

; происходит

Убедитесь, что переход не происходит. Команда BRN не производит никаких действий, поэтому может быть использована для резервирования места в памяти (между прочим, выполнение команды BRN занимает меньше машинного времени, чем двух команд NOP).

10. На простых примерах покажем работу команд условного перехода BNE и BEQ:

0200 BNE 0209h ;тестируется флаг Z на равенство нулю

Установите флаг нуля (Z=1). Выполните команду. Убедитесь, что переход не произошел. Теперь сбросьте флаг (Z=0). Выполните команду еще раз, убедитесь, что переход произошел.

0200 BEQ 0209h ;тестируется флаг Z на равенство "1"

Сбросьте флаг нуля (Z=0). Выполните команду. Убедитесь, что переход не произошел. Установив флаг, повторно выполните команду и убедитесь, что переход произошел.

11. Изучим работу команд условного перехода BHI и BLS:

0200 BHI 0209h ;тестируются флаги Z и C на

;одновременное равенство нулю

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

0200 BLS 0209h ;тестируются флаги Z и C на равенство

;единице хотя бы одного из них

Убедитесь, что переход не происходит только при C=0 и Z=0.

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

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