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

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

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

Пример:

0089

1122

table dc.w

$1122

008b

3344

dc.w

$3344

. . . .

ae03

ld X, #03

; загрузка

05f2

 

индекса

 

 

короткого.

 

 

 

 

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

;load indexed

05f5

90d6077e

ld

A,(table,Y)

 

long

 

 

 

 

....

1122

table

dc.w

$1122

077e

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 кб памяти.

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

Пример:

var dc.b

$42

0089

42

....

89

ptr dc.b

var

00cb

....

92b6cb ld A,[ptr] ; загрузка

05f2

 

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

 

 

Коментарий: CPU находит адрес аргумента в

 

локальной памяти по имени короткого

 

указателя ptr.

 

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

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

 

$42

 

 

 

{PC} = $05f5

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

Пример:

 

 

 

 

 

00cb

48c0

ptr

dc.w

var

 

....

 

 

 

 

 

 

05f2

92c6cb

ld

A,[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.

Пример:

00

короткая

0040

table

dc.b 0,1,2,3

0041

01

 

 

 

0042

02

 

 

 

0043

03

 

 

 

....

40

ptr

dc.b table

0089

....

ae03

ld X,#3

05a0

05a2

92e689

ld

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

 

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

 

 

 

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

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

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

{PC} = $05a5

длинная

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

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

0089

1f40

Пример:

table

 

ptr dc.w

....

 

ae03

ld X,#3

 

05a0

 

 

05a2

 

92d689

ld A,([ptr.w],X) ;загрузка

 

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

 

• ....

f0

table

dc.b $f0,$f1,$f2,$f3

1f40

1f41

f1

 

 

 

1f42

f2

 

 

 

1f43

f3

 

 

 

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

 

сложением двух байтного указателя, считываемого из

 

ячеек

0х89 и 0х8А, и содержимого индексного

 

регистра Х.

 

 

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

 

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

 

{$1f43} = $f3

 

 

{PC} = $05a5

Длинные и короткие

Функции команды

команды

 

(Long and Short

 

Instruction)

 

LD

Загрузка

CP

Сравнение

AND, OR, XOR

Логические операции

ADC, ADD, SUB, SBC

Арифметические

 

операции

 

сложение/вычитание

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