Для программиста ключевым ресурсом процессора 8086 является набор инструкций. Как мы уже обсуждали ранее, набор инструкций включает в себя все действия, которые программист может заставить выполнить процессор 8086. Полный набор инструкций Турбо Ассемблера приведен в Таблице 4.1.
Как можно заметить, в наборе инструкций процессора 8086 имеется множество инструкций. Эти инструкции выполняют множество действий, от пустой операции, которая не выполняет никаких функций (NOP), до копирования 65535 байт (REP MOVSB). Подробному освещению набора инструкций мы уделим много времени в других главах.
Набор инструкций Турбо Ассемблера
Таблица 4.1
Инструкция Процессор Инструкция Процессор
ADD все SAL все
OR все SHL все
ADC все SAR все
SBB все SHR все
AND все RCL все
SUB все RCR все
XOR все AAA все
CMP все AAS все
XCHG все CBW все
TEST все CWDE 386
MOV все (1) CLC все
ESC все CLD все
JMP все CLI все
CALL все CMC все
INT все CMPSB все
INC все CMPSW все
DEC все CMPSD 386
PUSH все CWD все
POP все CDQ 386
AAD все (2) DAA все
AAM все (2) DAS все
IN все HLT все
OUT все INTO все
LEA все IRET все
LDS все IRETD 386
LES все LAHF все
LSS 386 LODSB все
LFS 386 LODSW все
LGS 386 LODSD 386
DIV все MOVSB все
MUL все MOVSW все
IDIV все MOVSD 386
IMUL все (3) NOP все
NEG все POPF все
NOT все POPFD 386
ROL все PUSHF все
ROR все PUSHFD 386
SAHF все REPE все
SCASB все REPZ все
SCASW все REPNE все
SCASD 386 REPNZ все
STC все SEGCS все (4)
STD все SEGSD все (5)
STI все SEGSS все (6)
STOSB все SEGES все (7)
STOSW все SEGFS 386 (8)
STOSD 386 SEGGS 386 (9)
WAIT все RET все
XLATB все RETN все (10)
STOS все RETF все (11)
SCAS все JA все (12)
LODS все JNBE все (12)
XLAT все JAE все (12)
MOVS все JNB все (12)
CMPS все JNK все (12)
PUSHA 186386 JB все (12)
PUSHAD 386 JNAE все (12)
POPA 186386 JC все (12)
POPAD 386 JBE все (12)
LEAVE 186386 JNA все (12)
INSB 186386 JE все (12)
INSD 386 JG все (12)
OUTSB 186386 JNLE все (12)
OUTSW 186386 JGE все (12)
OUTSD 386 JNL все (12)
INS 186386 JL все (12)
OUTS 186386 JNGE все (12)
BOUND 186386 JLE все (12)
ENTER 186386 JNG все (12)
LOCK все JNE все (12)
REP все JNZ все (12)
JNO все (12) SETA 386
JNS все (12) SETAE 386
JNP все (12) SETB 386
JPO все (12) SETBE 386
JO все (12) SETC 386
JP все (12) SETE 386
JPE все (12) SETG 386
JS все (12) SETGE 386
LOOP все (13) SETL 386
LOOPE все (14) SETLE 386
LOOPZ все (14) SETNA 386
LOOPNE все (14) SETNAE 386
LOOPNZ все (14) SETNB 386
LOOPW все (15) SETNB 386
LOOPWE все (16) SETNC 386
LOOPWZ все (16) SETNE 386
LOOPWNE все (16) SETNG 386
LOOPWNZ все (16) SETNGE 386
LOOPD 386 (17) SETNL 386
LOOPDE 386 (17) SETNLE 386
LOOPDZ 386 (17) SETNO 386
LOOPDNE 386 (17) SETNP 386
LOOPDNZ 386 (17) SETNS 386
JCXZ все (18) SETNZ 386
JECXZ 386 (19) SETO 386
BT 386 SETP 386
BTC 386 SETPE 386
BTR 386 SETS 386
BTS 386 SETZ 386
BSF 386
BSR 386 APPL 286p+386p
MOVSX 386 CLTS 286p+386p
MOVZX 386 LLDT 286p+386p
SHLD 386 LMSW 286p+386p
SHRD 386 LTR 286p+386p
SLDT 286p+386p FXAM 8087387
SMSW 286p+386p FXTRACT 8087387
STR 286p+386p FXAM 8087387
VERR 286p+386p FXTRACT 8087387
VERW 286p+386p FYL2X 8087387
LGDT 286p+386p FYL2XP1 8087387
LIDT 286p+386p FNCLEX 8087387
SGDT 286p+386p FNDISI 8087387
SIDT 286p+386p FNENI 8087387
LAR 286p+386p FNINIT 8087387
LSL 286p+386p FADDP 8087387
FMULP 8087387 FDIVP 8087387
FADD 8087387 FDIVRP 8087387
FDIV 8087387 FSUBP 8087387
FDIVR 8087387 FSUBRP 8087387
FMUL 8087387 FXCH 8087387
FSUB 8087387 FCOMPP 8087387
FCOM 8087387 FFREE 8087387
FCOM 8087387 FIADD 8087387
FCOMP 8087387 FICOM 8087387
FST 8087387 FICOMP 8087387
F2XM1 8087387 FIDIV 8087387
FABS 8087387 FIDIVR 8087387
FCHS 8087387 FIMUL 8087387
FCLEX 8087387 FIST 8087387
FDECSTP 8087387 FISUB 8087387
FDISI 8087387 FISUBR 8087387
FENI 8087387 FLDCW 8087387
FINCSTP 8087387 FSTCW 8087387
FINIT 8087387 FSTSW 8087387
FLD1 8087387 FNSTCW 8087387
FLDL2E 8087387 FNSTSW 8087387
FLDL2T 8087387 FLDENV 8087387
FLDLG2 8087387 FRSTOR 8087387
FLDLN2 8087387 FSAVE 8087387
FLDPI 8087387 FSTENV 8087387
FLDZ 8087387 FNSAVE 8087387
FNOP 8087387 FNSTENV 8087387
FPATAN 8087387 FLD 8087387
FPREM 8087387 FSTP 8087387
FPTAN 8087387 FILD 8087387
FRNDINT 8087387 FISTP 8087387
FSCALE 8087387 FBLD 8087387
FSQRT 8087387 FBSTP 8087387
FIST 8087387 FWAIT 8087387
(1) реализована на процессоре 386 с использованием специальных
регистров;
(2) за инструкцией может следовать любое 8битовое непосредст
венное значение х (по умолчанию 10);
(3) расширения процессора 286;
(4) генерирует переопределение CS, может следовать за инструк
цией;
(5) генерирует переопределение DS, может следовать за инструк
цией;
(6) генерирует переопределение SS, может следовать за инструк
цией;
(7) генерирует переопределение ES, может следовать за инструк
цией;
(8) генерирует переопределение FS, может следовать за инструк
цией;
(9) генерирует переопределение GS, может следовать за инструк
цией;
(10) явный возврат управления ближнего типа;
(11) явный возврат управления дальнего типа;
(12) при переходах воспринимает аргумент ближнего или дальнего
типа;
(13) размер операнда в операторе цикла определяется размером
сегмента;
(14) аналогично LOOP;
(15) размер операнда в цикле всегда равен слову (CX);
(16) аналогично LOOPW;
(17) размер операнда в цикле всегда равен двойному слову (ECX);
(18) размер операнда в JCXZ равен слову (CX);
(19) размер операнда в JECXZ равен двойному слову (ECX).
