Команда
| Описание
|
REP
REPE и REPZ
REPNE и REPNZ
| REPeat string operation – повторить цепочечную операциюю
Префикс, означающий повтор следующей за ним операции до обнуления ECX. Префикс имеет разновидности:
REPZ (REPE) - выполнять, пока не нуль (ZF=1),
REPNZ (REPNE) – выпо лнять, пока нуль.
|
MOVS приемник, источник
MOVSB
MOVSW
MOVSD
| MOVe String Byte/Word/Double word operands – пересылка цепочек. Приемник, источник можно явно не указывать. Команда передает из цепочки, адресуемой DS:[ESI], в цепочку приемника, адресуемую ES:[EDI]. Разновидности для разных элементов цепочки:
· байт,
· слово или
· двойное слово.
|
LODS источник
MOVSB
MOVSW
MOVSD
| LOaD String Byte/Word/Double word operands – загрузка цепочек. Загружает из ячейки памяти, адресуемой DS:ESI/si, в регистр AL/AX/EAX цепочку, и изменяет содержимое SI на величину, равную длине цепочки. Разновидности для разных элементов цепочки:
· байт,
· слово или
· двойное слово.
|
STOS приемник
STOSB
STOSW
STOSD
| STOre String Byte/Word/Double word operands – сохранение цепочек. Сохраняет в ячейке памяти, адресуемой DS:ESI/SI, из регистра AL/AX/EAX цепочку, и изменяет содержимое SI на величину, равную длине цепочки. Разновидности для разных элементов цепочки:
· байт,
· слово или
· двойное слово.
|
SCAS приемник
SCASB
SCASW
SCASD
| SCAn String Byte/Word/Double word – сканированение цепочек. Команда вычитает элемент цепочки приемника из содержимого аккумулятора (AL\AX\EAX) и модифицирует флаги. Разновидности для разных элементов цепочки:
· байт,
· слово или
· двойное слово.
|
CMPS приемник, источник
CMPSB
CMPSW
CMPSD
| CoMPare String Byte/Word/Double word operands - сравнение цепочек. Команда вычитанет элемент цепочки приемника из соответствующего элемента цепочки источника и модифицирует флаги. Регистры EDI и ESI автоматически продвигаются на следующий элемент. Разновидности для разных элементов цепочки:
· байт,
· слово или
· двойное слово.
|
Команда
| Описание
|
JMP метка
| JuMP –безусловный переход.
Имеется несколько форм, различающихся расстоянием метки перхода от текущего адреса, и способом задания целевого адреса. При работе в Windows используется в основном внутрисегментный переход (NEAR) в пределах 32-битного сегмента. Адрес перехода может задаваться непосредственно (в программе это метка) или косвенно, т.е. содержаться в ячейке памяти или регистре (JMP [EAX]).
Другой тип перехода - короткий переход (SHORT), занимает всего 2 байта. Диапазон смещения, в пределах которого происходит переход: -128... 127. Использование такого перехода весьма ограниченно.
|
Jcc метка
| Jump if condition - условный переход. Команда осуществляет переход при выполнении условия, заданного в. поле условия. Возможны условия, кодируемые 4-ех битным кодом:
· JA/JNBE - перейти, если выше.
· JAE/JNB - перейти, если выше или равно.
· JB/JNAE - перейти, если ниже
· JBE/JNA - перейти, если ниже.
· JC - перейти, если перенос
· JE/JZ - перейти, если нуль
· JG/JNLE - перейти, если больше.
· JGE/JNL - перейти, если больше или равно
· JL/JNGE - перейти, если меньше.
· JLE/JNG - перейти, если меньше или равно
· JNC - перейтИ, если нет переноса.
· JNE/JNZ - перейти, если меньше или равно
· JNO - перейти, если нет переполнения
· JNP/JPO - перейти, если нет паритета
· JNS - перейти, если нет знака
· JO - перейти, если есть переполнения
· JP/JPE - перейти, если есть паритет
· JS - перейти, если есть знак
· JCXZ - переход, если СХ=0
· JECXZ - переход, если ECX=0
В плоской модели команды условного перехода осуществляют переход в пределах 32-битного регистра.
|
LOOP метка
| LOOP control by register CX - команды управления циклом по регистру CX. Команды этой группы используют счетчик цикла в регистре CX. В них осуществляется декремент CX и проверка его содержимого. Тело цикла повторяется пока содержимое CX не равно нулю. Если содержимое CX равно нулю, то управление передается команде, метка которой опреджелена в команде LOOP.
|
LOOPE метка
LOOPZ метка
| LOOP control by register CX not Equal 0 and ZF=1 - команды управления циклом по регистру CX с учетом ZF=1. Команды этой группы основаны на командах LOOP. Дополнительно в них в теле цикла анализируется флаг ZF. Цикл принудительно завершается, если ZF= 1.
|
LOOPNE метка
LOOPNZ метка
| LOOP control by register CX not Equal 0 and ZF=0 - команды управления циклом по регистру CX с учетом ZF=0. Команды этой группы основаны на командах LOOP. Дополнительно в них в теле цикла анализируется флаг ZF. Цикл принудительно завершается, если ZF= 0.
|
CALL цель
| CALL – вызов.
Передает управление процедуре (метке) с сохранением в стеке адреса, следующей за CALL командой. В плоской модели адрес возврата представляет собой 32-битное смещение. Межсегментный вызов предполагает сохранение в стеке селектора и смещения, т.е. 48-битной величины (16 бит - селектор и 32 бита - смещение).
|
RET [N]
| RETurn from procedure – возврат из процедуры
Необязательный параметр N предполагает, что команда также автоматически чистит стек (освобождает N байт). Команда имеет разновидности, которые выбираются ассемблером автоматически, в зависимости от того, является процедура ближней или дальней.
|