Условные обозначения: accum - аккумулятор AL или AX reg - один из регистров данных: AX,AL, AH,BX,BL,BH,CX,CL,CH,DX,DL или DH segreg - один из регистров сегмента: CS,DS,SS или ES r/m - один из общих операндов: - регистр - адрес памяти - индексный операнд - базированный операнд - базо-индексный операнд immed - 8- или 16-битовое значение: константа или число mem - один из операндов памяти: - метка - переменная - символ label - метка инструкции src - источник в операциях со строками dest - приемник в операциях со строками Инструкции пересылки данных ________________________________________________________________ | | | | | код оп. | операнды | функция | |__________|_______________|___________________________________| | | | | | MOV | accum,mem | пересылка: память в аккумулятор | |__________|_______________|___________________________________| | | | | | MOV | mem,accum | пересылка: аккумулятор в память | |__________|_______________|___________________________________| - 43 - ________________________________________________________________ | | | | | MOV | r/m,immed | пересылка: непосредственное | | | | в операнд | |__________|_______________|___________________________________| | | | | | MOV | r/m,reg | пересылка: регистр в операнд | |__________|_______________|___________________________________| | | | | | MOV | r/m,segreg | пересылка: регистр сегмента | | | | в операнд | |__________|_______________|___________________________________| | | | | | MOV | reg,immed | пересылка: непосредственное | | | | в регистр | |__________|_______________|___________________________________| | | | | | MOV | reg,r/m | пересылка: операнд в регистр | |__________|_______________|___________________________________| | | | | | MOV | segreg,r/m | пересылка: операнд в регистр | | | | сегмента | |__________|_______________|___________________________________| | | | | | PUSH | r/m | запоминание в стеке 16-битового | | | | операнда | |__________|_______________|___________________________________| | | | | | PUSH | reg | запоминание в стеке 16-битового | | | | регистра | |__________|_______________|___________________________________| | | | | | PUSH | segreg | запоминание в стеке регистра | | | | сегмента | |__________|_______________|___________________________________| | | | | | PUSHF | | запоминание в стеке флагов | |__________|_______________|___________________________________| | | | | | POP | r/m | извлечение из стека 16-битового | | | | операнда | |__________|_______________|___________________________________| | | | | | POP | reg | извлечение из стека 16-битового | | | | регистра | |__________|_______________|___________________________________| | | | | | POP | segreg | извлечение из стека регистра | | | | сегмента | |__________|_______________|___________________________________| | | | | | POPF | | извлечение из стека флагов | |__________|_______________|___________________________________| - 44 - ________________________________________________________________ | | | | | XCHG | accum,reg | обмен аккумулятора с регистром | |__________|_______________|___________________________________| | | | | | XCHG | r/m,reg | обмен операнда с регистром | |__________|_______________|___________________________________| | | | | | XCHG | reg,accum | обмен регистра с аккумулятором | |__________|_______________|___________________________________| | | | | | XCHG | reg,r/m | обмен регистра с операндом | |__________|_______________|___________________________________| | | | | | XLAT | mem | перекодировка байта | |__________|_______________|___________________________________| | | | | | LEA | r/m | загрузка исполнительного адреса | |__________|_______________|___________________________________| | | | | | LDS | r/m | загрузка операнда с DS | |__________|_______________|___________________________________| | | | | | LES | r/m | загрузка операнда с ES | |__________|_______________|___________________________________| | | | | | LAHF | | загрузка флагов в AH | |__________|_______________|___________________________________| | | | | | SAHF | | запись AH в регистр флагов | |__________|_______________|___________________________________| | | | | | IN | accum,immed | ввод из порта(8-битовый непоср.) | |__________|_______________|___________________________________| | | | | | IN | accum,DX | ввод из порта, заданного в DX | |__________|_______________|___________________________________| | | | | | OUT | immed,accum | вывод в порт(8-битовый непоср.) | |__________|_______________|___________________________________| | | | | | OUT | DX,accum | вывод в порт, заданный в DX | |__________|_______________|___________________________________| - 45 - Арифметические, логические и инструкции сдвига ________________________________________________________________ | | | | | код оп. | операнды | функция | |__________|_______________|___________________________________| | | | | | ADD | accum,immed | сложение непосредственного с | | | | аккумулятором | |__________|_______________|___________________________________| | | | | | ADD | r/m,immed | сложение непосредственного с | | | | операндом | |__________|_______________|___________________________________| | | | | | ADD | r/m,reg | сложение регистра с операндом | |__________|_______________|___________________________________| | | | | | ADD | reg,r/m | сложение операнда с регистром | |__________|_______________|___________________________________| | | | | | ADC | accum,immed | сложение с переносом непосред- | | | | ственного с аккумулятором | |__________|_______________|___________________________________| | | | | | ADC | r/m,immed | сложение с переносом непосред- | | | | ственного с операндом | |__________|_______________|___________________________________| | | | | | ADC | r/m,reg | сложение с переносом регистра | | | | с операндом | |__________|_______________|___________________________________| | | | | | ADC | reg,r/m | сложение с переносом операнда | | | | с регистром | |__________|_______________|___________________________________| | | | | | INC | r/m | увеличение операнда на 1 | |__________|_______________|___________________________________| | | | | | INC | reg | увеличение 16-битового регистра | | | | на 1 | |__________|_______________|___________________________________| | | | | | AAA | | настройка ASCII для сложения | |__________|_______________|___________________________________| | | | | | DAA | | десятичная настройка для сложения | |__________|_______________|___________________________________| | | | | | SUB | accum,immed | вычитание непосредственного | | | | из аккумулятора | |__________|_______________|___________________________________| - 46 - ________________________________________________________________ | | | | | SUB | r/m,immed | вычитание непосредственного | | | | из операнда | |__________|_______________|___________________________________| | | | | | SUB | r/m,reg | вычитание регистра из операнда | |__________|_______________|___________________________________| | | | | | SUB | reg,r/m | вычитание операнда из регистра | |__________|_______________|___________________________________| | | | | | SBB | accum,immed | вычитание с заемом непосредст- | | | | венного из аккумулятора | |__________|_______________|___________________________________| | | | | | SBB | r/m,immed | вычитание с заемом непосредст- | | | | венного из операнда | |__________|_______________|___________________________________| | | | | | SBB | r/m,reg | вычитание с заемом регистра | | | | из операнда | |__________|_______________|___________________________________| | | | | | SBB | reg,r/m | вычитание с заемом операнда | | | | из регистра | |__________|_______________|___________________________________| | | | | | DEC | r/m | уменьшение операнда на 1 | |__________|_______________|___________________________________| | | | | | DEC | reg | уменьшение 16-битового регистра | | | | на 1 | |__________|_______________|___________________________________| | | | | | NEG | r/m | дополнение до 2 операнда | |__________|_______________|___________________________________| | | | | | CMP | accum,immed | сравнение непосредственного | | | | с аккумулятором | |__________|_______________|___________________________________| | | | | | CMP | r/m,immed | сравнение непосредственного | | | | с операндом | |__________|_______________|___________________________________| | | | | | CMP | r/m,reg | сравнение регистра с операндом | |__________|_______________|___________________________________| | | | | | CMP | reg,r/m | сравнение операнда с регистром | |__________|_______________|___________________________________| | | | | | AAS | | настройка ASCII для вычитания | |__________|_______________|___________________________________| - 47 - ________________________________________________________________ | | | | | DAS | | десятичная настройка для вычитания| |__________|_______________|___________________________________| | | | | | MUL | r/m | умножение аккумулятора на операнд | |__________|_______________|___________________________________| | | | | | IMUL | r/m | целочисленное умножение | | | | аккумулятора на операнд | |__________|_______________|___________________________________| | | | | | AAM | | настройка ASCII для умножения | |__________|_______________|___________________________________| | | | | | DIV | r/m | деление аккумулятора на операнд | |__________|_______________|___________________________________| | | | | | IDIV | r/m | целочисленное деление | | | | аккумулятора на операнд | |__________|_______________|___________________________________| | | | | | AAD | | настройка ASCII для деления | |__________|_______________|___________________________________| | | | | | CBW | | преобразование байта в слово | |__________|_______________|___________________________________| | | | | | CWD | | преобразование слова в двойное | | | | слово | |__________|_______________|___________________________________| | | | | | NOT | r/m | инверсия операнда | |__________|_______________|___________________________________| | | | | | AND | accum,immed | побитовое И непосредственного | | | | с аккумулятором | |__________|_______________|___________________________________| | | | | | AND | r/m,immed | побитовое И непосредственного | | | | с операндом | |__________|_______________|___________________________________| | | | | | AND | r/m,reg | побитовое И регистра с операндом | |__________|_______________|___________________________________| | | | | | AND | reg,r/m | побитовое И операнда с регистром | |__________|_______________|___________________________________| | | | | | OR | accum,immed | побитовое ИЛИ непосредственного | | | | с аккумулятором | |__________|_______________|___________________________________| - 48 - ________________________________________________________________ | | | | | OR | r/m,immed | побитовое ИЛИ непосредственного | | | | с операндом | |__________|_______________|___________________________________| | | | | | OR | r/m,reg | побитовое ИЛИ регистра с | | | | операндом | |__________|_______________|___________________________________| | | | | | OR | reg.r/m | побитовое ИЛИ операнда с | | | | регистром | |__________|_______________|___________________________________| | | | | | XOR | accum,immed | побитовое исключающее ИЛИ непо- | | | | средственного с аккумулятором | |__________|_______________|___________________________________| | | | | | XOR | r/m,immed | побитовое исключаюшее ИЛИ непо- | | | | средственного с операндом | |__________|_______________|___________________________________| | | | | | XOR | r/m,reg | побитовое исключающее ИЛИ | | | | регистра с операндом | |__________|_______________|___________________________________| | | | | | XOR | reg,r/m | побитовое исключающее ИЛИ | | | | операнда с регистром | |__________|_______________|___________________________________| | | | | | TEST | accum,immed | побитовое сравнение непосредст- | | | | веного с аккумулятором | |__________|_______________|___________________________________| | | | | | TEST | r/m,immed | побитовое сравнение непосредст- | | | | венного с операндом | |__________|_______________|___________________________________| | | | | | TEST | r/m,reg | побитовое сравнение регистра | | | | с операндом | |__________|_______________|___________________________________| | | | | | TEST | reg,r/m | побитовое сравнение операнда | | | | c регистром | |__________|_______________|___________________________________| | | | | | SHL | r/m,1 | логический сдвиг операнда | | | | влево на 1 бит | |__________|_______________|___________________________________| | | | | | SHL | r/m,CL | логический сдвиг операда | | | | влево на число бит в CL | |__________|_______________|___________________________________| - 49 - ________________________________________________________________ | | | | | SHR | r/m,1 | логический сдвиг операнда | | | | вправо на 1 бит | |__________|_______________|___________________________________| | | | | | SHR | r/m,CL | логический сдвиг операнда | | | | вправо на число бит в CL | |__________|_______________|___________________________________| | | | | | SAL | r/m,1 | арифметический сдвиг операнда | | | | влево на 1 бит | |__________|_______________|___________________________________| | | | | | SAL | r/m,CL | арифметический сдвиг операнда | | | | влево на число бит в CL | |__________|_______________|___________________________________| | | | | | SAR | r/m,1 | арифметический сдвиг операнда | | | | вправо на 1 бит | |__________|_______________|___________________________________| | | | | | SAR | r/m,CL | арифметический сдвиг операнда | | | | вправо на число бит в CL | |__________|_______________|___________________________________| | | | | | ROL | r/m,1 | вращение операнда влево на 1 бит | |__________|_______________|___________________________________| | | | | | ROL | r/m,CL | вращение операнда влево | | | | на число бит в CL | |__________|_______________|___________________________________| | | | | | ROR | r/m,1 | вращение операнда вправо на 1 бит | |__________|_______________|___________________________________| | | | | | ROR | r/m,CL | вращение операнда вправо | | | | на число бит в CL | |__________|_______________|___________________________________| | | | | | RCL | r/m,1 | вращение с переносом операнда | | | | влево на 1 бит | |__________|_______________|___________________________________| | | | | | RCL | r/m,CL | вращение с переносом операнда | | | | влево на число бит в CL | |__________|_______________|___________________________________| | | | | | RCR | r/m,1 | вращение с переносом операнда | | | | вправо на 1 бит | |__________|_______________|___________________________________| | | | | | RCR | r/m,CL | вращение с переносом операнда | | | | вправо на число бит в CL | |__________|_______________|___________________________________| - 50 - Инструкции обработки строк ________________________________________________________________ | | | | | код оп. | операнды | функция | |__________|_______________|___________________________________| | | | | | MOVS | dest,src | пересылка строки | |__________|_______________|___________________________________| | | | | | MOVSB | | пересылка строки побайтно | |__________|_______________|___________________________________| | | | | | MOVSW | | пересылка строки по словам | |__________|_______________|___________________________________| | | | | | CMPS | dest,src | сравнение строк | |__________|_______________|___________________________________| | | | | | CMPSB | | сравнение строк по байтам | |__________|_______________|___________________________________| | | | | | CMPSW | | сравнение строк по словам | |__________|_______________|___________________________________| | | | | | SCAS | dest | сканирование строки | |__________|_______________|___________________________________| | | | | | SCASB | | сканирование строки по байтам | |__________|_______________|___________________________________| | | | | | SCASW | | сканирование строки по словам | |__________|_______________|___________________________________| | | | | | LODS | dest | загрузка строки | |__________|_______________|___________________________________| | | | | | LODSB | | загрузка байта | |__________|_______________|___________________________________| | | | | | LODSW | | загрузка слова | |__________|_______________|___________________________________| | | | | | STOS | dest | сохранение строки | |__________|_______________|___________________________________| | | | | | STOSB | | сохранение байта | |__________|_______________|___________________________________| | | | | | STOSW | | сохранение слова | |__________|_______________|___________________________________| - 51 - Инструкции передачи управления ________________________________________________________________ | | | | | код оп. | операнды | функция | |__________|_______________|___________________________________| | | | | | JA/JNBE | label | переход, если выше | |__________|_______________|___________________________________| | | | | | JAE/JNB | label | переход, если выше или равно | |__________|_______________|___________________________________| | | | | | JB/JNAE | label | переход, если ниже | |__________|_______________|___________________________________| | | | | | JBE/JNA | label | переход, если ниже или равно | |__________|_______________|___________________________________| | | | | | JC | label | переход, если был перенос | |__________|_______________|___________________________________| | | | | | JE/JZ | label | переход, если равно (нуль) | |__________|_______________|___________________________________| | | | | | JG/JNLE | label | переход, если больше | |__________|_______________|___________________________________| | | | | | JGE/JNL | label | переход, если больше или равно | |__________|_______________|___________________________________| | | | | | JL/JNGE | label | переход, сли меньше | |__________|_______________|___________________________________| | | | | | JLE/JNG | label | переход, если меньше или равно | |__________|_______________|___________________________________| | | | | | JMP | label | безусловный переход по метке | |__________|_______________|___________________________________| | | | | | JMP | r/m | безусловный переход по | | | | косвенному адресу | |__________|_______________|___________________________________| | | | | | JNC | label | переход, если не было переноса | |__________|_______________|___________________________________| | | | | | JNE/JNZ | label | переход, если не равно (не нуль) | |__________|_______________|___________________________________| - 52 - ________________________________________________________________ | | | | | JNO | label | переход, если не было | | | | переполнения | |__________|_______________|___________________________________| | | | | | JNP/JPO | label | переход, если нет четности | |__________|_______________|___________________________________| | | | | | JNS | label | переход, если нет знака | |__________|_______________|___________________________________| | | | | | JO | label | переход, если было переполнение | |__________|_______________|___________________________________| | | | | | JP/JPE | label | переход, если есть четность | |__________|_______________|___________________________________| | | | | | JS | label | переход, если есть знак | |__________|_______________|___________________________________| | | | | | JCXZ | label | переход, если в CX - нули | |__________|_______________|___________________________________| | | | | | CALL | label | вызов процедуры по имени | |__________|_______________|___________________________________| | | | | | CALL | r/m | вызов процедуры по косвенному | | | | адресу | |__________|_______________|___________________________________| | | | | | RET | [immed] | возврат из процедуры | |__________|_______________|___________________________________| | | | | | LOOP | label | цикл | |__________|_______________|___________________________________| | | | | | LOOPE/ | label | цикл, пока равно (нуль) | | LOOPZ | | | |__________|_______________|___________________________________| | | | | | LOOPNE/ | label | цикл, пока не равно (не нуль) | | LOOPNZ | | | |__________|_______________|___________________________________| | | | | | REP | | повторение | |__________|_______________|___________________________________| | | | | | REPE/ | | повторение, пока равно (нуль) | | REPZ | | | |__________|_______________|___________________________________| | | | | | REPNE/ | | повторение, пока не равно | | REPNZ | | (не нуль) | |__________|_______________|___________________________________| - 53 - ________________________________________________________________ | | | | | INT3 | | программное прерывание с кодом 3 | | | | (1-байтная команда) | |__________|_______________|___________________________________| | | | | | INT | immed | программное прерывание (0-255) | |__________|_______________|___________________________________| | | | | | INTO | | прерывание по переполнению | |__________|_______________|___________________________________| | | | | | IRET | | возврат из прерывания | |__________|_______________|___________________________________| Инструкции управления процессором ________________________________________________________________ | | | | | код оп. | операнды | функция | |__________|_______________|___________________________________| | | | | | STC | | установка флага переноса | |__________|_______________|___________________________________| | | | | | CLC | | сброс флага переноса | |__________|_______________|___________________________________| | | | | | CMC | | дополнение флага переноса | |__________|_______________|___________________________________| | | | | | STD | | установка флага направления | |__________|_______________|___________________________________| | | | | | CLD | | сброс флага направления | |__________|_______________|___________________________________| | | | | | STI | | установка флага разрешения | | | | прерывания | |__________|_______________|___________________________________| | | | | | CLI | | сброс флага разрешения прерывания | |__________|_______________|___________________________________| | | | | | HLT | | останов системы | |__________|_______________|___________________________________| | | | | | WAIT | | ожидание активности шины TEST | |__________|_______________|___________________________________| - 54 - ________________________________________________________________ | | | | | ESC | immed,r/m | переключение кода для внешнего | | | | процессора с 6-битовым непосред- | | | | венным и операндом | |__________|_______________|___________________________________| | | | | | LOCK | | блокировка шины при выполнении | | | | следующей команды | |__________|_______________|___________________________________| | | | | | NOP | | нет операции | |__________|_______________|___________________________________| © KOAP Open Portal 2000 |