Методы адресации


Download 235.15 Kb.
bet16/18
Sana13.12.2022
Hajmi235.15 Kb.
#1000783
TuriСамостоятельная работа
1   ...   10   11   12   13   14   15   16   17   18
Bog'liq
065-20. группа Белая .А

Логические операторы выполняют над выражениями побитовые операции. Выражения должны быть константными. Например,
L1 equ 10010011

mov al, L1
xor al, 01h ;al=10010010
Индексный оператор [ ]. Транслятор воспринимает наличие квадратных скобок как указание сложить значение выражения за [] со значением выражения, заключенным в скобки. Например,
mov eax, mas[esi] ;eax=*(mas+(esi))
Наличие индексного оператора указывает транслятору, что необходимо получить значение по вычисленному адресу.
Оператор переопределения типа ptr применяется для переопределения или уточнения типа метки или переменной, определяемых выражением. Тип может принимать одно из следующих значений.

Тип

Пояснение

Назначение

byte

1 байт

переменная

word

2 байта

переменная

dword

4 байта

переменная

qword

8 байт

переменная

tword

10 байт

переменная

near

ближний указатель

функция

far

дальний указатель

функция
Например,
str1 db «Привет», 0

lea esi, str1
cmp byte ptr[esi], 0 ; [esi]==0?
В примере для сравнения значения по адресу esi с константой необходимо явно указать, данные какого типа будут сравниваться.
Оператор переопределения сегмента : (двоеточие) вычисляет физический адрес относительно конкретно задаваемой сегментной составляющей, в качестве которой могут выступать:

  • имя сегментного регистра,

  • имя сегмента из соответствующей директивы SEGMENT

  • имя группы.

Для выборки на выполнение очередной команды микропроцессор анализирует содержимое сегментного регистра CS, в котором содержится физический адрес начала сегмента кода. Для получения адреса конкретной команды микропроцессор складывает промасштабированное (умноженное на 16) значение сегментного регистра CS с содержимым регистра EIP. Запись CS:EIP содержит адрес текущей выполняемой команды. Аналогично обрабатываются операнды в машинных командах.
Оператор_именования_типа_структуры_.'>Оператор именования типа структуры . (точка) также заставляет транслятор производить определенные вычисления, если встречается в выражении.
Оператор получения сегментной составляющей адреса выражения seg возвращает физический адрес сегмента для выражения, в качестве которого могут выступать метка, переменная, имя сегмента, имя группы или некоторое символическое имя.
Оператор получения смещения выражения offset позволяет получить значение смещения выражения в байтах относительно начала того сегмента, в котором выражение определено. Например,
.data
str1 db «Привет»,0
.code
mov esi, offset str1
mov al, [esi] ; al = ‘П’
Оператор определения длины массива length возвращает число  элементов,  определенных  операндом dup. Если операнд dup отсутствует, то оператор length возвращает значение 1.Например,
tabl dw 10 dup(?)

mov edx, length tabl ; edx=10
Оператор type возвращает число  байтов,  соответствующее  определению указанной переменной:
fldb db ?
tabl dw 10 dup(?)

mov eax, type fldb ;eax = 1
mov eax, type tabl ;eax = 2

Download 235.15 Kb.

Do'stlaringiz bilan baham:
1   ...   10   11   12   13   14   15   16   17   18




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