Индексная адресация со смещением в один байт и постинкрементированием
Индексная адресация со смещением в один байт и постинкрементированием используется только в команде 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; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!