Хм, форум по АСМ похоже прибили. Ладно, кину в общий.
===
rel8: относительный адрес в диапазоне 128 байтов от 128 байтов до конца команды до 127 байтов после конца команды.
rel16, rel32: относительный адрес в пределах того же кодового сегмента, что и ассемблируемая команда. rel16 применяется с командами с атрибутом размера операнда, равным 16 битам; rel32 применяется с командами с атрибутом размера операнда, равным 32 битам.
ptr16:16,ptr16:32: дальний указатель, обычно установленный на кодовый сегмент, отличный от сегмент текущей команды. Запись 16: 16 указывает на то, что значение указателя состоит из двух частей. Значение слева от двоеточия это 16-битовый селектор или значение, предназначенное для регистра кодового сегмента. Значение справа от двоеточия соответствует смещению в пределах сегмента назначения. ptr16:16 используется, когда атрибут размера операнда команды равен 16 битам; ptr16:32 используется в случае 32-битового атрибута.
r8: один из байтовых регистров: AL,CL,DL,BL,AH,CH,DH или BH.
r16: один из регистров размером в слово: AX,CX,DX,BX,SP,BP,SI или DI.
r32: один из регистров размером в двойное слово: EAX,ECX,EDX, EBX,ESP,EBP,ESI или EDI.
imm8: непосредственное значение байта. imm8 это число со знаком в диапазоне от -127 до +127, включительно. Для команд, в которых imm8 комбинируется с операндом размером в слово или двойное слово, непосредственное значение расширяется по знаку, образуя слово или двойное слово. Старший байт слова заполняется самым старшим битом непосредственного значения.
imm16: непосредственное значение размером в слово, используемое для команд, атрибут размера операнда которых равен 16 битам. Это число в диапазоне от -32768 до +32767, включительно.
imm32: непосредственное значение размером в двойное слово, используемое для команд, атрибут размера операнда которых равен 32 битам. Это число в диапазоне от +2147483647 до -2147483648, включительно.
r/m8: однобайтовый операнд, представляющий собой либо содержимое байтового регистра (AL, BL, CL, DL, AH, BH, CH, DH), либо содержимое байта в памяти.
r/m16: операнд регистра-слова или операнд памяти, используемый в командах, атрибут размера операнда которых равен 16 битам. Регистры-слова это AX, BX, CX, DX, SP, BP, SI, DI. Содержимое памяти находится по адресу, получаемому при вычислении исполнительного адреса.
r/m32: операнд регистра-двойного слова или операнд памяти, используемый в командах, атрибут размера операнда которых равен 32 битам. Регистры-слова это EAX, EBX, ECX, EDX, ESP, EBP, ESI, EDI. Содержимое памяти находится по адресу, получаемому при вычислении исполнительного адреса.
m8: байт памяти, адресуемый DS:SI или ES:DI (используется только строковыми командами).
m16: слово памяти, адресуемое DS:SI или ES:DI (используется только строковыми командами).
m32: двойное слово памяти, адресуемое DS:SI или ES:DI (используется только строковыми командами).
m16:16, m16:32: операнд памяти, содержащий дальний указатель, составленный из двух чисел. Число слева от двоеточия соответствует селектору сегмента указателя. Число справа от двоеточия соответствует его смещению.
m16&32, m16&16, m32&32: операнд памяти, состоящий из пар элементов данных, размеры которых обозначены слева и справа от символа амперсанда (&). Все режимы адресации памяти разрешены, операнды m16&16 и m32&32 используются командой BOUND для получения операнда, содержащего верхнюю и нижнюю границы для индексов массивов. m16&32 используется командами LIDT и LGDT для получения слова, которым загружается поле границы, и двойного слова, которым загружается поле базы соответствующих регистров таблиц дескрипторов - глобальной и прерываний.
moffs8, moffs16, moffs32: (смещение в памяти) - простая переменная памяти типа BYTE, WORD или DWORD, используемая некоторыми вариантами команды MOV. Фактический адрес задается простым смещением относительно базы сегмента. В команде байт ModR/ M не используется. Число, указанное в moffs, обозначает размер, определяемый атрибут размера адреса команды.
Sreg: сегментный регистр. Назначения битов сегментных регистров: ES=0, CS=1, SS=2, DS=3, FS=4 и GS=5.
m32real, m64real, m80real: (соответственно) - операнды памяти - действительные числа с плавающей точкой одинарной, двойной и расширенной точности.
m16int, m32int, m64int: (соответственно) - операнды памяти - целочисленного типа word, short и long с плавающей точкой.
mNbyte: N-байтовый операнд памяти с плавающей точкой. ST или ST(0): старший элемент стека регистров FPU. ST(i): i-й элемент от вершины стека регистров FPU (i =0...7).
Ответить
|