Assembler
- An assembler is a program used to convert an assembly language program into the equivalent machine code modules which may further be converted to executable codes.
- The assembler decides the address of each label and substitutes the values for each of the constants and variables,
- It then forms the machine code for the mnemonics and data in the assembly language program.
- While doing these things, the assembler may find out syntax errors.
Assembler Directives
- For completing all these tasks(mentioned above), an assembler needs some hints from the programmer, i.e. the required storage for a particular constant or variable, logical names of the segments, types of the different routines and modules, end of file, etc.
- These types of hints are given to the assembler using some predefined alphabetical strings called assembler directives.
_________________________________________________________________________________
Assembler Directives help the assembler to correctly understand the assembly language programs to prepare the codes.
_________________________________________________________________________________
Now, lets learn about some of these directives;
1. Define Byte (DB):
- The DB directive is used to reserve byte or bytes of memory locations in the available memory.
Example:
LIST DB 01H, 02H, 03H, 04H
This statement directs the assembler to reserve four memory locations for a list named LIST and initialize them with the above specified values.
MESSAGE DB 'GOOD MORNING'
This makes the assembler reserve the number of bytes of memory equal to the number of characters in the string named MESSAGE and initialize those locations by the ASCII equivalent of these characters.
VALUE DB 50H
This statement directs the assembler to reserve 50H memory bytes and leave them uninitialised for the variable named VALUE.
2. Define Word (DW):
- Used to reserve the number of memory words (16-bit) in the available memory.
Example:
WORDS DW 1234H, 4567H, 78ABH, 045CH
WDATA DW 5 DUP (6666H)
Reserve five words i.e. 10 bytes of memory for a word label WDATA and initialise all the word locations with 6666H.
3. Define Quad Word (DQ):
- This directive is used to direct the assembler to reserve four words (8 bytes) of memory for the specified variable and may initialize it with the specified values.
4. Define Ten Bytes (DT)
5. Double Word (DD)
6. Assume logical segment name (ASSUME):
- Used to inform the assembler the names of the logical segments to be assumed for different segments used in the program.
Example:
ASSUME DS:DATA
7. End of Program (END):
- Marks the end of assembly language program.
- When the assembler comes across this END directive, it ignores the source lines available later on.
8. End of Procedure (ENDP):
- To mark end of a particular procedure, the name of procedure may appear as a prefix with the directive ENDP.
Example: PROCEDURE STAR
.
.
.
STAR ENDP
9. End of Segment (ENDS):
- Marks end of a logical segment.
Example: DATA SEGMENT
.
.
.
DATA ENDS
- The SEGMENT and ENDS directives are used to identify a group of data items or group of instructions that you want to be put together in a particular segment.
- A group of data statements or a group of instruction statements contained between SEGMENT and ENDS directives is called a LOGICAL SEGMENT.
- A logical is not usually given a physical starting address when it is declared. After the program is assembled and perhaps linked with other assembled program modules, it is then assigned the physical address where it will be loaded in memory to be run.