|
Приложение
3. Инструкции процессоров 8086/8088
Условные обозначения:
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
|