- •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 байта. Первый байт предназначен для кода команды, второй байт содержит адрес ячейки памяти, где хранится операнд. Так как микроконтроллер МС68НС705К1 имеет адресное пространство, превышающее диапазон 00h ¸0FFh, то во втором байте команды задается только младший байт адреса, а старший автоматически устанавливается 00h.
Условное обозначение адреса в мнемонике команды - opr: ADD opr.
Например:
LDA0E1h ; Переслать в аккумулятор содержимое ячейки памяти с адресом 00Е1h.
; А <--- (M)
ADD 0E1h ; сложить содержимое А с числом, которое записано в
; ячейке памяти с адресом 00Е1h. Результат поместить в А.
; {A <--- (A) + (M)
Прямая расширенная адресация.
Команды с расширенной прямой адресацией имеют длину 3 байта. Первый байт предназначен для кода команды, второй и третий байты содержат адрес ячейки памяти, где хранится операнд. Команды с расширенной прямой адресацией позволяют работать со всем адресным пространством микроконтроллера. Мнемоническое обозначения команд с прямой и прямой расширенной адресацией совпадают (сравните примеры в предыдущем разделе и те, которые приведены ниже). Обобщенное обозначение двухбайтового адреса в команде также совпадает с однобайтовым: ADD opr, opr - двухбайтовый адрес.
Например:
LDА 01E1h ; Переслать в аккумулятор содержимое ячейки памяти
; с адресом 01E1h.
; A <---- (M)
ADD 01E1h ; Сложить содержимое А с числом, которое записано в
; ячейке памяти с адресом 01E1h. Результат поместить в А.
; A <---- (A) + (M)
При трансляции программ учебным Ассемблером не следует заботиться о том, что инструкции с прямой и прямой расширенной адресацией имеют одинаковую мнемонику. Программа Ассемблер самостоятельно подставит код необходимой операции, проанализировав численное значение адреса opr.
Косвенная адресация.
Команды с косвенной адресацией имеют длину 1 байт, в котором расположен код операции. Адрес операнда находится в индексном регистре Х. Так как регистр однобайтовый, то старший байт операнда автоматически устанавливается в 00h. Диапазон возможных адресов при этом способе адресации 0000h ¸00FFh.
Например:
LDA ,X ; Переслать в А содержимое ячейки памяти,
; адрес которой находится в индексном регистре Х.
; A <---- (M)
Пример 1.
Пример выполнения команды с косвенной адресацией:
До операции
A = 95h
X = 0F3h ; В ячейке памяти с адресом 0F3h записан код 11h.
После операции
A = 11h
X = 0F3h ; В аккумуляторе записан код 11h.
Индексная адресация со смещением 1 байт.
Команды с данным типом адресации имеют длину 2 байта. Первый байт содержит код операции, а второй - численную константу, которая носит название “базовый адрес”. В определении адреса операнда участвует индексный регистр Х, который содержит код смещения адреса (индекс смещения). Центральный процессор вычисляет адрес операнда путем беззнакового сложения содержимого индексного регистра с кодом, записанным во втором байте команды. После сложения адрес операнда представляется в двухбайтовом формате. Диапазон возможных адресов операнда при этом способе адресации 0000h ¸01FFh. Условное обозначение адреса в мнемонике команды - opr: LDA opr, X.
Например:
LDA 80h, X ; Переслать в А содержимое ячейки памяти,
; адрес которой вычисляется по правилу:ADR=80h+содержимое регистраX.
; A <---- (M)
Пример 2.