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



Индексная адресация со смещением в один байт и постинкрементированием используется только в команде CBEQ. В определении адреса одного из операндов команды участвует индексный регистр H:Х, который содержит код базового адреса. Центральный процессор вычисляет адрес операнда путем сложения содержимого индексного регистра H:X с байтом кода смещения, который указан во втором байте команды. После сложения адрес операнда представляется в двухбайтовом формате. После выполнения команды содержимое индексного регистра H:X увеличивается на 1.

 

Примеры:

CBEQopr,X+,rel   ;Запись команды CBEQ с индексной адресацией со смещением в один

;байт и постинкрементированием в общем виде.

CBEQ $80,X+,m1 ;Сравнить содержимое аккумулятора ACC и содержимое ячейки

;памяти, адрес которой равен (H:X) + 128. Перейти по метке m1 в случае

;равенства. Увеличить на 1 содержимое регистра H:X.

 

Индексная адресация по указателю стека со смещением в один

Команды с данным типом адресации имеют длину 3 байта. Первый и второй байты содержат код операции, а третий байт - беззнаковую константу смещения. В определении адреса операнда участвует указатель стека SP, который содержит код базового адреса. Центральный процессор вычисляет адрес операнда путем сложения содержимого указателя стека SP с кодом смещения. После сложения адрес операнда представляется в двухбайтовом формате.

 

Примеры:

ADDopr,SP ;Запись команды ADD с адресацией по указателю стека со смещением в один              ;байт в общем виде.

ADD $80,SP ;Сложить содержимое аккумулятора АCC с содержимым ячейки памяти,

;адрес которой равен (SP)+128. Результат поместить в ACC.

LDA $1,SP ;Загрузить в аккумулятор ACC содержимое ячейки памяти, адрес которой

;равен (SP)+1.

 

Индексная адресация по указателю стека со смещением в два байта

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

 

Примеры:

ADDopr,SP           ;Запись команды ADD с адресацией по указателю стека со смещением в

;один байт в общем виде.

ADD $0200,SP     ;Сложить содержимое аккумулятора АCC с содержимым ячейки памяти,

;адрес которой равен (SP)+512. Результат поместить в ACC.

LDA $01FF,SP      ;Загрузить в аккумулятор ACC содержимое ячейки памяти, адрес которой ;равен (SP)+ $01FF.

 

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

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

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

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

 

Примеры:

BRArel                   ;Запись команды безусловного перехода с относительным способом ;адресации в общем виде.

BRAm1                 ;Перейти к выполнению программы, начиная с метки m1.

BCSm3                  ;Перейти по метке m3, если бит переноса С установлен. Иначе перейти к ;следующей команде.

 


Дата добавления: 2018-04-04; просмотров: 374; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!