MASM Reserved Words
This appendix lists the reserved words recognized by MASM.
They are divided primarily by their use in the language. The
primary categories are:
- Operands and symbols
- Registers
- Operators and directives
- Processor instructions
- Coprocessor instructions
Reserved words in MASM 6.1 are reserved under all CPU modes.
Words enabled in .8086 mode, the default, can be used in
all higher CPU modes. To use words from subcategories such as
"Special Operands for the 80386" (later in this appendix)
requires .386 mode or higher.
You can disable the recognition of any reserved word
specified in this appendix by setting the NOKEYWORD
option for the OPTION directive. Once disabled, the word
can be used in any way as a user-defined symbol (provided the
word is a valid identifier). If you want to remove the
STR instruction, the MASK operator, and the
NAME directive, for instance, from the set of words MASM
recognizes as reserved, add this statement to your program:
OPTION NOKEYWORD:<STR MASK NAME>
Words in this appendix identified with an asterisk (*) are
new since MASM 5.1.
Operands and Symbols
The words on the two lists in this section are the operands
to certain directives. They have special meaning to the
assembler. The words on the first list are not reserved words.
They can be used in every way as normal identifiers, without
affecting their use as operands to directives. The assembler
interprets their use from context.
Even though the words on the first list are not reserved,
they should not be defined to be text macros or text macro
functions. If they are, they will not be recognized in their
special contexts. The assembler does not give a warning if such
a redefinition occurs.
- ABS
- ALL
- ASSUMES
- AT
- CASEMAP*
- COMMON
- COMPACT
- CPU*
- DOTNAME*
- EMULATOR*
- EPILOGUE*
- ERROR*
- EXPORT*
- EXPR16*
- EXPR32*
- FARSTACK*
- FLAT
- FORCEFRAME
- HUGE
- LANGUAGE*
- LARGE
- LISTING*
- LJMP*
- LOADDS*
- M510*
- MEDIUM
- MEMORY
- NEARSTACK*
- NODOTNAME*
- NOEMULATOR*
- NOKEYWORD*
- NOLJMP*
- NOM510*
- NONE
- NONUNIQUE*
- NOOLDMACROS*
- NOOLDSTRUCTS*
- NOREADONLY*
- NOSCOPED*
- NOSIGNEXTEND*
- NOTHING
- NOTPUBLIC*
- OLDMACROS*
- OLDSTRUCTS*
- OS_DOS*
- PARA
- PRIVATE*
- PROLOGUE*
- RADIX*
- READONLY*
- REQ*
- SCOPED*
- SETIF2*
- SMALL
- STACK
- TINY
- USE16
- USE32
- USES
These operands are reserved words. Reserved words are not
case sensitive.
- $
- ?
- @B
- @F
- ADDR*
- BASIC
- BYTE
- C
- CARRY?*
- DWORD
- FAR
- FAR16*
- FORTRAN
- FWORD
- NEAR
- NEAR16*
- OVERFLOW?*
- PARITY?*
- PASCAL
- QWORD
- REAL4*
- REAL8*
- REAL10*
- SBYTE*
- SDWORD*
- SIGN?*
- STDCALL*
- SWORD*
- SYSCALL*
- TBYTE
- VARARG*
- WORD
- ZERO?*
Special Operands for the 80386/486
Predefined Symbols
Unlike most MASM reserved words, predefined symbols are case
sensitive.
- @CatStr*
- @code
- @CodeSize
- @Cpu
- @CurSeg
- @data
- @DataSize
- @Date*
- @Environ*
- @fardata
- @fardata?
- @FileCur*
- @FileName
- @InStr*
- @Interface*
- @Line*
- @Model*
- @SizeStr*
- @stack*
- @SubStr*
- @Time*
- @Version
- @WordSize
Registers
- AH
- AL
- AX
- BH
- BL
- BP
- BX
- CH
- CL
- CR0
- CR2
- CR3
- CS
- CX
- DH
- DI
- DL
- DR0
- DR1
- DR2
- DR3
- DR6
- DR7
- DS
- DX
- EAX
- EBP
- EBX
- ECX
- EDI
- EDX
- ES
- ESI
- ESP
- FS
- GS
- SI
- SP
- SS
- ST
- TR3*
- TR4*
- TR5*
- TR6
- TR7
Operators and Directives
- .186
- .286
- .286C
- .286P
- .287
- .386
- .386C
- .386P
- .387
- .486*
- .486P*
- .8086
- .8087
- .ALPHA
- .BREAK*
- .CODE
- .CONST
- .CONTINUE*
- .CREF
- .DATA
- .DATA?
- .DOSSEG*
- .ELSE*
- .ELSEIF*
- .ENDIF*
- .ENDW*
- .ERR
- .ERR1
- .ERR2
- .ERRB
- .ERRDEF
- .ERRDIF
- .ERRDIFI
- .ERRE
- .ERRIDN
- .ERRIDNI
- .ERRNB
- .ERRNDEF
- .ERRNZ
- .EXIT*
- .FARDATA
- .FARDATA?
- .IF*
- .LALL
- .LFCOND
- .LIST
- .LISTALL*
- .LISTIF*
- .LISTMACRO*
- .LISTMACROALL*
- .MODEL
- .NO87*
- .NOCREF*
- .NOLIST*
- .NOLISTIF*
- .NOLISTMACRO*
- .RADIX
- .REPEAT*
- .SALL
- .SEQ
- .SFCOND
- .STACK
- .STARTUP*
- .TFCOND
- .TYPE
- .UNTIL*
- .UNTILCXZ*
- .WHILE*
- .XALL
- .XCREF
- .XLIST
- ALIAS*
- ALIGN
- ASSUME
- CATSTR
- COMM
- COMMENT
- DB
- DD
- DF
- DOSSEG
- DQ
- DT
- DUP
- DW
- ECHO*
- ELSE
- ELSEIF
- ELSEIF1
- ELSEIF2
- ELSEIFB
- ELSEIFDEF
- ELSEIFDIF
- ELSEIFDIFI
- ELSEIFE
- ELSEIFIDN
- ELSEIFIDNI
- ELSEIFNB
- ELSEIFNDEF
- END
- ENDIF
- ENDM
- ENDP
- ENDS
- EQ
- EQU
- EVEN
- EXITM
- EXTERN*
- EXTERNDEF*
- EXTRN
- FOR*
- FORC*
- GE
- GOTO*
- GROUP
- GT
- HIGH
- HIGHWORD*
- IF
- IF1
- IF2
- IFB
- IFDEF
- IFDIF
- IFDIFI
- IFE
- IFIDN
- IFIDNI
- IFNB
- IFNDEF
- INCLUDE
- INCLUDELIB
- INSTR
- INVOKE*
- IRP
- IRPC
- LABEL
- LE
- LENGTH
- LENGTHOF*
- LOCAL
- LOW
- LOWWORD*
- LROFFSET*
- LT
- MACRO
- MASK
- MOD
- .MSFLOAT
- NAME
- NE
- OFFSET
- OPATTR*
- OPTION*
- ORG
- %OUT
- PAGE
- POPCONTEXT*
- PROC
- PROTO*
- PTR
- PUBLIC
- PURGE
- PUSHCONTEXT*
- RECORD
- REPEAT*
- REPT
- SEG
- SEGMENT
- SHORT
- SIZE
- SIZEOF*
- SIZESTR
- STRUC
- STRUCT*
- SUBSTR
- SUBTITLE*
- SUBTTL
- TEXTEQU*
- THIS
- TITLE
- TYPE
- TYPEDEF*
- UNION*
- WHILE*
- WIDTH
Processor Instructions
Processor instructions are not case sensitive.
8086/8088 Processor Instructions
- AAA
- AAD
- AAM
- AAS
- ADC
- ADD
- AND
- CALL
- CBW
- CLC
- CLD
- CLI
- CMC
- CMP
- CMPS
- CMPSB
- CMPSW
- CWD
- DAA
- DAS
- DEC
- DIV
- ESC
- HLT
- IDIV
- IMUL
- IN
- INC
- INT
- INTO
- IRET
- JA
- JAE
- JB
- JBE
- JC
- JCXZ
- JE
- JG
- JGE
- JL
- JLE
- JMP
- JNA
- JNAE
- JNB
- JNBE
- JNC
- JNE
- JNG
- JNGE
- JNL
- JNLE
- JNO
- JNP
- JNS
- JNZ
- JO
- JP
- JPE
- JPO
- JS
- JZ
- LAHF
- LDS
- LEA
- LES
- LODS
- LODSB
- LODSW
- LOOP
- LOOPE
- LOOPEW*
- LOOPNE
- LOOPNEW*
- LOOPNZ
- LOOPNZW*
- LOOPW*
- LOOPZ
- LOOPZW*
- MOV
- MOVS
- MOVSB
- MOVSW
- MUL
- NEG
- NOP
- NOT
- OR
- OUT
- POP
- POPF
- PUSH
- PUSHF
- RCL
- RCR
- RET
- RETF
- RETN
- ROL
- ROR
- SAHF
- SAL
- SAR
- SBB
- SCAS
- SCASB
- SCASW
- SHL
- SHR
- STC
- STD
- STI
- STOS
- STOSB
- STOSW
- SUB
- TEST
- WAIT
- XCHG
- XLAT
- XLATB
- XOR
80186 Processor Instructions
- BOUND
- ENTER
- INS
- INSB
- INSW
- LEAVE
- OUTS
- OUTSB
- OUTSW
- POPA
- PUSHA
- PUSHW*
80286 Processor Instructions
- ARPL
- LAR
- LSL
- SGDT
- SIDT
- SLDT
- SMSW
- STR
- VERR
- VERW
80286 and 80386 Privileged-Mode Instructions
- CLTS
- LGDT
- LIDT
- LLDT
- LMSW
- LTR
80386 Processor Instructions
- BSF
- BSR
- BT
- BTC
- BTR
- BTS
- CDQ
- CMPSD
- CWDE
- INSD
- IRETD
- IRETDF*
- IRETF*
- JECXZ
- LFS
- LGS
- LODSD
- LOOPD*
- LOOPED*
- LOOPNED*
- LOOPNZD*
- LOOPZD*
- LSS
- MOVSD
- MOVSX
- MOVZX
- OUTSD
- POPAD
- POPFD
- PUSHAD
- PUSHD*
- PUSHFD
- SCASD
- SETA
- SETAE
- SETB
- SETBE
- SETC
- SETE
- SETG
- SETGE
- SETL
- SETLE
- SETNA
- SETNAE
- SETNB
- SETNBE
- SETNC
- SETNE
- SETNG
- SETNGE
- SETNL
- SETNLE
- SETNO
- SETNP
- SETNS
- SETNZ
- SETO
- SETP
- SETPE
- SETPO
- SETS
- SETZ
- SHLD
- SHRD
- STOSD
80486 Processor Instructions
BSWAP*
CMPXCHG*
INVD*
INVLPG*
WBINVD*
XADD*
Instruction Prefixes
LOCK
REP
REPE
REPNE
REPNZ
REPZ
Coprocessor Instructions
Coprocessor instructions are not case sensitive.
8087 Coprocessor Instructions
- F2XM1
- FABS
- FADD
- FADDP
- FBLD
- FBSTP
- FCHS
- FCLEX
- FCOM
- FCOMP
- FCOMPP
- FDECSTP
- FDISI
- FDIV
- FDIVP
- FDIVR
- FDIVRP
- FENI
- FFREE
- FIADD
- FICOM
- FICOMP
- FIDIV
- FIDIVR
- FILD
- FIMUL
- FINCSTP
- FINIT
- FIST
- FISTP
- FISUB
- FISUBR
- FLD
- FLD1
- FLDCW
- FLDENV
- FLDENVW*
- FLDL2E
- FLDL2T
- FLDLG2
- FLDLN2
- FLDPI
- FLDZ
- FMUL
- FMULP
- FNCLEX
- FNDISI
- FNENI
- FNINIT
- FNOP
- FNSAVE
- FNSAVEW*
- FNSTCW
- FNSTENV
- FNSTENVW*
- FNSTSW
- FPATAN
- FPREM
- FPTAN
- FRNDINT
- FRSTOR
- FRSTORW*
- FSAVE
- FSAVEW*
- FSCALE
- FSQRT
- FST
- FSTCW
- FSTENV
- FSTENVW*
- FSTP
- FSTSW
- FSUB
- FSUBP
- FSUBR
- FSUBRP
- FTST
- FWAIT
- FXAM
- FXCH
- FXTRACT
- FYL2X
- FYL2XP1
80287 Privileged-Mode Instruction
80387 Instructions
- FCOS
- FLDENVD*
- FNSAVED*
- FNSTENVD*
- FPREM1
- FRSTORD*
- FSAVED*
- FSIN
- FSINCOS
- FSTENVD*
- FUCOM
- FUCOMP
- FUCOMPP