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

Тема 8. Методи адpесацiї

Адpесацiя - споciб отpимання з пам'ятi даних.

В МП Intel 8080 викоpистовують такi методи адресації: пpяма; пpяма pегicтpовa; посеpедня pегістpова; безпосеpедня; змішана; неявна та стекова.

  1. Пряма адресація

При прямій адресації пам’яті виконується команда, що включає адресу даних, які беруть участь в операції. Тобто сама адреса є частиною команди. Цією адресою може бути або адреса пам’яті, або номер ПВВ.

LDA Addr STA Addr IN port OUT port LHLD Addr SHLD Addr

Переваги:

Пряма адресація не вимагає обчислень, легка для розуміння та дозволяє вибирати будь-яку комірку пам’яті.

Однак ця адресація потребує великого формату команди. Так 8-бітний процесор потребує 16-бітної адреси, яка складається з двох 8-бітних комірок. Цей формат можна зменшити завдяки розділення пам’яті на секції (сегменти) або сторінки.

  1. Пряма регістрова адресація

Використання прямої регістрової адресації передбачає зазначення в полі операнда команди одного з регістрів А,В,С,D,E,H,L. В них знаходиться один операнд, а акумулятор містить другий операнд.

Наприклад, команда СМР Е виконує зіставлення змісту регістру Е з акумулятором.

A=22H E=33H F=42H 00100010 10110011 ПК

CMP E A=22H E=33H F=82H +11001101 11001100 ОК

11101111 11001101 ДК

F= 10000010

Більшість команд, що використовують регістрову адресацію, маніпулюють з 8-бітними даними. Однак деякі використовують 16-бітні значення пари регістрів.

MOV R1,R2 MVI R,D8 LXI Rp,D16 ADD R CMP R ORA R XRA R ANA R DAD Rp DCX Rp INX Rp DCR R INR R SBB R SUB R ADC R

R – регістр, Rp – регістрова пара, D8 – байт даних, D16 – двохбайтне число.

  1. Посередня регістрова адресація

В цьому методі адресації використовується дві адреси. Першу адресу включено в команду і вона є адресою пари регістрів. Пара регістрів містить не операнд, як при прямій адресації, а другу адресу, яка є адресою байта пам’яті. Операнд знаходиться в пам’яті.

Наприклад, команда MOV M,C надсилає зміст регістра С в пам’ять за адресою, що знаходиться в регістровій парі H,L.

MOV R,M MOV M,R MVI M,D8 ADD M ADC M LDAX Rp STAX Rp SUB M SBB M INR M DCR M ANA M XRA M ORA M CMP M

Посередня регістрова адресація повільніша за пряму, але є більш гнучкою при обробці масивів інформації.

  1. Безпосередня адресація

При безпосередній адресації дійсні дані становлять частину команди.

Приклад А=50H ADI 25H A  A+25H

A=75H F=00000010B

MVI R,D8 MVI M,D8 LXI Rp,D16 ADI D8 ACI D8 SUI D8 SBI D8 ANI D8 XRI D8 ORI D8 CPI D8 JMP Addr JZ Addr JNZ Addr JC Addr JNC Addr JPE Addr JPO Addr JM Addr JP Addr

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

  1. Змішана адресація

Деякі команди об’єднують пряму адресацію та посередню регістрову. Так в команді CALL 0516H пряма адресація вказує на адресу підпрограми, що викликається, а посередня регістрова адресація через вказівник стеку визначає адресу ОЗП, куди й записується значення лічильника команд.

CALL Addr CZ Addr CNZ Addr CC Addr CNC Addr CPE Addr CPO Addr CM Addr CP Addr RET RZ RNZ RC

RNC RPE RPO RM RP RST N

6. Неявна адресацiя

При такiй адресацiї адреса одного або обох операндiв неявно задається в кодi операцiї. Операцiя може виконуватися або тiльки з змiстом акумулятора, який адресується кодом команди й немає резону його згадувати спецiально, або з парою регістрів чи стеком.

DAA RLC RRC RAL RAR CMA XTHL SPHL PCHL XCHG EI DI

Вибiр способу адресацiї впливає на час виконання команд та об'єм програми в пам'ятi. Команди, якi використовують неявну, безпосередню, або регiстрову адресацiю, виконуються бiльш швидко, так як оперують з даними, пiдготовленими на регiстрах МП.

7.Стекова адресацiя

Як ви вже знаєте стек - це аналог черги.

В МП КР580 є двi стековi операцiї:

- запис в стек (PUSH),

- читання iз стеку (POP).

Операцiя запису в стек використовується для занесення в вiдведену для стеку пам'ять 16 бiт даних iз пари регiстрiв або лiчильника команд. Адреса ОЗП, по якiй повинно вiдбутися звертання, визначається за допомогою вказівнику стеку наступним чином:

PUSH B (B)  {(SP-1)} (C)  {(SP-2)} (SP)-2  (SP)

Наприклад,

SP=278E16 (B) = C8H (C) = 21H

До операції Зміст ОЗП Зміст ОЗП Після запису

запису Адреса

ОЗП

SP: FF 278B FF SP: 278C

B: FF 278C 21 B: C8

C: FF 278D C8 C:

278E

Рис.8.1.Запис даних в стек

Опеpація читання даних із стеку викоpистовується для вилучення із відведеної під стек пам'яті 16 біт даних в визначену паpу pегістpів або в лічильник команд. Адpеса ОЗП, по якій відбувається звеpтання, визначається за допомогою вказівника стеку наступним чином:

POP D (C)  {(SP)} (D)  {(SP+1)} (SP)  (SP) + 2

Наприклад, POP H

SP=1520H

До операції Зміст ОЗП Зміст ОЗП Після читання

читання Адреса

ОЗП

SP: FF 151F FF SP:

H ED 1520 ED H:

L: 28 1521 28 L:

FF 1522 FF

Рис.8.2.Читання даних із стеку

Пеpед виконанням стекових опеpацій у вказівник стеку необхідно завантажити необхідне значення адpеси за допомогою команди LXI SP,... Два байти ОЗП, що задаються в цій команді називають веpшиною стеку.

-

-

-

-

-

D

E

B

C

-

-

-

H

L

D

E

B

C

-

-

-

-

-

-

-

B

C

вершина

Рис.8.3. Пpинцип заповнення стекової пам'яті

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]