Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
госник_150900_шпоры2.doc
Скачиваний:
22
Добавлен:
27.09.2019
Размер:
1.34 Mб
Скачать

8 Адресация оперативной памяти. Сегментные регистры.

При использовании сегментированных моделей памяти для формирования любого адреса нужны два числа – адрес начала сегмента и смещения искомого байта относительно этого числа. Операционные системы могут размещать сегменты, с которыми работает программа пользователя, в разных местах памяти и даже временно записывать их на диск, если памяти не хватает. Существует шесть 16-битных регистров: CS, DS, ES, FS, GS, SS, используемых для хранения селекторов.

DS, ES, FS, GS называются регистрами сегментов данных. CS – отвечает за сегмент кода. SS - отвечает за сегмент стека.

CS содержит программу, исполняющуюся в данный момент, следовательно, запись нового селектора в этот регистр приводит к тому, что далее будет исполнена не следующая по тексту программы команда, а команда из когда, находящегося в другом сегменте, с тем же смещением. Смещение очередной выполняемой команды всегда хранится в специальном регистре EIP.

9 Система команд процессора i32. Способы адресации.

Всего 8 адресаций оперативной памяти: 1. Регистровая. Операнды могут располагаться в любых регистрах общего назначения и сегментных регистрах. mov eax,ebx – содержимое регистра ebx пересылается в eax. 2. Непосредственная. Команды (все арифметические команды, кроме деления) позволяют указывать один из операндов в тексте программы, например mov eax,2 помещает в регистр EAX число 2. 3. Прямая. Если операнд - слово, то команда mov eax,es:0001 поместит это слово в регистр EAX. если в сегментном регистре ES, была описана переменная word_var размером в слово, можно записать ту же команду как mov eax,es:word_var. В таком случае ассемблер сам заменит слово «word_var» на соответствующий адрес. 4.Косвенная. Mov eax,[ebx] – содержимое регистра ebx берется как адрес источника. 5.По базе со сдвигом. mov eax,[ebx+2] - помещает в регистр EAX слово, находящееся в сегменте, указанном в DS, со смещением на 2 большим, чем число, находящееся в EBX. 6.Косвенная с масштабированием. C его помощью можно прочитать элемент массива слов, 2-ых слов или 4-ых слов, поместив номер элемента в регистр: mov ax,[esi*2]+2. Нельзя использовать SI, DI, BP или SP, которые можно было использовать в предыдущих вариантах. 7.По базе с индексированием. mov eax,[ebx+esi+2] - В регистр EAX помещается слово из ячейки памяти со смещением, равным сумме чисел, содержащихся в EBX и ESI, и числа 2. 8. По базе с индексированием и масштабированием Mov eax,[eax+4*eax+2] – Смещение может быть байтом или двойным словом. Если ESP или EBP используются в роли базового регистра, селектор сегмента операнда берется по умолчанию из регистра SS, во всех остальных случаях — из DS.

10 Система команд процессора i32. Машинная обработка. Байт способа адресации.

Каждая команда состоит из нескольких полей (до 6).

1.Префикс. – может содержать от 0 до 4 однобайтных префиксов. Это необязательная часть инструкции, позволяет изменить некоторые особенности ее выполнения.

2.Код операции. – действие команды, которое должен выполнить процессор (содержит или 1 или 2 байта).

3. Mod R/M. – байт способа адресации, показывает способы адресации.

7

6

5

4

3

2

1

0

mod

r/o

r/m

mod – режим адресации

R/O – указывает регистр или является продолжением кода команды.

R/M – указывает регистр или режим адресации.

Mod 00 – используется адресация без смещения; 01 – с 8-ми битными смещениями; 10 – с 8-ми битными или с 16-, либо с 32-битными смещениями; 11. R/M имеет различия между 16- и 32-битной адресацией.

16

32

000

[bx+si]

[eax]

001

[bx+di]

[ecx]

010

[bp+si]

[edx]

011

[bp+di]

[ebx]

100

[si]

sib

101

[di]

[ebp]

110

[bp]

[esi]

111

[bx]

[edi]

4. Поле SIB. – занимает 1 байт, используется для 32-битной адресации.

7

6

5

4

3

2

1

0

S

I

B

S – коэф. масштабирования; I – индексный регистр; B – регистр баз.

5.Смещение. – число, которое масштабируется и добавляется в регистр памяти. Может содержать 0,1,2,4 байта.

6.Непосредственный операнд. (0,1,2,4 байта).

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