Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Антонов О.С., Хiхловська I.В. Обчислювальна тех...doc
Скачиваний:
15
Добавлен:
01.09.2019
Размер:
4.12 Mб
Скачать

Непряма регістрова адресація з постіндексуванням

Синтаксис асемблера має вигляд:

([bd, An], Ri.s*SCALE, od),

де bd — базове зміщення, Ri.s*SCALE — значення індексного регістра An або Dn, яке множиться на масштабний множник SCALE — 1, 2 ,4 або 8, od — вихідне зміщення, s — символ розрядності індексного регістра, може дорівнювати W або L. Вміст індексного регістра Ri.s трактується як число зі знаком і у разі s = W знак поширюється на 32 розряди.

Наприклад, запис A3.W*2 означає, що індексом у команді слугує вміст 16 молодших розрядів регістра адреси А3, зсунутий на 1 розряд ліворуч та розширений знаком до 32 розрядів.

Команда

CLR ([$1234, A2], D3.L, $5678)

буде очищати комірку пам’яті з ефективною адресою ЕА, яка підраховується таким чином. Припустимо, що вміст регістра А2 становить $400600, а регістра D3 відповідно $1000. Частина ефективної адреси ЕА, яка є вказана у квадратних дужках, дорівнює:

$

+

400600

$001234

$401834

Припустимо, що за цією адресою у пам’яті зберігається число $600600. Тоді повна ефективна адреса, вказана у команді, дорівнює:

ЕА = $600600 + $1000 + $5678 = $606C78.

У результаті виконання команди будуть обнулені 16 молодших розрядів даного, яке зберігається у пам’яті , починаючи з адреси $606C78.

Непряма регістрова адресація з преіндексуванням

Синтаксис асемблера має вигляд:

([bd, An, Ri.s*SCALE], od)

Ефективна адреса ЕА підраховується аналогічно попередньому засобу.

Команда

CLR ([$1234, A2, D3.L] $5678)

буде очищати комірку пам’яті з ефективною адресою ЕА, частина якої, вказана у квадратних дужках, дорівнює:

$400600 + $1234 + $1000 = $402834.

Припустимо, що починаючи з цієї адреси у пам’яті зберігається довге слово $600600, тоді

ЕА = $600600 + $5678 = $605С78

У результаті виконання команди будуть обнулені 16 молодших розрядів даного, яке зберігається у пам’яті, починаючи з адреси $605С78.

Непряма відносна адресація з індексуванням

Систаксис асемблера має вигляд:

(*+d, PС, Ri.s*SCALE)

або

(ххх, PС, Ri.s*SCALE).

Вмістом PС вважається адреса наступної команди.

При непрямій відносній адресації з постіндексуванням та преіндексуванням ефективна адреса формується як при непрямій регістровій адресації, але замість вмісту регістра Аn використовується вміст програмного лічильника PС:

ЕА = [PС + bd] + (Xn) * SCALE + od — у разі постіндексування

EA = [PС + (Xn) * SCALE + bd] + od — у разі преіндексування

Якщо замість PС вказати ZPС, то можна задати у команді таке значення програмного лічильника, що дорівнює 0.

Нижче наводяться приклади використання команди JMP з різними способами адресації.

JMP ($400610, PС, A2.W)

JMP (*+$10, PС, A2.W)

JMP ($4, PС, A2.W)

JMP (*+$1000, PС, A2.W)

JMP ($400610, ZPС, A2.W)

Команди асемблера МП68000 можуть займати від одного до 5 байт, а старших моделей — до 6 байт.

Контрольні запитання:

  1. Наведіть формат типової команди МП М680Х0.

  2. Покажіть, де у форматі типової команди є джерело, а де приймач.

  3. Як у форматі команди вказується розрядність операндів?

  4. У яких системах числення можна подавати операнди, адреси та зміщення у командах мови асемблера МП фірми Motorola?

  5. Які способи адресації операндів підтримує МП МС68000?

  6. Які способи адресації операндів підтримує додатково МП МС68020 і старших моделей і з чим це пов’язано?