logo
Shpory_tekhnologii

33 Система команд процессора 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.