Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ДВК-У.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
929.28 Кб
Скачать

5.2 Адресація через рон

Загальні режими адресації пам'яті в МС1202. Опишемо і проілюструємо на прикладах режими, перераховані в таблиці. 3.1. Для простоти використовуємо команду з мнемонічним записом MOV XI, Х2. Ця команда здійснює пересилку даного з одного місця, визначуваного вираженням XI, в інше місце, диктоване вираженням Х2. Запишемо вирази XI і Х2, застосовуючи символічний запис з таблиці. 5.1. У кожному прикладі, що ілюструє режим адресації, наводитимемо виконувану команду і стан використовуваних в ній регістрів і слів пам'яті до виконання і після виконання команди.

Регістровий режим.

Він характеризується тим, що операнд, що адресується, знаходиться в регістрі загального призначення. Залежно від команди регістровий режим може задаватися для єдиного операнда, операнда-джерела, операнда-приймача або для обох операндів (у двоадресних командах).

Команда MOV R2, R3

До виконання

Після виконання

R 2/3 25

R2/325

R3/1274

R3/325

Тут запис R2/325 означає, що вміст регістра R2 рівно вісімковому числу 325. Аналогічна форма запису використовується в подальших прикладах і для вказівки содержи- 96 мого деякого слова пам'яті. Наприклад, запис 3762/117433 говорить про те, що слово пам'яті з вісімковою адресою 3762 містить вісімкове число 117433. У даній команді в результаті її виконання змінився вміст регістра R3, набувши вісімкового значення 325.

Таблиця 5.1

Код режиму

Символічний запис

Найменування режиму

0

Rn

Регістровий

1

@ Rn або (Rn)

Регістровий непрямий

2

(Rn)+

Автоінкрементний

3

@ (Rn) +

Автоінкрементний непрямий

4

-(Rn)

Автодекрементний

5

@-(Rn)

Автодекрементний непрямий

6

E(Rn)

Індексний

7

@E(Rn)

Індексний непрямий

Примітка. Код режиму є вмістом бітів 11-9 або 5-3 в коді адресної команди залежно від того, чи відноситься режим адресації до першого або другого операнда; Rn - ім'я регістра загального призначення.

Регістровий непрямий режим.

У цьому режимі операнд, що адресується, знаходиться в основній пам'яті, а адреса операнда - в заданому регістрі.

Команда MOV@ R4, R5

До виконання

Після виконання

R4/1600

R 4/1600

R5/124

R5/26501

1600/26501

1600/26501

У цій команді для операнда-джерела заданий регістровий непрямий режим адресації, а для операнда-приймача - ре­гистровый. Команда пересилає вміст слова пам'яті, що має адресу 1600, в регістр R5.

Автоінкрементний режим.

Він подібний реги­стровому непрямому режиму, за винятком того, що після адресації операнда і виконання над ним заданої операції вміст регістра автоматично збільшується на 2 (у командах виконання операцій над словами) або на 1 (у командах виконання операцій над байтами)

Команда MOV (R4) +, R5

До виконання

Після виконання

R4/1600

R4/1602

R5/124

R5/26501

1600/26501

1600/26501

Команда пересилає вміст слова пам'яті з адресою 1600 в регістр R5, після чого вміст регістра R4 збільшується на 2.

Автоінкрементний непрямий режим.

Він характеризується тим, що заданий в команді регістр містить адресу слова пам'яті, що зберігає адресу операнда. Після доступу до операнда вміст регістра збільшується на 2 (у послівних командах) або на 1 (у байтових командах) .

Команда MOV R2 @ (R3) +

До виконання

Після виконання

R2/760

R2/760

R3/4274

R 3/4 276

4274/1366

4274/1366

1366/176205

1366/760

Таким чином, команда пересилає вміст регістра R2 (число 760) в слово пам'яті, що має адресу 1366. Після цього вміст регістра R3 збільшується на 2.

Автодекрементний режим.

На відміну від автоінкрементного режиму тут заздалегідь, до доступу до операнда, вміст регістра зменшується на 2 або 1 (залежно від команди) і лише після цього використовується як адреса операнда, що знаходиться в основній пам'яті. Отже, автоінкрементний і автодекрементний режими протилежні до один одного. Вони зручні для перегляду масивів в прямому і зворотному напрямах, а також при виконанні операцій над стеком.

Команда MOV - (Rl), R5

До виконання

Після виконання

Rl/3404

R1/3402

R5/47100

R5/123210

3402/123210

3402/123210

Ця команда спочатку зменшує вміст регістра R1 на 2 (виходить адреса 3402), а потім пересилає число із слова пам'яті з адресою, що вийшла, 3402 в регістр R5. 98

Автодекрементний непрямий режим.

У даному режимі вміст регістра, заздалегідь зменшений на 2 або 1 (залежно від команди), використовується як покажчик адреси, по якій в пам'яті зберігається адреса операнда.

Команда MOV R2 @ - (R3)

До виконання

Після виконання

R2/1232

R 2/1232

R3/5766

R3/5764

5764/3600

5764/3600

3600/54321

3600/1232

Ця команда пересилає число 1232 з регістра R2 в слово пам'яті за адресою 3600. З цією метою спочатку вміст регістра R3 зменшується на 2 (виходить адреса 5764), потім із слова пам'яті з адресою 5764 витягується адреса 3600 і за цією адресою записується вміст регістра R2.

Індексний режим.

Адреса операнда в індексному режимі обчислюється підсумовуванням вмісту регістра і константи Е, званої індексом. Індекс зберігається в другому слові команди, якщо індексний режим адресації заданий лише для одного операнда. Якщо команда двооперандна і для кожного операнда заданий індексний режим адресації, то в другому слові розташовується перший індекс, а в третьому слові - другий індекс. Значить, команда з індексним режимом займає в пам'яті два або три слова підряд.

Команда MOV 236(R3), R4

До виконання

Після виконання

R3/2000

R3/2000

R4/0

R4/123674

2236/123674

2236/123674

Команда пересилає вміст слова пам'яті з адресою 2236 в регістр R4. Адреса 2236 є сума вмісту регістра R3 і індексу 236.

Індексний непрямий режим.

У цьому режимі вміст регістра, складений з індексом Е, використовується як адреса, по якій в пам'яті зберігається адреса операнда. Індекс знаходиться в другому або третьому слові команди.

Команда MOV @ 236(R3), R4

До виконання

Після виконання

R3/2000

R3/2000

R4/0

R4/777

2236/123674

2236/123674

123674/777

123674/777

Ця команда пересилає вміст слова з адресою 123674 в регістр R4. Число 123674 є вміст слова пам'яті, адреса якого є сума вмісту регістра R3 і індексу 236.

5.3 Режими адресації з використанням регістра R7 як програмного лічильника.

При виконанні операції, вказаної в поточній команді, програмний лічильник зберігає адресу наступної команди. З врахуванням цієї функції програмного лічильника в МС1202 реалізуються чотири додаткові режими адресації (таблиця. 3.2).

Таблиця 3.2

Кодрежиму

Символічназапис

Найменування режиму

2

# Е

Безпосередній

3

@ # Е

Абсолютний

6

Е

Відносний

7

@ Е

Відносний непрямий

Безпосередній режим.

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

Команда MOV # 124, R3

До виконання

Після виконання

R3/1000

R3/124

Команда пересилає константу 124 в регістр R3.

Абсолютний режим.

Тут константа Е використовується як адреса операнда. Цей режим найчастіше застосовується для доступу до операндів, що зберігаються по заздалегідь відомих адресах пам'яті.

Команда MOV @ # 124, R5

До виконання

Після виконання

R5/0

R5/63210

124/63210

124/63210

Дана команда пересилає вміст слова пам'яті з адресою 124 в регістр R5.

Відносний режим.

Тут операнд Е адресується відносно поточного вмісту програмного лічильника, т.е.-регистра R7 (або РС). Відносна адреса операнда зберігається в другому або третьому слові команди.

Команда MOV A, R2

До виконання

Після виконання

R2/0

R2/12460

Дана команда — двухсловная. Передбачається, що операнд А має значення 12460. Якщо, наприклад, команда має адресу 1500, а операнд А - адреса 1726, то в машинному представленні команди її друге слово зберігає число 1726—1504= = 222, що є відносною адресою операнда А. Число 1504 - це адреса слова, наступного за останнім (другим) словом команди. Таке вміст програмного лічильника після доступу до операнда А. Нагадаємо, що в прикладах адреси, що наводяться, і дані записані у вісімковій системі числення.

Відносний непрямий режим.

Він характеризується тим, що слово пам'яті, відповідне записаному в команді символічному імені Е, містить адресу операнда. У машинному представленні команди, в її другому або третьому слові, зберігається відносна адреса слова, відповідного імені Е.

Команда MOV @ A, R2

До виконання

Після виконання

R2/0

R2/1000

12460/1000

12460/1000

Ця команда - двухсловная. Як і в попередньому прикладі, передбачається, що операнду А відповідає слово пам'яті з адресою 1726 і що в цьому слові зберігається число 12460. Але тепер це число розглядається як адреса операнда. Сам операнд - це вміст слова з адресою 12460, тобто число 1000 в нашому прикладі. Після виконання команди це число виявиться в регістрі R2. Відзначимо, що вміст другого слова даної команди — таке ж, як і в команді з попереднього прикладу, тобто рівне 222.