Группирование инструкции по типам

76543210 MRM Имя Описание
00xxx0xx Да ALU-G1 АЛУ с двумя операндами. Номер функции [5:3]
00xxx10x ALU-G2 АЛУ с аккумулятором и непосредственным значением. Номер функции [5:3]
000xx110 PUSH-S Сохранение сегмента в стек. Номер сегмента [5:4]
00001111 EXT Префикс расширения опкода
000xx111 POP-S Чтение из стека в сегмент. Номер сегмента в опкоде [5:4], кроме CS (01b)
001xx110 SEG-P1 Выбор префикса для операции с данными, номер префикса в [5:4]
001xx111 DECIMAL Десятичная коррекция после сложения 00 DAA, вычитания 01 DAS; ASCII коррекция 10 AAA после сложения, вычитания 11 AAS
01000xxx INC Инкремент 16-битного регистра [2:0]
01001xxx DEC Декремент 16-битного регистра [2:0]
01010xxx PUSH-R Сохранить в стек 16-битный регистр [2:0]
01011xxx POP-R Извлечь из стека 16-битный регистр [2:0]
01100000 PUSHA Сохранить все 16-битные регистры общего назначения в стек
01100001 POPA Восстановить 16-битные регистры из стека
01100010 Да BOUND Проверка границ массива
01100011 Да ARPL Коррекция RPL
0110010x SEG-P2 Выбор префикса FS: или GS:
01100110 OPSIZE Расширение 32 бит для операнда
01100111 ADSIZE Расширение 32 бит для адреса
011010x0 PUSH-I Сохранить непосредственное значение в стек
011010x1 Да IMUL Умножить операнд на непосредственное значение и записать в регистр
0110110x INSx Получение данных из порта
0110111x OUTSx Запись данных в порт
0111xxxx JUMPC Условный переход, условия в [3:0]
100000xx Да ALU-G3 АЛУ с операндом и непосредственным значением, номер функции REG-часть [5:3] MODRM
1000010x Да TEST Логическое AND над операндом и непосредственным значением, без записи результата
1000011x Да XCHG-RM Обмен операндов местами
100010xx Да MOV-RM Перемещение из операнда 2 в операнд 1
100011x0 Да MOV-S Перемещение из/в сегментный регистр из операнда (регистр/память)
10001101 Да LEA Загрузка эффективного адреса в регистр
10001111 Да POP-RM Извлечение из стека и сохранение в регистр или в память
10011011 FWAIT Ожидание пока FPU не закончит работу
11110000 LOCK Префикс, который зачем-то блокирует шину данных
10010xxx XCHG-R Обмен регистра AX с другим регистром [2:0]
10011000 CBW Знаковое расширение AL до AX
10011001 CWD Знаковое расширение AX до DX:AX
10011010 CALL-F Дальний вызов процедуры (сегмент:смещение)
10011100 PUSHF Сохранить в стек флаги
10011101 POPF Восстановить флаги из стека
10011110 SAHF Записать значение из регистра AH во флаги
10011111 LAHF Загрузить флаги в регистр AH
101000xx MOV-A Перемещение из памяти или в память аккумулятора
1010100x TEST-I Операция TEST над аккумулятором и непосредственным значением
1010010x MOVSx Копирование из памяти DS:SI в память ES:DI
1010011x CMPSx Сравнение строк из памяти DS:SI и ES:DI
1010101x STOSx Сохранение аккумулятора в память ES:DI
1010110x LODSx Загрузка из DS:SI в аккумулятор
1010111x SCASx Чтение из памяти ES:DI и сравнение с аккумулятором
1011xxxx MOV-I Запись непосредственного значения в регистр
1100000x Да ROT-I Сдвиговая операция, функция номер MODRM[5:3], с количеством шагов от 0 до 255
1100001x RET Возврат из процедуры. Если [0]=1, то также добавляется SP+Immediate
1100010x Да LXS LES,LDS Загрузка 32-х битного значения из памяти в сегментный регистр и регистр
1100011x Да MOV-RMI Чтение из памяти или регистра и запись в регистр
11001000 ENTER Создание фрейма в стеке
11001001 LEAVE Удаление фрейма из стека
1100101x Да RETF Дальний возврат из процедуры. Аналогично RET, может восстанвливать SP+Immediate
110011x0 INT3 Вызов 3-го прерывания
11001110 INTO Вызов 4-го прерывания если OF=1
11001101 INT Вызов i-го прерывания
11001111 IRET Возврат из прерывания
110100xx Да ROT-1CL Сдвиговая операция, но либо на 1 бит, либо на указанное в регистре CL
11010100 AAM Десятичная коррекция после умножения
11010101 AAD Десятичная коррекция после деления
11010110 SALC Недокументированная инструкция копирования CF во все биты регистра AL
11010111 XLATB На основе DS:BX извлекается из памяти байт и записывается в AL
11011xxx Да FPU Инструкции Floating Point Unit
1110000x LOOPZF Ветвление пока CX не равен 0 с проверкой на ZeroFlag
11100010 LOOP Ветвление пока CX не равен 0
11100011 JCXZ Переход если CX=0
1110x10x IN Чтение из порта
1110x11x OUT Запись в порт
11101000 CALL Вызов процедуры (NEAR)
11101001 JMP Переход по адресу (NEAR)
11101010 JMP-F Переход по адресу (FAR)
11101011 JMP-S Короткий переход в пределах -128..127 (SHORT)
11110001 INT1 Вызов прерывания 1
1111001x REPx Префикс REPNZ/REPZ
11110100 HLT Остановка процессора
11110101 CMC Инверсия флага CF
11111000 CLC Сброс флага CF
1111100x STC Установка флага CF
11111010 CLI Сброс флага IF
1111101x STI Установка флага IF
11111100 CLD Сброс флага DF
1111110x STD Установка флага DF
1111011x Да GRP1 Инструкции TEST/NOT/NEG/MUL/IMUL/DIV/IDIV, функция в [5:3] MODRM
1111111x Да GRP2 Инструкции INC/DEC/CALL/CALL-F/JMP/JMP-F/PUSH-RM, функция в [5:3] MODRM

Карта инструкции

00 ALU-G1 01 ALU-G1 02 ALU-G1 03 ALU-G1 04 ALU-G2 05 ALU-G2 06 PUSH-S 07 POP-S 08 ALU-G1 09 ALU-G1 0A ALU-G1 0B ALU-G1 0C ALU-G2 0D ALU-G2 0E PUSH-S 0F EXT
10 ALU-G1 11 ALU-G1 12 ALU-G1 13 ALU-G1 14 ALU-G2 15 ALU-G2 16 PUSH-S 17 POP-S 18 ALU-G1 19 ALU-G1 1A ALU-G1 1B ALU-G1 1C ALU-G2 1D ALU-G2 1E PUSH-S 1F POP-S
20 ALU-G1 21 ALU-G1 22 ALU-G1 23 ALU-G1 24 ALU-G2 25 ALU-G2 26 SEG-P1 27 DECIMAL 28 ALU-G1 29 ALU-G1 2A ALU-G1 2B ALU-G1 2C ALU-G2 2D ALU-G2 2E SEG-P1 2F DECIMAL
30 ALU-G1 31 ALU-G1 32 ALU-G1 33 ALU-G1 34 ALU-G2 35 ALU-G2 36 SEG-P1 37 DECIMAL 38 ALU-G1 39 ALU-G1 3A ALU-G1 3B ALU-G1 3C ALU-G2 3D ALU-G2 3E SEG-P1 3F DECIMAL
40 INC 41 INC 42 INC 43 INC 44 INC 45 INC 46 INC 47 INC 48 DEC 49 DEC 4A DEC 4B DEC 4C DEC 4D DEC 4E DEC 4F DEC
50 PUSH-R 51 PUSH-R 52 PUSH-R 53 PUSH-R 54 PUSH-R 55 PUSH-R 56 PUSH-R 57 PUSH-R 58 POP-R 59 POP-R 5A POP-R 5B POP-R 5C POP-R 5D POP-R 5E POP-R 5F POP-R
60 PUSHA 61 POPA 62 BOUND 63 ARPL 64 SEG-P2 65 SEG-P2 66 OPSIZE 67 ADSIZE 68 PUSH-I 69 IMUL 6A PUSH-I 6B IMUL 6C INSx 6D INSx 6E OUTSx 6F OUTSx
70 JUMPC 71 JUMPC 72 JUMPC 73 JUMPC 74 JUMPC 75 JUMPC 76 JUMPC 77 JUMPC 78 JUMPC 79 JUMPC 7A JUMPC 7B JUMPC 7C JUMPC 7D JUMPC 7E JUMPC 7F JUMPC
80 ALU-G3 81 ALU-G3 82 ALU-G3 83 ALU-G3 84 TEST 85 TEST 86 XCHG-RM 87 XCHG-RM 88 MOV-RM 89 MOV-RM 8A MOV-RM 8B MOV-RM 8C MOV-S 8D LEA 8E MOV-S 8F POP-RM
90 XCHG-R 91 XCHG-R 92 XCHG-R 93 XCHG-R 94 XCHG-R 95 XCHG-R 96 XCHG-R 97 XCHG-R 98 CBW 99 CWD 9A CALL-F 9B FWAIT 9C PUSHF 9D POPF 9E SAHF 9F LAHF
A0 MOV-A A1 MOV-A A2 MOV-A A3 MOV-A A4 MOVSx A5 MOVSx A6 CMPSx A7 CMPSx A8 TEST-I A9 TEST-I AA STOSx AB STOSx AC LODSx AD LODSx AE SCASx AF SCASx
B0 MOV-I B1 MOV-I B2 MOV-I B3 MOV-I B4 MOV-I B5 MOV-I B6 MOV-I B7 MOV-I B8 MOV-I B9 MOV-I BA MOV-I BB MOV-I BC MOV-I BD MOV-I BE MOV-I BF MOV-I
C0 ROT-I C1 ROT-I C2 RET C3 RET C4 LXS C5 LXS C6 MOV-RMI C7 MOV-RMI C8 ENTER C9 LEAVE CA RETF CB RETF CC INT3 CD INT CE INT3 CF IRET
D0 ROT-1CL D1 ROT-1CL D2 ROT-1CL D3 ROT-1CL D4 AAM D5 AAD D6 SALC D7 XLATB D8 FPU D9 FPU DA FPU DB FPU DC FPU DD FPU DE FPU DF FPU
E0 LOOPZF E1 LOOPZF E2 LOOP E3 JCXZ E4 IN E5 IN E6 OUT E7 OUT E8 CALL E9 JMP EA JMP-F EB JMP-S EC IN ED IN EE OUT EF OUT
F0 LOCK F1 INT1 F2 REPx F3 REPx F4 HLT F5 CMC F6 GRP1 F7 GRP1 F8 CLC F9 STC FA CLI FB STI FC CLD FD STD FE GRP2 FF GRP2