Команда | Комбинации операндов P1,P2,P3 | Действие | Какие флаги меняет | Какие процессоры | Расшифровка мнемоники команды |
JMP метка | Безусловный переход на метку | – | все | Jump | |
JMP P1 | r16/32 m16/32/48 | Безусловный переход по адресу, хранящ-ся в Р1 | – | все | |
JE метка JZ метка | Условный переход, если ZF=1 | – | все | Jump if Equal Jump if Zero | |
JNE метка JNZ метка | Условный переход, если ZF=0 | – | все | Jump if Not Equal Jump if NotZero | |
JS метка | Условный переход, если SF=1 | – | все | Jump if Sign | |
JNS метка | Условный переход, если SF=0 | – | все | Jump if No Sign | |
JP метка | Условный переход, если PF=1 | – | все | Jump if Parity | |
JNP метка | Условный переход, если PF=0 | – | все | Jump if Not Parity | |
JO метка | Условный переход, если OF=1 | – | все | Jump if Overflow | |
JNO метка | Условный переход, если OF=0 | – | все | Jump if Not Overflow | |
JA метка JNBE метка | Условный переход, если > (беззнак.) по CF=0 и ZF=0 | – | все | Jump if Above Jump if Not Below or Equal | |
JAE метка JNB метка JNC метка | Условный переход, если >= (беззнак.) Условный переход, если CF=0 | – | все | Jump if Above or Equal Jump if Not Below Jump if Not Carry | |
JB метка JNAE метка JC метка | Условный переход, если < (беззнак.) Условный переход, если CF=1 | – | все | Jump if Below Jump if Not Above or Equal Jump if Carry | |
JBE метка JNA метка | Условный переход, если £ (беззнак.):CF=1 или ZF=1 | – | все | Jump if Below or Equal Jump if Not Above | |
JG метка JNLE метка | Условный переход, если > (со знаком):ZF=0 и SF=OF | – | все | Jump if Greater Jump if Not Less or Equal | |
JGE метка JNL метка | Условный переход, если ³ (со знаком) по SF=OF | – | все | Jump if Greater or Equal Jump if Not Less | |
JL метка JNGE метка | Условный переход, если < (со знаком) по SF¹OF | – | все | Jump if Less Jump if Not Greater or Equal | |
JLE метка JNG метка | Условный переход, если £ (со знаком)ZF=1или SF¹OF | – | все | Jump if Less or Equal Jump if Not Greater | |
JCXZ метка | Условный переход, если CX=0 | – | все | Jump if CX is Zero | |
JECXZ метка | Условный переход, если ECX=0 | – | 386 > | Jump if ECX is Zero | |
LOOP метка | Цикл на метку (по EСХ): if {ECX– –}>0: goto метка | – | все | Loop (англ. "петля") | |
LOOPZ метка LOOPE метка | Цикл на метку (по EСХ) пока ZF=1: if ({ECX– –}>0 && ZF=1): goto метка | – | все | Loop if Zero Loop if Equal | |
LOOPNZ метка LOOPNE метка | Цикл на метку (по EСХ) пока ZF=0: if ({ECX– –}>0 && ZF=0): goto метка | – | все | Loop if Not Zero Loop if Not Equal | |
CALL метка | Вызов процедуры по адресу метка | – | все | Call (англ. "вызов") | |
CALL P1 | r16/32 m16/32/48 | Вызов процедуры по адресу, хранящ. в Р1 | – | все | |
RETN, RET | Ближний возврат из процедуры | – | все | Return Near | |
RETN const, RET const | Ближний возврат из процедуры c очисткой const байт из стека | – | все | ||
RETF, RET | Дальний возврат из процедуры | – | все | Return Far | |
RETF const, RET const | Дальний возврат из процедуры c очисткой const байт из стека | – | все | ||
INT const | Вызов прерывания с номером const | – | все | Interrupt | |
IRET | Возврат из прерывания в 16-битном режиме | весь регистр FLAGS | все | Interrupt Return | |
IRETD | Возврат из прерывания в 32-битном режиме | весь регистр EFLAGS | 386 > | Interrupt Return with Double word Regs | |
INT3 | Вызов отладочного прерывания INT 3 | – | все | INT 3 | |
INTO | Вызов прерывания INT4 если флаг OF=1 | – | все | INT if Overflow | |
BOUND P1,P2 | r16, m32 r32, m64 | Вызов прерывания INT5 если не выполняется: m32[15:0] £ r16 £ m32[31:16] m64[31:0] £ r32 £ m64[63:32] | – | 286 > | Check Array Bounds |
|
Команды обработки строк
Последняя буква мнемоники команды определяет размер обрабатываемых данных: B – 1 байт, W – 2 байта, D – 4 байта.
|
Работа команд зависит от флага DF: когда DF=0, обработка строк ведется от младших адресов к старшим,
когда DF=1 – обработка ведется от старших адресов к младшим. Изменение флага DF – см. команды CLD, STD.
Строковые команды без префиксов REP, REPZ, REPNZ обрабатывают за-раз один элемент строки.
Команда | Комбинации операндов P1,P2,P3 | Действие | Какие флаги меняет | Какие процес-соры | Расшифровка мнемоники команды |
MOVSB, MOVSW, MOVSD, | пересылка 1 элемента строки: DS:[(E)SI] ® ES:[(E)DI], (E)SI(E)SI ±1/2/4, (E)DI(E)DI ±1/2/4 | – | все все 386 > | Move String of Byte / Word / Double Word | |
LODSB, LODSW, LODSD | Сохранение 1 элемента строки в аккумуляторе: DS:[(E)SI] ® AL/ AX/ EAX, (E)SI(E)SI ±1/2/4 | – | все все 386 > | Store String of Byte / Word / Double Word | |
STOSB, STOSW, STOSD | Запись 1 элемента строки из аккумулятора: AL/ AX/ EAX ® ES:[(E)DI], (E)DI(E)DI ±1/2/4 | – | все все 386 > | Load String of Byte / Word / Double Word | |
SCASB, SCASW, SCASD | Сравнение 1 элемента строки с аккумулятором: (ES:[(E)DI] – {AL/AX/EAX}), (E)DI (E)DI ±1/2/4 | SF,ZF,PF,CF,AF,OF | все все 386 > | Scan String of Byte / Word / Double Word | |
CMPSB, CMPSW, CMPSD | сравнение элементов строк (DS:[(E)SI] – ES:[(E)DI]), (E)SI (E)SI ±1/2/4, (E)DI (E)DI ±1/2/4 | SF,ZF,PF,CF,AF,OF | все все 386 > | Compare String of Byte / Word / Double Word | |
INSB, INSW, INSD | чтение элемента строки из порта c номером DX: ES:[(E)DI] port[DX], (E)DI (E)DI ±1/2/4 | – | 286 > 286 > 386 > | IN String of Byte / Word / Double Word | |
OUTSB, OUTSW, OUTSD | запись элемента строки в порт c номером DX: port[DX] DS:[(E)SI], (E)SI (E)SI ±1/2/4 | – | 286 > 286 > 386 > | OUT String of Byte / Word / Double Word | |
префикс REP … | Повторение следующей команды EСХ раз | ZF | все | Repeat | |
префикс REPZ REPE | Повторение команды EСХ раз и пока ZF=1 | ZF | все | Repeat if Zero / Equal | |
префикс REPNZ REPNE | Повторение команды EСХ раз и пока ZF=0 | ZF | все | Repeat if Zero / Equal |
|