The built-in assembler supports the following opcodes.
LOCK REP REPE REPZ REPNE
REPNZ SEGES SEGCS SEGSS SEGDS
SEGFS SEGGS ADC,mLeft ADD,mLeft AND,mLeft
AAA,mAX AAS,mAX AAD,mAX AAM,mAX BOUND,
mNONE
BSF,mLeft BSR,mLeft BT BTC,mLeft BTR,mLeft
BTS,mLeft CALL,mNONE CMP CBW,mAX CWDE,mAX
CWD,
<mAX,mDX> CDQ,
<mAX,mDX> CLC CLD CLI
CMC CMPSB,
<mSIDI> CMPSW,
<mSIDI> CMPSD,
<mSIDI> DAA,mAX
DAS,mAX DEC,mLeft DIV,mLeft ENTER,
mNONE HLT
IDIV,mLeft IMUL,mLeft IN,mLeft INC,mLeft INSB,mDI
INSW,mDI INSD,mDI INT INTO IRET
IRETD JMP JO JNO JC
JB JNAE JNC JAE JNB
JE JZ JNE JNZ JBE
JNA JA JNBE JS JNS
JP JPE JNP JPO JL
JNGE JGE JNL JLE JNG
JG JNLE JCXZ JECXZ LAHF,mAX
LEA,mLeft LEAVE,
mNONE LDS,mSpecial LES,mSpecial LFS,mSpecial
LGS,mSpecial LSS,mSpecial LODSB,
<mAX,mDI> LODSW,
<mAX,mDI> LODSD,
<mAX,mDI>
LOOP,mCX LOOPE,mCX LOOPZ,mCX LOOPNE,mCX LOOPNZ,mCX
LOOPD,mCX LOOPDE,mCX LOOPDZ,mCX LOOPDNE,
mCX LOOPDNZ,
mCX
MOV,mLeft MOVSX,mLeft MOVZX,mLeft MOVSB,
<mSIDI> MOVSW,
<mSIDI>
MOVSD,
<mSIDI> MUL,mLeft NEG,mLeft NOP NOT,mLeft
OR,mLeft OUT OUTSB,mSI OUTSW,mSI OUTSD,mSI
POP,mLeft POPF POPA,mSpecial POPAD,
mSpecial POPFD,
mSpecial
PUSH PUSHF PUSHA PUSHAD PUSHFD
RET RETN RETF SUB,mLeft SBB,mLeft
RCL,mLeft RCR,mLeft ROL,mLeft ROR,mLeft SAL,mLeft
SHL,mLeft SAR,mLeft SHR,mLeft SHLD,mLeft SHRD,mLeft
SAHF SCASB,mDI SCASW,mDI SCASD,mDI STC
STD STI STOSB,mDI STOSW,mDI STOSD,mDI
TEST WAIT XCHG,<mLeft,
mRight> XLAT,mAX XOR,mLeft
SETA,mLeft SETAE,mLeft SETB,mLeft SETBE,mLeft SETC,mLeft
SETE,mLeft SETG,mLeft SETGE,mLeft SETL,mLeft SETLE,mLeft
SETNA,mLeft SETNAE,mLeft SETNB,mLeft SETNBE,mLeft SETNC,mLeft
SETNE,mLeft SETNG,mLeft SETNGE,mLeft SETNL,mLeft SETNLE,mLeft
SETNO,mLeft SETNP,mLeft SETNS,mLeft SETNZ,mLeft SETO,mLeft
SETP,mLeft SETPE,mLeft SETPO,mLeft SETS,mLeft SETZ,mLeft
ARPL LAR,mLeft CLTS LGDT SGDT
LIDT SIDT LLDT SLDT LMSW
SMSW LSL,mLeft LTR,mLeft STR,mLeft VERR
VERW BSWAP,mLeft XADD,mLeft CMPXCHG,
<mLeft,mAX> INVD
WBINVD INVLPG FLD,m87 FILD,m87 FST,m87
FSTP,m87 FIST,m87 FISTP,m87 FADD,m87 FADDP,m87
FIADD,m87 FSUB,m87 FSUBP,m87 FSUBR,m87 FSUBRP,m87
FISUB,m87 FISUBR,m87 FMUL,m87 FMULP,m87 FIMUL,m87
FDIV,m87 FDIVP,m87 FDIVR,m87 FDIVRP,m87 FIDIV,m87
FIDIVR,m87 FCOM,m87 FCOMP,m87 FCOMPP,m87 FICOM,m87
FICOMP,m87 F2XM1,m87 FABS,m87 FBLD,m87 FBSTP,m87
FCHS,m87 FDECSTP,m87 FFREE,m87 FINCSTP,m87 FLD1,m87
FLDCW,m87 FLDENV,m87 FLDL2E,m87 FLDL2T,m87 FLDLG2,m87
FLDLN2,m87 FLDPI,m87 FLDZ,m87 FNOP,m87 FPREM,m87
FPATAN,m87 FPTAN,m87 FRNDINT,m87 FRSTOR,m87 FSCALE,m87
FSETPM,m87 FSQRT,m87 FTST,m87 FWAIT,m87 FXAM,m87
FXCH,m87 FXTRACT,m87 FYL2X,m87 FYL2XP1,m87 FCLEX,m87
FNCLEX,m87 FDISI,m87 FNDISI,m87 FENI,m87 FNENI,m87
FINIT,m87 FNINIT,m87 FSAVE,m87 FNSAVE,m87 FSTCW,m87
FNSTCW,m87 FSTENV,m87 FNSTENV,m87 FSTSW,m87 FNSTSW,m87
FUCOM,m87 FUCOMP,m87 FUCOMPP,m87 FPREM1,m87 FCOS,m87
FSIN,m87 FSINCOS,m87
For a complete description of each instruction, refer to your microprocessor documentation.
RET instruction sizing
The RET instruction opcode always generates a near return.
Automatic jump sizing
Unless otherwise directed, the built-in assembler optimizes jump instructions by automatically selecting the shortest, and therefore most efficient, form of a jump instruction. This automatic jump sizing applies to the unconditional jump instruction (JMP), and to all conditional jump instructions when the target is a label (not a procedure or function).
For an unconditional jump instruction (JMP), the built-in assembler generates a short jump (one-byte opcode followed by a one-byte displacement) if the distance to the target label is ?28 to 127 bytes. Otherwise it generates a near jump (one-byte opcode followed by a two-byte displacement).
For a conditional jump instruction, a short jump (one-byte opcode followed by a one-byte displacement) is generated if the distance to the target label is ?28 to 127 bytes. Otherwise, the built-in assembler generates a short jump with the inverse condition, which jumps over a near jump to the target label (five bytes in total). For example, the assembler statement
JC Stop
where Stop isn 抰 within reach of a short jump, is converted to a machine code sequence that corresponds to this:
JNC Skip
JMP Stop
Skip:
Jumps to the entry points of procedures and functions are always near.