Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОТ МП.doc
Скачиваний:
187
Добавлен:
10.02.2016
Размер:
5.13 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, зсунутий на один розряд ліворуч та розширений знаком до 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).

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

За непрямого відносного адресування з постіндексуванням та преіндексуванням ефективна адреса формується як за непрямого регістрового адресування, але замість вмісту регістра Аn використовується вміст програмного лічильника :

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

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

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

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

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

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

JMP($4,,A2.W)

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

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

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

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

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

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

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

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

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

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

Контрольні питання підвищеної складності:

  1. З якою метою, на Ваш погляд, використовується при роботі з масивами непряме регістрове адресування з постіндексуванням?

  2. З якою метою, на Ваш погляд, використовується при роботі з масивами непряме регістрове адресування з преіндексуванням?

  3. У яких випадках доцільно використовувати кожний із зазначених в пп. 1 та 2 видів адресування?