Способы адресации i386 и Ассемблерные Инструкции
Эта глава содержит информацию, определенную для архитектуры процессора Intel i386, включающей i386, i486, и процессоры Pentium. Первый раздел, i386 Регистры и Способы адресации, перечисляет доступные регистры и описывает способы адресации, используемые ассемблерными инструкциями. Второй раздел, i386 Ассемблерные Инструкции, перечисляет каждую ассемблерную инструкцию с синтаксисом ассемблера OS X.
Регистры i386 и Способы адресации
В этом разделе описываются соглашения, используемые для указания способов адресации и мнемоник команд для архитектуры процессора Intel i386. Сами инструкции подробно изложены в следующем разделе, i386 Ассемблерные Инструкции.
Мнемоники команд
Мнемоники команд, что ассемблерное использование основывается на мнемонике, описанной в соответствующих руководствах процессора Intel.
Регистры
Много инструкций принимают регистры как операнды. Доступные регистры перечислены в этом разделе. Ассемблер OS X для процессоров Intel i386 всегда использует имена, начинающиеся со знака процента (‘ % ’) для регистров, таким образом, конфликты имен с идентификаторами не возможны; далее, все имена регистра находятся в строчных буквах.
Общие регистры
Каждый из 32-разрядных общих регистров i386 архитектуры доступен различными именами, указывающими части того регистра, который будет использоваться. Например, к регистру AX можно получить доступ как единственный байт (%ah или %al), 16-разрядное значение (%ax) или 32-разрядное значение (%eax). Число ниже шоу имена этих регистров и их отношения к полному 32-разрядному хранению для каждого регистра:
Регистры с плавающей точкой
Регистр | |
---|---|
| |
|
Сегментные регистры
Регистр | Описание |
---|---|
| регистр сегмента кода |
| регистр сегмента стека |
| регистр сегмента данных |
| регистр сегмента данных (целевой сегмент строковой операции) |
| регистр сегмента данных |
| регистр сегмента данных |
Другие регистры
Регистр | Описание |
---|---|
| регистры управления |
| отладочные регистры |
| тестовые регистры |
| Регистры MMX |
| Регистры XMM |
Операнды и способы адресации
i386 архитектура использует четыре вида операндов инструкции:
Регистр
Непосредственный
Непосредственная память
Косвенная память
Каждый тип операнда соответствует способу адресации. Операнды регистра указывают, что значение, сохраненное в именованном регистре, должно использоваться оператором. Непосредственные операнды являются постоянными значениями, указанными в ассемблерном коде. Операнды непосредственной памяти являются ячейкой памяти меток или значением именованного регистра, обработанного как адрес. Косвенные операнды памяти вычисляются во время выполнения от содержания регистров и дополнительных постоянных значений.
Операнды регистра
Операнд регистра дан просто как имя регистра. Это может быть любой из идентификаторов, начинающихся с упомянутого выше ‘%’; например, %eax
. Когда вызовы оператора для операнда регистра определенного размера, операнд перечислен как r8, r16, или r32.
Непосредственные операнды
Непосредственные операнды указаны как числовые значения, которым предшествует знак доллара (‘ $ ’). Они являются десятичными по умолчанию, но могут быть отмечены как шестнадцатеричные путем начала самого числа с ‘0x’. Простые вычисления позволяются, если сгруппировано в круглых скобках. Наконец, непосредственный операнд может быть дан как метка, когда ее значение является адресом той метки. Вот некоторые примеры:
$100 |
$0x5fec4 |
$(10*6) # calculated by the assembler |
$begloop |
Ссылка на неопределенную метку позволяется, но что ссылка должна быть разрешена во время ссылки.
Операнды непосредственной памяти
Операнды непосредственной памяти являются ссылками на метки в ассемблерном источнике. Они действуют как статические ссылки на единственное расположение в памяти относительно определенного раздела и разрешены во время ссылки. Вот пример:
.data |
var: .byte 0 # declare a byte-size variable labelled "var" |
.text |
. |
. |
. |
movb %al,var # move the low byte of the AX register into the |
# memory location specified by "var" |
По умолчанию операнды непосредственной памяти используют %ds
сегментный регистр. Это может быть переопределено путем добавления префикса операндов с желаемым сегментным регистром и двоеточие:
movb %es:%al,var # move the low byte of the AX register into the |
# memory location in the segment given by %es |
# and "var" |
Обратите внимание на то, что переопределение сегмента применяется только к операндам памяти в инструкции; «var» затронут, но нет %al
. Команды работы со строковыми данными, берущие два операнда памяти, используют переопределение сегмента для обоих. Меньше распространенного способа указать сегмент состоит в том, чтобы снабдить префиксом оператора сам:
es/movb %al,%var # same as above |
Косвенные операнды памяти
Косвенные операнды памяти вычисляются от содержания регистров во время выполнения. Косвенный операнд памяти может содержать базовый регистр, и индексный регистр, масштаб и смещение. Самая общая форма:
смещение(
base_register, index_register, масштаб)
смещение является непосредственным значением. Базовые и индексные регистры могут быть любыми 32-разрядными общими именами регистра, за исключением того, что %esp
не может использоваться в качестве индексного регистра. масштаб должен быть 1, 2, 4, или 8; никакие другие значения не позволяются. Смещение и масштаб могут быть опущены, но должен быть указан по крайней мере один регистр. Кроме того, если элементы от конца опущены, предыдущие запятые могут также быть опущены, но должна остаться запятая после опущенного элемента:
10(%eax,%edx) |
(%eax) |
12(,%ecx,2) |
12(,%ecx) |
Значение косвенного операнда памяти является ячейкой памяти, данной содержанием регистра относительно базового адреса сегмента. Используемый сегментный регистр %ss
когда базовый регистр %ebp
или %esp
, и %ds
для всех других базовых регистров. Например:
movl (%eax),%edx # default segment register here is %ds |
Вышеупомянутая ассемблерная инструкция перемещает 32 бита от адреса, данного %eax
в %edx
регистр. Адрес %eax
относительно %ds
сегментный регистр. Различный сегментный регистр от значения по умолчанию может быть указан путем добавления префикса операнда с именем сегментного регистра и двоеточием (‘: ’):
movl %es:(%eax),%edx |
Переопределение сегмента может также быть указано как префикс оператора:
es/movl (%eax),%edx |
Инструкции Ассемблера i386
Отметьте следующие моменты об информации, содержавшейся в этом разделе:
Name
имя, появляющееся в верхнем левом углу страницы в руководствах Intel.Operation Name
имя, появляющееся после имени оператора в руководствах Intel. Специфичные для процессора инструкции отмечены, как они происходят.Форма операндов - то, который использовал в Руководстве Справочника программиста Микропроцессора Intel i486.
Порядок операндов
source
->destination
, противоположность порядка в руководствах Intel.
A
Имя | Оператор | Операнд | Имя работы |
---|---|---|---|
aaa | aaa | ASCII Корректируется после Дополнения | |
aad | aad | ASCII Корректирует AX перед Подразделением | |
aam | aam | ASCII Корректирует AX после Подразделения | |
научный работник | научный работник | ASCII Корректирует AL после Вычитания | |
adc | adc | $imm8, r/m8 | Добавьте с переносом |
adc | $imm16, r/m16 | ||
adc | $imm32, r/m32 | ||
adc | $imm8, r/m16 | ||
adc | $imm8, r/m32 | ||
adc | r8, r/m8 | ||
adc | r16, r/m16 | ||
adc | r32, r/m32 | ||
adc | r/m8, r8 | ||
adc | r/m16, r16 | ||
adc | r/m32, r32 | ||
добавить | добавить | $imm8, r/m8 | Добавить |
добавить | $imm16, r/m16 | ||
добавить | $imm32, r/m32 | ||
добавить | $imm8, r/m16 | ||
добавить | $imm8, r/m32 | ||
добавить | r8, r/m8 | ||
добавить | r16, r/m16 | ||
добавить | r32, r/m32 | ||
добавить | r/m8, r8 | ||
добавить | r/m16, r16 | ||
добавить | r/m32, r32 | ||
и | и | $imm8, r/m8 | Логический AND |
и | $imm16, r/m16 | ||
и | $imm32, r/m32 | ||
и | $imm8, r/m16 | ||
и | $imm8, r/m32 | ||
и | r8, r/m8 | ||
и | r16, r/m16 | ||
и | r32, r/m32 | ||
и | r/m8, r8 | ||
и | r/m16, r16 | ||
и | r/m32, r32 | ||
arpl | arpl | r16, r/m16 | Скорректируйте поле RPL селектора |
B
Имя | Оператор | Операнд | Имя работы |
---|---|---|---|
связанный | связанный | m16&16, r16 | Проверьте индекс массива по границам |
связанный | m32&32, r32 | ||
bsf | bsf | r/m16, r16 | Разрядное сканирование вперед |
bsf | r/m32, r16 | ||
bsr | bsr | r/m16, r16 | Разрядный реверс сканирования |
bsr | r/m32, r16 | ||
bswap | bswap | r32 | (I486-специфичная) подкачка байта |
купленный | купленный | r16, r/m16 | Контроль битов |
купленный | r32, r/m32 | ||
купленный | $imm8, r/m16 | ||
купленный | $imm8, r/m32 | ||
btc | btc | r16, r/m16 | Контроль битов и дополнение |
btc | r32, r/m32 | ||
btc | $imm8, r/m16 | ||
btc | $imm8, r/m32 | ||
btr | btr | r16, r/m16 | Контроль битов и сброс |
btr | r32, r/m32 | ||
btr | $imm8, r/m16 | ||
btr | $imm8, r/m32 | ||
bts | bts | r16, r/m16 | Контроль битов и набор |
bts | r32, r/m32 | ||
bts | $imm8, r/m16 | ||
bts | $imm8, r/m32 |
C
Имя | Оператор | Операнд | Имя работы |
---|---|---|---|
вызвать | вызвать | rel16 | Процедура вызова |
вызвать | r/m16 | ||
вызвать | ptr16:16 | ||
вызвать | m16:16 | ||
вызвать | rel32 | ||
вызвать | r/m32 | ||
lcall | $imm16, $imm32 | ||
lcall | m16 | ||
lcall | m32 | ||
cbw cwde | cbw | Преобразуйте байт в Word | |
cwde | Преобразуйте Word в двойное слово | ||
clc | clc | Ясный флаг переноса | |
cld | cld | Ясный флаг направления | |
cli | cli | Ясный флаг прерывания | |
clts | clts | Очистите Переключенный в задачу Флаг inCR0 | |
cmc | cmc | Дополнительный флаг переноса | |
cmp | cmp | $imm8, r/m8 | Сравните два операнда |
cmp | $imm16, r/m16 | ||
cmp | $imm32, r/m32 | ||
cmp | $imm8, r/m16 | ||
cmp | $imm8, r/m32 | ||
cmp | r8, r/m8 | ||
cmp | r16, r/m16 | ||
cmp | r32, r/m32 | ||
cmp | r/m8, r8 | ||
cmp | r/m16, r16 | ||
cmp | r/m32, r32 | ||
cmps cmpsb cmpsw cmpsd | Сравните строковые операнды | ||
cmps | m8, m8 | ||
cmps | m16, m16 | ||
cmps | m32, m32 | ||
cmpsb | |||
cmpsw | |||
cmpsd | |||
(дополнительные формы с переопределением сегмента) | |||
cmpsb | %seg | ||
cmpsw | %seg | ||
cmpsd | %seg | ||
cmpxchg | cmpxchg | r8, r/m8 | Выдержите сравнение и (i486-специфичный) Exchange |
cmpxchg | r16, r/m16 | ||
cmpxchg | r32, r/m32 | ||
cmpxchg8b | cmpxchg8b | m32 | Выдержите сравнение и Exchange (специфичных для Pentium) 8 байтов |
cpuid | cpuid | (Специфичная для Pentium) идентификация CPU | |
cwd cdq | cwd | Преобразуйте Word в двойное слово / | |
cdq | Преобразуйте двойное слово в Quadword |
D
Имя | Оператор | Операнд | Имя работы |
---|---|---|---|
daa | daa | Десятичное число Корректирует AL после Дополнения | |
десять кубометров | десять кубометров | Десятичное число Корректирует AL после Вычитания | |
декабрь | декабрь | r/m8 | Декремент 1 |
декабрь | r/m16 | ||
декабрь | r/m32 | ||
декабрь | r16 | ||
декабрь | r32 | ||
отделение | отделение | r/m8, | Деление без знака |
отделение | r/m16, | ||
отделение | r/m32, |
E
Имя | Оператор | Операнд | Имя работы |
---|---|---|---|
войти | войти | $imm16, $imm8 | Сделайте стековый фрейм для параметров процедуры |
F
Имя | Оператор | Операнд | Имя работы |
---|---|---|---|
f2xm1 | f2xm1 | Компьютер 2x–1 | |
fabs | fabs | Абсолютное значение | |
fadd faddp fiadd | Добавить | ||
fadd | m32real | ||
fadd | m64real | ||
fadd | СВ. (i), СВ. | ||
fadd | СВ., СВ. (i) | ||
faddp | СВ., СВ. (i) | ||
fadd | |||
fiadd | m32int | ||
fiadd | m16int | ||
fbld | fbld | m80dec | Загрузите двоично-десятичное число |
fbstp | fbstp | m80dec | Сохраните двоично-десятичное число и популярность |
fchs | fchs | Измените знак | |
fclex fnclex | fclex | Ясные исключения | |
fnclex | |||
fcom fcomp fcompp | Выдержите сравнение реальный | ||
fcom | m32real | ||
fcom | m64real | ||
fcom | СВ. (i) | ||
fcom | |||
fcomp | m32real | ||
fcomp | m64real | ||
fcomp | СВ. (i) | ||
fcomp | |||
fcompp | |||
fcos | fcos | Косинус | |
fdecstp | fdecstp | Постепенно уменьшите главный штабелем указатель | |
fdiv fdivp fidiv | Разделиться | ||
fdiv | m32real | ||
fdiv | m64real | ||
fdiv | СВ. (i), СВ. | ||
fdiv | СВ., СВ. (i) | ||
fdivp | СВ., СВ. (i) | ||
fdiv | |||
fidiv | m32int | ||
fidiv | m16int | ||
fdivr fdivpr fidivr | Обратное деление | ||
fdivr | m32real | ||
fdivr | m64real | ||
fdivr | СВ. (i), СВ. | ||
fdivr | СВ., СВ. (i) | ||
fdivrp | СВ., СВ. (i) | ||
fdivr | |||
fidivr | m32int | ||
fidivr | m16int | ||
ffree | ffree | СВ. (i) | Свободный регистр с плавающей точкой |
ficom ficomp | Сравните целое число | ||
ficom | m16real | ||
ficom | m32real | ||
ficomp | m16int | ||
ficomp | m32int | ||
fild | filds | m16int | Целое число загрузки |
fildl | m32int | ||
fildq | m64int | ||
fincstp | fincstp | Постепенно увеличьте главный штабелем указатель | |
конечный fninit | конечный | Инициализируйте модуль с плавающей точкой | |
fninit | |||
кулак fistp | кулаки | m16int | Целое число хранилища |
fistl | m32int | ||
fistps | m16int | ||
fistpl | m32int | ||
fistpq | m64int | ||
fld | flds | m32real | Реальная загрузка |
fldl | m64real | ||
fldt | m80real | ||
fld | СВ. (i) | ||
fld1 fldl2t fldl2e fldpi fldlg2 gldln2 fldz | Постоянная загрузка | ||
fld1 | |||
fld2t | |||
fld2e | |||
fldpi | |||
fldlg2 | |||
fldln2 | |||
fldz | |||
fldcw | fldcw | m2byte | Word управления нагрузкой |
fldenv | fldenv | m14/28byte | Загрузите среду FPU |
fmul fmulp fimul | Умножиться | ||
fmul | m32real | ||
fmul | m64real | ||
fmul | СВ. (i), СВ. | ||
fmul | СВ. (i), СВ. | ||
fmulp | СВ., СВ. (i) | ||
fmul | |||
fimul | m32int | ||
fimul | m16int | ||
fnop | fnop | Никакая работа | |
fpatan | fpatan | Частичный арктангенс | |
fprem | fprem | Частичный остаток | |
fprem1 | fprem1 | Частичный остаток | |
fptan | fptan | Частичная касательная | |
frndint | frndint | Вокруг к целому числу | |
frstor | frstor | m94/108byte | Восстановите состояние FPU |
fsave fnsave | Сохраните состояние FPU | ||
fsave | m94/108byte | ||
fnsave | m94/108byte | ||
fscale | fscale | Масштаб | |
fsin | fsin | Синус | |
fsincos | fsincos | Синус и косинус | |
fsqrt | fsqrt | Квадратный корень | |
fst fstp | fst | m32real | Реальное хранилище |
fst | m64real | ||
fst | СВ. (i) | ||
fstp | m32real | ||
fstp | m64real | ||
fstp | m80real | ||
fstp | СВ. (i) | ||
fstcw fnstcw | Сохраните управляющее слово | ||
fstcw | m2byte | ||
fnstcw | m2byte | ||
fstenv fnstenv | Сохраните среду FPU | ||
fstenv | m14/28byte | ||
fnstenv | m14/28byte | ||
fstsw fnstsw | Word состояния хранилища | ||
fstsw | m2byte | ||
fstsw |
| ||
fnstsw | m2byte | ||
fnstsw |
| ||
fsub fsubp fisub | Вычесть | ||
fsub | m32real | ||
fsub | m64real | ||
fsub | СВ. (i), СВ. | ||
fsub | СВ., СВ. (i) | ||
fsubp | СВ., СВ. (i) | ||
fsub | |||
fisub | m32int | ||
fisub | m16int | ||
fsubr fsubpr fisubr | Реверс вычитает | ||
fsubr | m32real | ||
fsubr | m64real | ||
fsubr | СВ. (i), СВ. | ||
fsubr | СВ., СВ. (i) | ||
fsubpr | СВ., СВ. (i) | ||
fsubr | |||
fisubr | m32int | ||
fisubr | m16int | ||
ftst | ftst | Тест | |
fucom fucomp fucompp | Неупорядоченный выдерживают сравнение реальный | ||
fucom | СВ. (i) | ||
fucom | |||
fucomp | СВ. (i) | ||
fucomp | |||
fucompp | |||
fwait | fwait | Ожидать | |
fxam | fxam | Исследовать | |
fxch | fxch | СВ. (i) | Содержание регистра Exchange |
fxch | |||
fxtract | fxtract | Экспонента выдержки и мантисса | |
fyl2x | fyl2x | Вычислите y ¥ log2x | |
fyl2xp1 | fyl2xp1 | Вычислите y ¥ log2 (x+1) |
H
Имя | Оператор | Операнд | Имя работы |
---|---|---|---|
hlt | hlt | Останов |
Я
Имя | Оператор | Операнд | Имя работы |
---|---|---|---|
idiv | idiv | r/m8 | Подписанный делятся |
idiv | r/m16, | ||
idiv | r/m32, | ||
imul | imul | r/m8 | Подписанный умножаются |
imul | r/m16 | ||
imul | r/m32 | ||
imul | r/m16, r16 | ||
imul | r/m32, r32 | ||
imul | $imm8, r/m16, r16 | ||
imul | $imm8, r/m32, r32 | ||
imul | $imm8, r16 | ||
imul | $imm8, r32 | ||
imul | $imm16, r/m16, r16 | ||
imul | $imm32, r/m32, r32 | ||
imul | $imm16, r16 | ||
imul | $imm32, r32 | ||
в | в | $imm8, | Ввод от порта |
в | $imm8, | ||
в | $imm8, | ||
в |
| ||
в |
| ||
в |
| ||
inc | inc | r/m8 | Инкремент 1 |
inc | r/m16 | ||
inc | r/m32 | ||
inc | r16 | ||
inc | r32 | ||
ins insb insw insd | Ввод от порта для строкового представления | ||
ins | |||
insb | |||
insw | |||
insd | |||
интервал в | интервал | 3 | Вызовите к процедуре обработки прерываний |
интервал | $imm8 | ||
в | |||
invd | invd | Лишите законной силы (i486-специфичный) кэш | |
invlpg | invlpg | m | Лишите законной силы (i486-специфичную) запись TLB |
iret iretd | iret | Возврат из прерывания | |
iretd |
J
Имя | Оператор | Операнд | Имя работы |
---|---|---|---|
jcc | Переход, если Удовлетворяют Условию | ||
ja | rel8 | короткий, если выше | |
jae | rel8 | короткий, если выше или равный | |
jb | rel8 | короткий, если ниже | |
jbe | rel8 | короткий, если ниже или равный | |
jc | rel8 | короткий, если перенос | |
jcxz | rel8 | короткий, если | |
jecxz | rel8 | короткий, если | |
je | rel8 | короткий, если равный | |
jz | rel8 | короткий, если 0 | |
jg | rel8 | короткий, если больше | |
jge | rel8 | короткий, если больше или равный | |
jl | rel8 | короткий, если меньше | |
jle | rel8 | короткий, если меньше или равный | |
jna | rel8 | короткий, если не выше | |
jnae | rel8 | короткий, если не выше или равный | |
jnb | rel8 | короткий, если не ниже | |
jnbe | rel8 | короткий, если не ниже или равный | |
jnc | rel8 | короткий, если не переносят | |
jne | rel8 | короткий, если не равный | |
jng | rel8 | короткий, если не больше | |
jnge | rel8 | короткий, если не больше или равный | |
jnl | rel8 | короткий, если не меньше | |
jnle | rel8 | короткий, если не меньше или равный | |
jno | rel8 | короткий, если не переполняются | |
jnp | rel8 | короткий, если не четность | |
jns | rel8 | короткий, если не подписываются | |
jnz | rel8 | короткий, если не 0 | |
jo | rel8 | короткий, если переполнение | |
мировой судья | rel8 | короткий, если четность | |
jpe | rel8 | короткий, если четность даже | |
jpo | rel8 | короткий, если нечетная четность | |
js | rel8 | короткий, если знак | |
jz | rel8 | короткий, если нуль | |
ja | rel16/32 | рядом, если выше | |
jae | rel16/32 | рядом, если выше или равный | |
jb | rel16/32 | рядом, если ниже | |
jbe | rel16/32 | рядом, если ниже или равный | |
jc | rel16/32 | рядом, если перенос | |
je | rel16/32 | рядом, если равный | |
jz | rel16/32 | рядом, если 0 | |
jg | rel16/32 | рядом, если больше | |
jge | rel16/32 | рядом, если больше или равный | |
jl | rel16/32 | рядом, если меньше | |
jle | rel16/32 | рядом, если меньше или равный | |
jna | rel16/32 | рядом, если не выше | |
jnae | rel16/32 | рядом, если не выше или равный | |
jnb | rel16/32 | рядом, если не ниже | |
jnbe | rel16/32 | рядом, если не ниже или равный | |
jnc | rel16/32 | рядом, если не переносят | |
jne | rel16/32 | рядом, если не равный | |
jng | rel16/32 | рядом, если не больше | |
jnge | rel16/32 | рядом, если не больше или меньше | |
jnl | rel16/32 | рядом, если не меньше | |
jnle | rel16/32 | рядом, если не меньше или равный | |
jno | rel16/32 | рядом, если не переполняются | |
jnp | rel16/32 | рядом, если не четность | |
jns | rel16/32 | рядом, если не подписываются | |
jnz | rel16/32 | рядом, если не 0 | |
jo | rel16/32 | рядом, если переполнение | |
мировой судья | rel16/32 | рядом, если четность | |
jpe | rel16/32 | рядом, если четность даже | |
jpo | rel16/32 | рядом, если нечетная четность | |
js | rel16/32 | рядом, если знак | |
jz | rel16/32 | рядом, если 0 | |
jmp | jmp | rel8 | Переход |
jmp | rel16 | ||
jmp | r/m16 | ||
jmp | rel32 | ||
jmp | r/m32 | ||
ljmp | $imm16, $imm32 | ||
ljmp | m16 | ||
ljmp | m32 |
L
Имя | Оператор | Операнд | Имя работы |
---|---|---|---|
lahf | lahf | Флаги загрузки в регистр AH | |
lar | lar | r/m16, r16 | Загрузите байт прав доступа |
lar | r/m32, r32 | ||
lea | lea | m, r16 | Загрузите исполнительный адрес |
lea | m, r32 | ||
отпуск | отпуск | Выход процедуры высокого уровня | |
lgdt lidt | lgdt | m16&32 | Глобальная переменная/Прерывание загрузки |
lidt | m16&32 | Регистр таблицы дескрипторов | |
lgs lss lds les lfs | Загрузите полный указатель | ||
lgs | m16:16, r16 | ||
lgs | m16:32, r32 | ||
lss | m16:16, r16 | ||
lss | m16:32, r32 | ||
lds | m16:16, r16 | ||
lds | m16:32, r32 | ||
les | m16:16, r16 | ||
les | m16:32, r32 | ||
lfs | m16:16, r16 | ||
lfs | m16:32, r32 | ||
lldt | lldt | r/m16 | Загрузите регистр локальной таблицы дескрипторов |
lmsw | lmsw | r/m16 | Word состояния машины загрузки |
блокировка | блокировка | Утверждайте префикс сигнала LOCK# | |
lods lodsb lodsw lodsd | Операнд строки загрузки | ||
lods | m8 | ||
lods | m16 | ||
lods | m32 | ||
lodsb | |||
lodsw | |||
lodsd | |||
(дополнительные формы с переопределением сегмента) | |||
lodsb | %seg | ||
lodsw | %seg | ||
lodsd | %seg | ||
цикл loopcond | Управление циклом со счетчиком CX | ||
цикл | rel8 | ||
loope | rel8 | ||
циклы | rel8 | ||
loopne | rel8 | ||
loopnz | rel8 | ||
lsl | lsl | r/m16, r16 | Предел сегмента загрузки |
lsl | r/m32, r32 | ||
буква | буква | r/m16 | Загрузите регистр задачи |
M
Имя | Оператор | Операнд | Имя работы |
---|---|---|---|
mov | mov | r8, r/m8 | Переместите данные |
mov | r16, r/m16 | ||
mov | r32, r/m32 | ||
mov | r/m8, r8 | ||
mov | r/m16, r16 | ||
mov | r/m16, r16 | ||
mov | Sreg, r/m16 | ||
mov | r/m16, Sreg | ||
mov | moffs8, | ||
mov | moffs8, | ||
mov | moffs8, | ||
mov |
| ||
mov |
| ||
mov |
| ||
mov | $imm8, reg8 | ||
mov | $imm16, reg16 | ||
mov | $imm32, reg32 | ||
mov | $imm8, r/m8 | ||
mov | $imm16, r/m16 | ||
mov | $imm32, r/m32 | ||
mov | mov | r32, | Переместитесь в Специальные Регистры |
mov |
| ||
mov |
| ||
mov |
| ||
mov |
| ||
mov | r32, | ||
mov | r32, | ||
mov |
| ||
mov | r32, | ||
mov |
| ||
mov | r32, | ||
movs movsb movsw movsd | Переместите данные от строки до строки | ||
movs | m8, m8 | ||
movs | m16, m16 | ||
movs | m32, m32 | ||
movsb |
movsw | |||
movsd | |||
(дополнительные формы с переопределением сегмента) | |||
movsb | %seg | ||
movsw | %seg | ||
movsd | %seg | ||
movsx | movsx | r/m8, r16 | Переместитесь со знаком - расширяются |
movsx | r/m8, r32 | ||
movsx | r/m16, r32 | ||
movzx | movzx | r/m8, r16 | Переместитесь с нулем - расширяются |
movzx | r/m8, r32 | ||
movzx | r/m16, r32 | ||
mul | mul | r/m8, | Умножение без знака AL или AX |
mul | r/m16, | ||
mul | r/m32, |
N
Имя | Оператор | Операнд | Имя работы |
---|---|---|---|
отрицательный | отрицательный | r/m8 | Дополнительное отрицание Туо |
отрицательный | r/m16 | ||
отрицательный | r/m32 | ||
только для указанных целей | только для указанных целей | Никакая работа | |
нет | нет | r/m8 | Отрицание поразрядного дополнения до единицы |
нет | r/m16 | ||
нет | r/m32 |
O
Имя | Оператор | Операнд | Имя работы |
---|---|---|---|
или | или | $imm8, r/m8 | Логический содержащий OR |
или | $imm16, r/m16 | ||
или | $imm32, r/m32 | ||
или | $imm8, r/m16 | ||
или | $imm8, r/m32 | ||
или | r8, r/m8 | ||
или | r16, r/m16 | ||
или | r32, r/m32 | ||
или | r/m8, r8 | ||
или | r/m16, r16 | ||
или | r/m32, r32 | ||
| Вывод к порту | ||
| |||
| |||
| |||
| |||
| |||
outs outsb outsw outsd | Выводимая строка к порту | ||
outs | r/m8, | ||
outs | r/m16, | ||
outs | r/m32, | ||
outsb | |||
outsw | |||
outsd |
P
Имя | Оператор | Операнд | Имя работы |
---|---|---|---|
популярность | популярность | m16 | Вытолкайте Word от штабеля |
популярность | m32 | ||
популярность | r16 | ||
популярность | r32 | ||
популярность |
| ||
популярность |
| ||
популярность |
| ||
популярность |
| ||
популярность |
| ||
папа popad | Вытолкайте все Общие Регистры | ||
папа | |||
popad | |||
popf popfd | popf | Популярный штабель в FLAGS или | |
popfd | Регистр EFLAGS | ||
продвинуть | продвинуть | m16 | Продвиньте Операнд на Штабель |
продвинуть | m32 | ||
продвинуть | r16 | ||
продвинуть | r32 | ||
продвинуть | $imm8 | ||
продвинуть | $imm16 | ||
продвинуть | $imm32 | ||
продвинуть | Sreg | ||
pusha продвинут | Продвиньте все Общие Регистры | ||
pusha | |||
продвинутый | |||
pushf pushfd | Продвиньте Регистр Флагов на Штабель | ||
pushf | |||
pushfd |
R
Имя | Оператор | Операнд | Имя работы |
---|---|---|---|
rcl rcr rol ror | Вращаться | ||
rcl | 1, r/m8 | ||
rcl |
| ||
rcl | $imm8, r/m8 | ||
rcl | 1, r/m16 | ||
rcl |
| ||
rcl | $imm8, r/m16 | ||
rcl | 1, r/m32 | ||
rcl |
| ||
rcl | $imm8, r/m32 | ||
rcr | 1, r/m8 | ||
rcr |
| ||
rcr | $imm8, r/m8 | ||
rcr | 1, r/m16 | ||
rcr |
| ||
rcr | $imm8, r/m16 | ||
rcr | 1, r/m32 | ||
rcr |
| ||
rcr | $imm8, r/m32 | ||
rol | 1, r/m8 | ||
rol |
| ||
rol | $imm8, r/m8 | ||
rol | 1, r/m16 | ||
rol |
| ||
rol | $imm8, r/m16 | ||
rol | 1, r/m32 | ||
rol |
| ||
rol | $imm8, r/m32 | ||
ror | 1, r/m8 | ||
ror |
| ||
ror | $imm8, r/m8 | ||
ror | 1, r/m16 | ||
ror |
| ||
ror | $imm8, r/m16 | ||
ror | 1, r/m32 | ||
ror |
| ||
ror | $imm8, r/m32 | ||
rdmsr | rdmsr | Читайте из модели-специфичного (специфичного для Pentium) регистра | |
rdstc | rdstc | Читайте из (специфичного для Pentium) счетчика метки времени | |
репутация repe repz repne repnz | Повторите следующую строку | ||
rep/ins |
| Работа | |
rep/ins |
| ||
rep/ins |
| ||
rep/movs | m8, m8 | ||
rep/movs | m16, m16 | ||
rep/movs | m32, m32 | ||
rep/outs | rm8, | ||
rep/outs | rm16, | ||
rep/outs | rm32, | ||
rep/lods | m8 | ||
rep/lods | m16 | ||
rep/lods | m32 | ||
rep/stos | m8 | ||
rep/stos | m16 | ||
rep/stos | m32 | ||
repe/cmps | m8, m8 | ||
repe/cmps | m16, m16 | ||
repe/cmps | m32, m32 | ||
repe/scas | m8 | ||
repe/scas | m16 | ||
repe/scas | m32 | ||
repne/cmps | m8, m8 | ||
repne/cmps | m16, m16 | ||
repne/cmps | m32, m32 | ||
repne/scas | m8 | ||
repne/scas | m16 | ||
repne/scas | m32 | ||
мочить | мочить | Возвратитесь из процедуры | |
мочить | $imm16 | ||
rsm | rsm | Резюме от (специфичного для Pentium) режима управления системой |
S
Имя | Оператор | Операнд | Имя работы |
---|---|---|---|
sahf | sahf | Сохраните AH во флаги | |
SAR соли shl shr | Команды сдвига | ||
соль | 1, r/m8 | ||
соль |
| ||
соль | $imm8, r/m8 | ||
соль | 1, r/m16 | ||
соль |
| ||
соль | $imm8, r/m16 | ||
соль | 1, r/m32 | ||
соль |
| ||
соль | $imm8, r/m32 | ||
SAR | 1, r/m8 | ||
SAR |
| ||
SAR | $imm8, r/m8 | ||
SAR | 1, r/m16 | ||
SAR |
| ||
SAR | $imm8, r/m16 | ||
SAR | 1, r/m32 | ||
SAR |
| ||
SAR | $imm8, r/m32 | ||
shl | 1, r/m8 | ||
shl |
| ||
shl | $imm8, r/m8 | ||
shl | 1, r/m16 | ||
shl |
| ||
shl | $imm8, r/m16 | ||
shl | 1, r/m32 | ||
shl |
| ||
shl | $imm8, r/m32 | ||
shr | 1, r/m8 | ||
shr |
| ||
shr | $imm8, r/m8 | ||
shr | 1, r/m16 | ||
shr |
| ||
shr | $imm8, r/m16 | ||
shr | 1, r/m32 | ||
shr |
| ||
shr | $imm8, r/m32 | ||
sbb | sbb | $imm8, r/m8 | Целочисленное вычитание с занимает |
sbb | $imm16, r/m16 | ||
sbb | $imm32, r/m32 | ||
sbb | $imm8, r/m16 | ||
sbb | $imm8, r/m32 | ||
sbb | r8, r/m8 | ||
sbb | r16, r/m16 | ||
sbb | r32, r/m32 | ||
sbb | r/m8, r8 | ||
sbb | r/m16, r16 | ||
sbb | r/m32, r32 | ||
scas scasb scasw scasd | Сравните строковые данные | ||
scas | m8 | ||
scas | m16 | ||
scas | m32 | ||
scasb | |||
scasw | |||
scasd | |||
(дополнительные формы с переопределением сегмента) | |||
scasb |
| ||
scasw |
| ||
scasd |
| ||
setcc | Набор байта при условии | ||
ость | r/m8 | выше | |
ости | r/m8 | выше или равный | |
setb | r/m8 | ниже | |
setbe | r/m8 | ниже или равный | |
setc | r/m8 | перенос | |
Сет | r/m8 | равный | |
setg | r/m8 | больше | |
setge | r/m8 | больше или равный | |
setl | r/m8 | меньше | |
рассчитаться | r/m8 | меньше или равный | |
setna | r/m8 | не выше | |
setnae | r/m8 | не abover или равный | |
setnb | r/m8 | не ниже | |
setnbe | r/m8 | не ниже или равный | |
setnc | r/m8 | не переносят | |
setne | r/m8 | не равный | |
setng | r/m8 | не больше | |
setnge | r/m8 | не больше или равный | |
setnl | r/m8 | не меньше | |
setnle | r/m8 | не меньше или равный | |
setno | r/m8 | не переполняются | |
setnp | r/m8 | не четность | |
setns | r/m8 | не подписываются | |
setnz | r/m8 | не нуль | |
заваруха | r/m8 | переполнение | |
setp | r/m8 | четность | |
setpe | r/m8 | четность даже | |
setpo | r/m8 | нечетная четность | |
наборы | r/m8 | знак | |
setz | r/m8 | нуль | |
sgdt sidt | sgdt | m | Глобальная переменная/Прерывание хранилища |
sidt | m | Регистр таблицы дескрипторов | |
shld | shld | $imm8, r16, r/m16 | Оставленный сдвиг двойной точности |
shld | $imm8, r32, r/m32 | ||
shld |
| ||
shld |
| ||
shrd | shrd | $imm8, r16, r/m16 | Право сдвига двойной точности |
shrd | $imm8, r32, r/m32 | ||
shrd |
| ||
shrd |
| ||
sldt | sldt | r/m16 | Сохраните регистр локальной таблицы дескрипторов |
smsw | smsw | r/m16 | Word состояния машины хранилища |
stc | stc | Установите флаг переноса | |
станд. | станд. | Установите флаг направления | |
sti | sti | Установите флаг прерывания | |
stos stosb stosw stosd | Храните строковые данные | ||
stos | m8 | ||
stos | m16 | ||
stos | m32 | ||
stosb | |||
stosw | |||
stosd | |||
(дополнительные формы с переопределением сегмента) | |||
stosb |
| ||
stosw |
| ||
stosd |
| ||
str | str | r/m16 | Сохраните регистр задачи |
sub | sub | $imm8, r/m8 | Целочисленное вычитание |
sub | $imm16, r/m16 | ||
sub | $imm32, r/m32 | ||
sub | $imm8, r/m16 | ||
sub | $imm8, r/m32 | ||
sub | r8, r/m8 | ||
sub | r16, r/m16 | ||
sub | r32, r/m32 | ||
sub | r/m8, r8 | ||
sub | r/m16, r16 | ||
sub | r/m32, r32 |
T
Имя | Оператор | Операнд | Имя работы |
---|---|---|---|
тест | тест | $imm8, r/m8 | Логичный выдерживают сравнение |
тест | $imm16, r/m16 | ||
тест | $imm32, r/m32 | ||
тест | r8, r/m8 | ||
тест | r16, r/m16 | ||
тест | r32, r/m32 |
V
Имя | Оператор | Операнд | Имя работы |
---|---|---|---|
verr verw | verr | r/m16 | Проверьте сегмент для чтения или записи |
verw | r/m16 |
W
Имя | Оператор | Операнд | Имя работы |
---|---|---|---|
ожидать | ожидать | Ожидать | |
wbinvd | wbinvd | Обратная запись и лишает законной силы (i486-специфичный) кэш | |
wrmsr | wrmsr | Запишите в модели-специфичный (специфичный для Pentium) регистр |
X
Имя | Оператор | Операнд | Имя работы |
---|---|---|---|
xadd | xadd | r8, r/m8 | Exchange и добавляет (i486-специфичный) |
xadd | r16, r/m16 | ||
xadd | r32, r/m32 | ||
xchg | xchg | r16, | Регистр/Память Exchange |
xchg |
| с Регистром | |
xchg |
| ||
xchg | r32, | ||
xchg | r8, r/m8 | ||
xchg | r/m8, r8 | ||
xchg | r16, r/m16 | ||
xchg | r/m16, r16 | ||
xchg | r32, r/m32 | ||
xchg | r/m32, r32 | ||
xlat xlatb | xlat | m8 | Перевод поиска по таблице |
xlatb | |||
xor | xor | $imm8, r/m8 | Логический монопольный OR |
xor | $imm16, r/m16 | ||
xor | $imm32, r/m32 | ||
xor | $imm8, r/m16 | ||
xor | $imm8, r/m32 | ||
xor | r8, r/m8 | ||
xor | r16, r/m16 | ||
xor | r32, r/m32 | ||
xor | r/m8, r8 | ||
xor | r/m16, r16 | ||
xor | r/m32, r32 |