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

Пример выполнения команды с индексной адресацией со смещением 1 байт:

До операции:

A = 95h

X = 09h ; В ячейке памяти с адресом 89h записан код 0A8h.

После операции:

A = 0A8h

X = 09h ; В ячейке памяти с адресом 89h записан код 0A8h.

Индексная адресация со смещением 2 байта.

Команды с данным типом адресации имеют длину 3 байта. Первый байт содержит код операции, а второй и третий байты - двухбайтовую беззнаковую численную константу (двухбайтовый базовый адрес). В определении адреса операнда участвует индексный регистр Х, который содержит однобайтовый код смещения адреса (индекс смещения). Центральный процессор вычисляет адрес операнда путем беззнакового сложения двухбайтового базового адреса с однобайтовым индексом смещения. После сложения адрес операнда представляется в двухбайтовом формате. Диапазон возможных адресов операнда при этом способе адресации 0000h ¸0FFFh. Условное обозначение адреса в мнемонике команды совпадает с аналогичным для команд с индексной адресацией со смещением в 1 байт: LDA opr, X.

Например:

LDA 0200h, X ; Переслать в А содержимое ячейки памяти,

; адрес которой вычисляется по правилу: ADR=0200h+(X).

; A <---- (M)

Пример 3.

Пример выполнения команды с индексной адресацией со смещением 2 байта:

До операции

A = 0A0h

X = 0Bh ; В ячейке памяти с адресом 020Bh записан код 3Ah

После операции

В А пересылаются данные из ячейки памяти с адресом 0200h + 0Bh = 020Bh.

A = 3Ah

X = 0Bh ; В ячейке памяти с адресом 020Bh записан код 3Ah.

Мнемонические обозначения команд с индексной адресацией со смещениями 1 и 2 байта совпадают. Однако не следует беспокоиться об этом при написании программы. При трансляции программа Ассемблер самостоятельно подставит код необходимой операции, проанализировав численное значение адреса opr.

Относительная адресация.

Относительная адресация используется только в командах условных переходов, которые используются для организации ветвления программ. Команды условных переходов имеют двухбайтовый формат. Первый байт содержит код операции, а второй - смещение адреса следующей команды относительно адреса текущей команды в целочисленном формате со знаком. Диапазон возможных кодов смещения: от -128 до +128.

Если условие, заданное типом используемой команды условного перехода выполняется, то адрес следующей команды центральный процессор вычисляет путем сложения текущего адреса с кодом смещения. Если условие не выполняется, то микроконтроллер переходит к выполнению следующей команды.

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

1.3. Группа команд передачи данных.

Команды передачи данных осуществляют перемещение байтов данных между ячейками памяти, аккумулятором Aи индексным регистром X. Типы инструкций данной группы приведены в табл 1.

Таблица 1. Команды передачи данных.

Мнемокод

Выполняемое действие

Полное название

LDA

Переслать в А содержимое ячейки памяти

Load Accumulator with Memory Byte

LDX

Переслать в регистр Х содержимое ячейки памяти

Load Index Register with Memory Byte

STA

Запомнить содержимое аккумулятора А в ячейке памяти

Store Accumulator in Memory

STX

Запомнить содержимое индексного регистра в ячейке памяти

Store Index Register in Memory

TAX

Переслать содержимое А в индексный регистр

Transfer Accumulator to Index Register

TXA

Переслать содержимое индексного регистра в А

Transfer Index Register to Accumulator

Каждая из первых четырех команд может использовать 6 способов адресации. Поскольку на данном занятии Вам необходимо свободно освоить формы записи команд с различными способами адресации, то в табл. 2 приведен полный список инструкций передачи данных.

Таблица 2. Полный список инструкций передачиданных.

Мнемокод

Выполняемое действие

Способ

Флаги

адресации

C

Z

N

LDA #opr

LDA opr

LDA opr

LDA ,x

LDA opr,x

LDA opr,x

Загрузить в А число opr.

Загрузить в А число из ячейки памяти с адресом opr.

Загрузить в А число из ячейки памяти с адресом opr.

Загрузить в А число из ячейки памяти, адрес которой хранится в регистре X..

Загрузить в А число из ячейки памяти, адрес которой вычисляется по правилу: ADR= opr+ X..

Загрузить в А число из ячейки памяти, адрес которой вычисляется по правилу: ADR= opr+ X..

непосредственная

прямая

прямая

расширенная

косвенная

индексная с

базой 8 бит

индексная с базой

16 бит

-

-

-

-

-

-

­

­

­

­

­

­

­

­

­

­

­

­

LDX #opr

LDX opr

LDX opr

LDX ,x

LDX opr,x

LDX opr,x

Загрузить в X число opr.

Загрузить в X число из ячейки памяти с адресом opr.

Загрузить в X число из ячейки памяти с адресом opr.

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

Загрузить в X число из ячейки памяти, адрес которой вычисляется по правилу: ADR= opr+ X..

Загрузить в X число из ячейки памяти, адрес которой вычисляется по правилу: ADR= opr+ X..

непосредственная

прямая

прямая

расширенная

косвенная

индексная с

базой 8 бит

индексная с базой

16 бит

-

-

-

-

-

-

­

­

­

­

­

­

­

­

­

­

­

­

STA opr

STA opr

STA ,x

STA opr,x

STA opr,x

Запомнить содержимое А в ячейке памяти с адресом opr.

Запомнить содержимое А в ячейке памяти с адресом opr.

Запомнить содержимое А в ячейке памяти, адрес которой хранится в регистре X..

Запомнить содержимое А в ячейке памяти, адрес которой вычисляется по правилу: ADR= opr+ X..

Запомнить содержимое А в ячейке памяти, адрес которой вычисляется по правилу: ADR= opr+ X..

прямая

прямая

расширенная

косвенная

индексная с

базой 8 бит

индексная с базой

16 бит

-

-

-

-

-

­

­

­

­

­

­

­

­

­

­

STX opr

STX opr

STX ,x

STX opr,x

STX opr,x

Запомнить содержимое X в ячейке памяти с адресом opr.

Запомнить содержимое X в ячейке памяти с адресом opr.

Запомнить содержимое X в ячейке памяти, адрес которой хранится в регистре X..

Запомнить содержимое X в ячейке памяти, адрес которой вычисляется по правилу: ADR= opr+ X..

Запомнить содержимое X в ячейке памяти, адрес которой вычисляется по правилу: ADR= opr+ X..

прямая

прямая

расширенная

косвенная

индексная с

базой 8 бит

индексная с базой

16 бит

-

-

-

-

-

­

­

­

­

­

­

­

­

­

­

TAX

Переслать содержимое А в индексный регистр X

Непосредственная

-

-

-

TXA

Переслать содержимое индексного регистра Xв А

Непосредственная

-

-

-

Следует отметить, что первые 4 команды модифицируют флаг нулевого результата и флаг отрицательного результата. Последние 2 команды не влияют на признаки.

Бит N в CCR устанавливается, если установлен старший бит аккумулятора B7, в противном случае сбрасывается. Бит Z в CCR установлен, если в аккумуляторе $00, иначе сброшен.

Ниже приведена короткая программа, которая загружает числа 44h и 31h в ячейки ОЗУ с адресами 0F0h и 0E0h соответственно.

Пример 4.

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