Ткм теория и практика формообразования заготовок


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


Download 1.28 Mb.
bet31/65
Sana20.12.2022
Hajmi1.28 Mb.
#1034729
1   ...   27   28   29   30   31   32   33   34   ...   65
Bog'liq
госник 150900 шпоры2

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.



Download 1.28 Mb.

Do'stlaringiz bilan baham:
1   ...   27   28   29   30   31   32   33   34   ...   65




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling