Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры по архитектуре.docx
Скачиваний:
8
Добавлен:
16.04.2019
Размер:
258.32 Кб
Скачать

51. Способы адресации мп Intel 8086.

Режимом, или способом адресации называют процедуру на­хождения операнда. Различают следующие режимы адресации.

1.1 Регистровый. Операнд (байт или слово) находится в регис­тре. Этот способ адресации применим ко всем программно- адресуемым регистрам процессора.

incAХ ; Увеличение на 1 содержимого АХ

pushСS ; Сегментный адрес сохраняется в стеке

xchg ВХ,ВР ; Регистры ВХ и ВР обмениваются содержимым

movES,AX ; Содержимое АХ пересылается в ES

1.2Непосредственный. Операнд, (байт или слово) указывается в команде; он может иметь любой смысл (число, адрес,код ASCII), а также быть представлен в виде символического обозначения.

movAH,40h ; Число 40h загружается в АН

movAL,'*' ; Код ASCII символа * загружается в AL

int 21h ; Команда прерывания типа 21h

equ 528,limit ; Число 528 получает обозначение limit

movCX,limit ; Число, обозначенное limit, загружается

; в CX

Важным применением непосредственной адресации является пересылка относительных адресов (смещений). Чтобы указать, что речь идет об относительном адресе данной ячейки, а не об ее содержимом, используется описатель OFFSET: ; Сегмент данных

mesdb 'Ждите' ; Отрока символов

; Сегмент команд

movDX,offsetmes ; Адрес строки засылается в DХ

1.3 Прямой. Адресуется память; адрес ячейки памяти (слова или байта) указывается в команде:

;Сегмент данных

memdw 0 ; Резервируется слово памяти (и в него

; засылается 0)

;Сегмент команд

Incmem ; Содержимое этого слова увеличивается на 1

movDX,mem ; Содержимое слова с именем mem загружается

; в регистр DX

1.4 Регистровый косвенный (базовый или индексный). Адресуется память (байт или слово). Относительный адрес опе­ранда находится в регистрах ВХ или ВР (базовая адресация) или в регистрах SI или DI (индексная адресация). При исполь­зовании регистров ВХ, SI и DI подразумевается сегмент, адре­суемый через DS; при использовании ВР подразумевается сег­мент стека и, соответственно, регистр SS. Допускается замена сегмента. Обозначение этого способа адресации:

[ВХ](подразумевается DS:[BX])

[ВР](подразумевается SS:[BP])

[Sl](подразумевается DS:[SI])

[DI](подразумевается DS:[DI])

Регистровый косвенный способ адресации удобно использо­вать в тех случаях, когда к некоторой ячейке памяти прихо­дится обращаться многократно:

movSI,offsetcells ; Относительный адрес ячейки cells

; загружается в SI

movAX,[SI] ; Содержимое ячейки cells ;

; загружается в AX

inc [SI] ; инкремент содержимого ячейки

; cells

movBX,[SI] ; новое содержимое ячейки cells ;

; загружается в BX

1.5Регистровый косвенный со смещением (базовый или индексный). Адресуется память (байт или слово). Относительный адрес операнда определяется как сумма содержимого регистра BX, BP, SI или DI и указанной в команде константы, называемой смещением. Смещение может быть числом или адресом. При использовании регистров BX, SI и DI подразумевается сегмент, адресуемый через DS; при использовании BP подразумевается сегмент стека – регистр SS. Допускается замена сегмента. Обозначение этого способа адресации:

смещение [BX] (подразумевается DS: смещение [BX])

смещение [BP] (подразумевается SS: смещение [BP])

смещение [SI] (подразумевается DS: смещение [SI])

смещение [DI] (подразумевается DS: смещение [DI])

Допустимы также обозначения (со всеми регистрами) вида:

[BX]+ смещение

[BX+ смещение]

1.6. Базовый индексный.Адресуется память (байт или слово). Относительный адрес операнда определяется как сумма содержимого следующих пар регистров:

[BX][SI](подразумевается DS:[BX][SI])

[BX][DI](подразумевается DS:[BX][DI])

[BP][SI](подразумевается SS:[BP][SI])

[BP][DI](подразумевается SS:[BP][DI])

Допускается замена сегмента.

Пусть в сегменте данных определен массив из 10 слов:

wordsdw 0,10,20,30,40,50,60,70,80,90

Последовательность команд

movBX,offsetwords

mov SI,10

movAX,[BX][SI]

загрузит в регистр AX слов со смещением 10 байтов от начала массива, т. е. число 50.

1.7 Базовый индексный со смещением. Адресуется память (байт или слово). Относительный адрес операнда определяется как сумма содержимого двух регистров и смещения. Обозначение этого способа адресации:

смещение [BX][SI](подразумевается DS: смещение[BX][SI])

смещение [BX][DI](подразумевается DS: смещение[BX][DI])

смещение [BP][SI](подразумевается SS: смещение[BP][SI])

смещение [BP][DI](подразумевается SS: смещение[BP][DI])

Допустимы также обозначения (со всеми регистрами) вида:

смещение [BX+SI ]

[смещение +BX+DI]

[BP][DI]+смещение

Пусть в сегменте данных определен массив из 24 байтов:

symsdb ‘ЙЦУКЕНГШЩЗХЪ’

db ‘QWERTYUIOP{}’

Последовательность команд

movBX,12

movSI,6

movDL,syms[BX][SI]

загрузит в регистр DL элемент с индексом 6 из второго ряда , т. е. код ASCII буквыU. Тот же результат можно получить, загрузив в один из регистров не индекс, а адрес массива:

movBX,offsetsyms

mov SI,6

movDL,12[BX][SI]