Assembler Directives
Microprocessors & Microcontrollers / By Roshni Y / Leave a Comment
Definition: Assembler directives are the instructions used by the assembler at the time of
assembling a source program. More specifically, we can say, assembler directives are the
commands or instructions that control the operation of the assembler.
Assembler directives are the instructions provided to the assembler, not the processor as the
processor has nothing to do with these instructions. These instructions are also known as pseudo-
instructions or pseudo-opcode.
Now the question arises what assembler directives specifically do?
So, assembler directives:
show the beginning and end of a program provided to the assembler,
used to provide storage locations to data,
used to give values to variables,
define the start and end of different segments, procedures or macros etc. of a program.
We know that assembly language is a less complex and programmer-friendly language used to
program the processors. In assembly language programming, the instructions are specified in the
form of mnemonics rather in the form of machine code i.e., 0 and 1. But the microprocessor or
microcontrollers are specifically designed in a way that they can only understand machine
language.
Thus assembler is used to convert assembly language into machine code so that it can be
understood and executed by the processor. Therefore, to control the generation of machine codes
from the assembly language, assembler directives are used. However, machine codes are only
generated for the program that must be provided to the processor and not for assembler directives
because they do not belong to the actual program.
Assembler Directives of 8085
The assembler directives given below are used by 8085 and 8086 assemblers:
DB: Define Byte
This directive is used for the purpose of allocating and initializing single or multiple data bytes.
assemblewr directive - DB
Memory name AREA has three consecutive locations where 30H, 52H and 35H are to be stored.
representation of DB
DW: Define Word
It is used for initialising single or multiple data words (16-bit).
These two 16-bit data 1020H and 4216H are stored at 4 consecutive locations in the memory
MARK.
representation of DW
END: End of program
This directive is used at the time of program termination.
EQU: Equate
It is used to assign any numerical value or constant to the variable.
assembler directive - EQU
Variable name ‘DONE’ has value 10H
MACRO: Represents beginning
Shows the beginning of macro along with defining name and parameters.
ENDM: End of macro
ENDM indicates the termination of macro.
where macroname (STEP) is specified by the user.
ORG: Origin
This directive is used at the time of assigning starting address for a module or segment.
assembler directive - ORG
By this instruction, the assembler gets to know that the statements following this instruction,
must be stored in the memory location beginning with address 1050H.
Assembler Directives of 8086
These assembler directives are specifically used by 8086:
ASSUME: Shows the segment name to the assembler
It provides information to the assembler regarding the name of the program or data segment for
that particular segment.
assembler directive - ASSUME
This directive specifies that the instruction of the source program is stored in logical segment
_DONE.
DD: Define Double word
This directive allows the initialization of single or multiple data in the form of double words (i.e.,
4 bytes). The is used to inform the assembler that the stored data in memory is a double word.
assembler directive - DD
Thus memory stores the given data in the form:
representation of DD
DQ: Define Quad words
It is used to initialise quad words (8-bytes) either one or more than one. Thereby informing the
assembler that the data stored in memory is quad-word.
DT: Define ten bytes
It is used to allocate and initialize 10 bytes of a variable.
DUP: Duplicate
DUP allows initialization of multiple locations and assigning of values to them. This allows
storing of repeated characters or variables in different locations.
assembler directive - DUP
So this permits the storing of these data in memory and creating 8 identical sets in the memory
identified as Book.
representation of DUP
DWORD: Double word
This directive is used to indicate that the operand is of double word size.
PROC: Procedure
It defines the starting of a procedure/subroutine.
FAR: This directive is a type specifier that is used by the assembler to declare intersegment call
(i.e., call from different segment).
NEAR: This is used for intrasegment call i.e., a call within the same segment.
ENDP: End of procedure
This directive shows the termination of a procedure.
assembler directive - PROC
SEGMENT: Beginning of a memory segment.
It is used to show the beginning of a memory segment with a specific name.
ENDS: End of segment
This directive defines the termination of a particular memory segment as it is specified by its
name
assembler directive - SEGMENT
The statements within the segment are nothing but the program code.
EVEN: It is used to inform the assembler to align the data beginning from an even address.
As data specified with an odd starting address requires 2 byte accessing. Thus using this
directive, data can be aligned with an even starting address.
PTR: Pointer
This directive shows information regarding the size of the operand.
assembler directive - PTR
This shows legal near jump to BX.
PUBLIC: This directive is used to provide a declaration to variables that are common for
different program modules.
STACK: This directive shows the presence of a stack segment.
assembler directive - STACK
SHORT: This is used in reference to jump instruction in order to assign a displacement of one
byte.
THIS: It is used along with EQU directive for setting the label to either, byte, word or double-
word.
So, these assembler directives are used by the processors for controlling the generation of
machine code and organization of the program.