- •1. Теоретическая часть.
- •1.1.Форматы команд.
- •1.2.Способы адресации.
- •Неявная адресация.
- •Непосредственная адресация.
- •Прямая адресация.
- •Прямая расширенная адресация.
- •Косвенная адресация.
- •Пример выполнения команды с косвенной адресацией:
- •Индексная адресация со смещением 1 байт.
- •Пример выполнения команды с индексной адресацией со смещением 1 байт:
- •Индексная адресация со смещением 2 байта.
- •Пример выполнения команды с индексной адресацией со смещением 2 байта:
- •Относительная адресация.
- •1.3. Группа команд передачи данных.
- •200 Lda #44h ; Загрузить в a число 44h
- •Программа с ветвлением
- •2. Практическая часть.
- •2.1. Исследование отдельных команд.
- •Команды загрузки регистров а и х данными из памяти.
- •Команды модификации памяти.
- •Команды межрегистровой пересылки.
- •Команды передачи управления.
- •2.2. Примеры использования команд передачи данных.
- •Incx ;Увеличить на 1 содержимое X
- •Incx ; Увеличить содержимое X на 1
- •Задания.
- •Контрольные вопросы.
2. Практическая часть.
2.1. Исследование отдельных команд.
Для исследования особенностей выполнения отдельных команд следует запустить программу полноэкранного симулятора ICS05K. Установить значение PC=200hи в режимеASM ввести мнемоники исследуемой команды. Затем модифицировать данные в ячейках памяти, если это необходимо. Далее выполнить команду в режимеSTEP.
Команды загрузки регистров а и х данными из памяти.
1. Исследуем работу команды LDA на примере:
0200 LDA #01h ;занести в аккумулятор значение 01h:
;непосредственная адресация
Перед выполнением команды занесите в регистр А произвольное значение. Выполните команду. Убедитесь, что в регистр А занесено значение 01h. Заметьте, что флаговый регистр установлен в следующее состояние: CCR=E8 111.I...
Проведите аналогичный эксперимент , используя команду LDA со всеми возможными
типами адресации:
0200 LDA 0Eoh ;Загрузить в А число из ячейки памяти с адресом 0E0h.
0200 LDA 210h ;Загрузить в А число из ячейки памяти с адресом210h.
Перед выполнением следующей команды занесите в регистр Xзначение0F0h, а в ячейку памяти с адресом0F0hпроизвольное число. Убедитесь, что в результате выполнения команды число из указанной ячейки памяти переместилось в А.
0200 LDA ,x ;Загрузить в А число из ячейки памяти, адрес которой хранится
;в регистре X..
Аналогичный эксперимент проведите с двумя следующими командами. После инициализации регистра X правильно определите адрес ячейки памяти, куда следует загрузить число, которое в результате выполнения команды будет загружено вA.
0200 LDA 80h,x ;Загрузить в А число из ячейки памяти, адрес которой
;вычисляется по правилу: ADR= 80h+( X.).
0200 LDA 200h,x ;Загрузить в А число из ячейки памяти, адрес которой
; вычисляется по правилу: ADR= 200H+( X.).
3. Исследуйте работу команды LDXв следующем примере:
0200 LDX 0E0h,X ;занести в X значение ячейки
;памяти 0E0h+X (индексная адресация с смещением 8 бит)
битовым смещением)
Занесите в ячейки памяти 0E0h-0E5h значения {01h, 45h, 0A3h, 00, 56h, 0F6h}. Выполните команду несколько раз, занося в регистр Х значения от 00 до 05. Убедитесь в том, что Х будут присваиваться значения, соответствующие элементам последовательности. При этом флаговый регистр будет также изменяться в соответствии с таблицей:
-
01
CCR=E8 111.I...
45
CCR=E8 111.I...
0А3h
CCR=EC 111.IN..
00
CCR=EA 111.I.Z.
56
CCR=E8 111.I...
0F6h
CCR=EC 111.IN..
Команды модификации памяти.
4. Покажем каким образом можно произвести запись в 5-й элемент массива, расположенного начиная с адреса 80h.
0200 STA 80h,X ;в ячейку 80h+X заносится содержимое
;аккумулятора (индексная адресация с 8
;битовым смещением)
В регистр Х занесите 04, в регистр А-087h. Выполнив программу, убедитесь, что в 5-ом элементе массива находится 087h. Регистр флагов содержит 0ECh.
5. Чтобы убедиться в невозможности записи в ППЗУ, проиллюстрируем запись индексного регистра в ППЗУ:
0200 STX 0248h ;попытка записи содержимого регистра Х
;в ячейку 0248h (ППЗУ) (использована
;прямая расширенная адресация)
Выполните команду. Убедитесь, что содержимое ячейки памяти не изменилось, но изменился флаговый регистр. Это приводит к выводу о том, что подобные команды можно использовать для установки флагов.