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.
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?*
FLAT*
NEAR32*
FAR32*
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
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
|
.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 are not case sensitive.
|
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
BOUND
ENTER
INS
INSB
INSW
LEAVE
OUTS
OUTSB
OUTSW
POPA
PUSHA
PUSHW*
ARPL
LAR
LSL
SGDT
SIDT
SLDT
SMSW
STR
VERR
VERW
CLTS
LGDT
LIDT
LLDT
LMSW
LTR
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
BSWAP*
CMPXCHG*
INVD*
INVLPG*
WBINVD*
XADD*
LOCK
REP
REPE
REPNE
REPNZ
REPZ
Coprocessor instructions are not case sensitive.
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
FSETPM
FCOS
FLDENVD*
FNSAVED*
FNSTENVD*
FPREM1
FRSTORD*
FSAVED*
FSIN
FSINCOS
FSTENVD*
FUCOM
FUCOMP
FUCOMPP