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

Розширений набір команд і режими адресації 32-х розрядного процесора

МЕТА РОБОТИ : Ознайомитися з командами 386-го процесора Intel, що застосовуються в реальному режимі, їхнім використанням та особливостями виконання.

ТЕОРЕТИЧНІ ВІДОМОСТІ

Опис команд 386-го процесора.

Крім захищеного режиму, 32 розрядних регістрів, у 386-му процесорі додали команди, що розширюють операційні ресурси процесора 8086-го і підвищують продуктивність і гнучкість системи в цілому. Розглянемо тільки нові команди – всі старі команди розширили свій синтаксис для сумісності з 32-бітними регістрами й режимами роботи.

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

r будь-який регістр

r16 16-ти pозpядний pегістp

r32 32-х pозpядний pегістp

m8 байт у пам'яті

m16 слово в пам'яті

m32 подвійне слово в пам'яті

imm8 байт-значення

imm16 слово-значення

Особливості адресації 32-разрядного МП:

  1. при всіх режимахадресації можнавикористовувати32-разрядніr,disp,im

  2. При непрямій адресації в якості базового або індексного можна використовувати РОН (крім ESP для індексу): mov ECX,[EAX][EDX]

  3. Якщо використовується базово-індексна непряма адресація, то 32-розрядний індексний регістр можна помножити на scale = 2 або 4 або 8. Ефективна адреса EA=(base)+(index*scale)+disp32; scale – масштабний коефіцієнт для модифікації значення індексу. Для цього введено додатковий байт SIB scale index base

2 3 3

00 *1

01*2

10*4

11*8

Base Index

EAX EAX

EBX EBX

ECX ECX

EDX + EDX

ESP EBP

ESI ESI

EDI EDI

Offset=Base+(Index*Scale)+Displacement

10*4

1

2

*

3

4

None

8-bit

+

16-bit

32-bit

11*8

Типи адресації 80386

В процесорі 80386 для запису ефективної адреси можливо використовувати будь-який 32-бітний регістр загального призначення як базовий, а також будь-який регістр загального призначення окрім ESP як індексний. Також з’явилась можливість множення індексного регістру на 2, 4 або 8, що полегшує роботу з масивами даних і два додаткових сегментних регістри – FS і GS.

Оскількибазовимтаіндекснимрегістромможебутибудь-який регістрзагального призначення,то для визначеннясегментумає значенняпослідовність регістрів:спочатку записується базовий регістр,а потім–індексний.ЯкщобазовийрегістрEBPабоESP– призначається сегментSS,в інших випадках–DS.

Приклади адресації 80386:

MOV BX, [ebx + ecx + 1] ; базовий регістр, індексний регістр і константа

MOV DX, gs:[edi] ; індексний регістр

MOV SI, [eax + 2*eax] ; базовий регістр, індексний регістр помножений на коефіцієнт

  • Команда завантаження в стек усіх регістрів процесора PUSHA (PUSHAD)

PUSHA = PUSH AX PUSHAD = PUSH EAX

PUSH CX PUSH ECX

PUSH DX PUSH EDX

PUSH BX PUSH EBX

Приклад :

; вхід в оброблювач переривання

Pusha ; зберегти регістри

... ; текст оброблювача

Popa ; відновити регістри

Соседние файлы в папке SP_ukr