Other than the CPU instruction set, there are special commands
to the assembler that direct the assembler to do various jobs
when assembling the code. There are useful assembler directivesyou
can use to let the assembler know various settings, such as
.set, .macro, .endm, .ref, .align, .word, .byte
.include.
The .set directive defines a symbolic
name. For example, you can have
The assembler replaces each occurrence of
count with 40.
The .ref
directive is used to declare symbolic names defined in another
file. It is similar to the extern
declaration in C.
The .space directive reserves a memory
space with specified number of bytes. For example, you can
have
to define a buffer of size 128 bytes. The symbol
buffer has the address of the first byte
reserved by .space. The
.bes directive is similar to
.space, but the label has the address of
the last byte reserved.
To put a constant value in the memory, you can use
.byte, .word,
etc. If you have
the assembler places the word constant 0x1234 at
a memory location and const1 has the address of
the memory location. .byteetc. works similarly.
Sometimes you need to place your data or code at specific
memory address boundaries such as word, halfword,
etc. You can use the .align
directive to do this. For example, if you have
1 .align 4
2 buffer .space 128
3 ...
the first address of the reserved 128 bytes is at the
word boundary in memory, that is the 2 LSBs of the address (in
binary) are 0. Similarly, for half-word alignment, you should
have .align directive to do this. For
example, if you have
1 .align 2
2 buffer .space 128
3 ...
the .include directive is used to read
the source lines from another file. The instruction
will input the lines in other.asm at this
location. This is useful when working with multiple files.
Instead of making a project having multiple files, you can
simply include these different files in one file.
How do you write comments in your assembly program? Anything
that follows ; is considered a comment
and ignored by the assembler. For example,
1 ; this is a comment
2 ADD .L1 A1,A2,A3 ;add a1 and a2