Appendix D

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


FLAT*

NEAR32*

FAR32*


 

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<