Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
44
Добавлен:
23.02.2015
Размер:
1.68 Mб
Скачать

Индексная

Адрес операнда определяется без знаковым сложением содержимого индексного регистра (Х или У) и смещения, три под способа: Индексная

без смещения.

Нет смещения, позволяет адресоваться к пространству 00 – FFh.

Пример:

00b8

1122

table

dc.w

$1122

00ba

3344

 

dc.w

$3344

. . . .

 

 

 

 

05f2

aeb8

 

ld X, #table

05f4

f6

 

ld A,(X) ;

загрузка

 

индекса без смещения.

 

 

Комментарий: СРU вычисляет адрес аргумента сложением

нулевого смещения $00 с содержимым индексного регистра X.

Индексная короткая

Смещение - байт после opcode . Адресация к 00 - 1FEh.

Пример:

0089

1122

table dc.w

$1122

008b

3344

dc.w

$3344

. . . .

 

 

 

05f2

ae03

ld X, #03

; загрузка

индекса

 

 

короткого.

 

 

 

05f4

e689

ld A,(table,X)

Комментарий: СРU вычисляет адрес аргумента сложением байта ячейки $05f5 с содержимым индексного регистра X.

Состояние после выполнения:

{X} = $03; {A} ={ {$05f5} + {X} } = {$89 + $03} =

{8c} = $44; {PC} = $05f6.

Индексная длинная

• Смещение - 2 байта после opcode. Адресация к 64 кб памяти.

Пример:

 

05f2

90ae02 ld

Y,#02

05f5

90d6077e

ld A,(table,Y) ;load indexed

long

 

 

....

077e 1122 tabledc.w $1122

0780 dc.w $5577

Коментарий: CPU вычисляет адрес аргумента по содержимому

двух байтного числа из ячеек $05f7 и $05f8, суммируя его с содержимым индексного регистра Y.

Состояние после выполнения:

{Y} = $02

{A} = {{$05f7,$05f8}+{Y}} = {$077e+$02} = {$0780}

=$55

{PC} = $05f9.

Косвенная (короткая, длинная)

Адресация операнда осуществляется указателем, расположенным в памяти. Адрес указателя следует за opcode. Косвенный способ адресации состоит из двух под способов:

Косвенная короткая.

Адрес указателя состоит из 1 байта и следует после opcode, размер указателя также равен 1 байту. Адресуемое пространство 00 – FFh.

Косвенная длинная.

Адрес старшего байта указателя состоит из 1 байта и следует после opcode. Размер указателя - слово, хранится в двух ячейках. Адресация к 64 кб памяти.

Косвенная короткая

• Пример:

0089 42 var dc.b $42

....

00cb 89 ptr dc.b var

....

05f2 92b6cb ld A,[ptr] ; загрузка косвенная

короткая

Коментарий: CPU находит адрес аргумента в локальной памяти по имени короткого указателя ptr.

Состояние после выполнения:

{A} = {{ptr}} = {{$cb}} = {$89} = $42

{PC} = $05f5

Косвенная длинная

Пример:

00cb 48c0 ptr dc.w var

....

05f2 92cdcb ldA,[ptr.w] ; загрузка косвенная

длинная

....

48c0 99 var dc.b $99

Коментарий: CPU находит адрес аргумента в локальной памяти по имени длинного указателя ptr.

Состояние после выполнения:

{A} = {{ptr.w}} = {{0xcb}} = {$48c0}= $99

{PC} = $05f5

Косвенная индексная (короткая, длинная)

Это - комбинация косвенных и коротких индексных способов адресации. Адрес операнда определяется без знаковым сложением содержимого индексного регистра (X или Y) с величиной указателя в памяти. Адрес указателя следует за opcode.

Косвенный индексный способ адресации состоит из двух под способов:

Косвенная индексная короткая

Адрес указателя - байт, размер указателя – байт. Позволяет адресоваться к пространству памяти 00 - 1FEh и требует 1 байта после opcode.

Косвенная индексная короткая

• Пример:

0040 00 table dc.b 0,1,2,3

0041 01

0042 02

0043 03

....

0089 40 ptrdc.b table

....

05a0

ae03

ld X,#3

05a2

92e689

ld A,([ptr],X);загрузка косвенная индексная короткая

Коментарий: CPU вычисляет адрес аргумента сложением однобайтного указателя, считываемого из локальной ячейки 0х89 и содержимого индексного регистра Х.

Состояние после выполнения:

{A} = {{ptr}+{X}} = {$40+$03} = {$43} = $03

{PC} = $05a5

Косвенная индексная длинная

Адрес старшего байта указателя состоит из 1 байта и следует после opcode.

Размер указателя - слово, хранится в двух ячейках памяти позволяет адресация к 64 килобайтам памяти.

 

 

Косвенная индексная длинная. Пример:

0089

1f40 ptr dc.w table

....

 

 

05a0

ae03

ld X,#3

05a2

92d689

ld A,([ptr.w],X) ;загрузка косвенная

индексная длинная

....

1f40 f0 table dc.b $f0,$f1,$f2,$f3

1f41 f1

1f42 f2

1f43 f3

Коментарий: CPU вычисляет адрес аргумента сложением двух

байтного указателя, считываемого из ячеек 0х89 и 0х8А, и содержимого индексного регистра Х.

Состояние после выполнения:

{A} = {{ptr}+{X}} = {{$1f40}+$03} = {$1f43} =

$f3

{PC} = $05a5

Соседние файлы в папке МПСслайды