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