<< Chapter < Page | Chapter >> Page > |
Instruction | Description |
---|---|
ADD(U) |
signed or unsigned integer addition without saturation |
ADDAB (B/H/W) |
integer addition using addressing mode |
LDB (B/H/W) |
load from memory with a 15-bit constant offset |
MV |
move from register to register |
STB (B/H/W) |
store to memory with a register offset or 5-bit unsigned constant offset |
SUB(U) |
signed or unsigned integer subtraction without saturation |
SUBAB (B/H/W) |
integer subtraction using addressing mode |
ZERO |
zero a register (pseudo-operation) |
Instruction | Description |
---|---|
MPY (U/US/SU) |
signed or unsigned integer multiply 16lsb*16lsb |
MPYH (U/US/SU) |
signed or unsigned integer multiply 16msb*16msb |
MPYLH |
signed or unsigned integer multiply 16lsb*16msb |
MPYHL |
signed or unsigned integer multiply 16msb*16lsb |
SMPY (HL/LH/H) |
integer multiply with left shift and saturation |
Other than the CPU instruction set, there are special commandsto the assembler that direct the assembler to do various jobs
when assembling the code. There are useful
assembler directives you
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
1 count .set 40
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 canhave
1 buffer .space 128
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
,
1 const1 .word 0x1234
the assembler places the word constant
0x1234
at
a memory location and
const1
has the address of
the memory location.
.byte
Sometimes you need to place your data or code at specific
memory address boundaries such as word, halfword,
.align
directive to do this. For example, if you have
1 .align 4
2 buffer .space 1283 ...
the first address of the reserved 128 bytes is at the
word boundary in memory, that is the 2 LSBs of the address (inbinary) 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 1283 ...
the
.include
directive is used to read
the source lines from another file. The instruction
1 .include ``other.asm''
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,
Notification Switch
Would you like to follow the 'Dsp lab with ti c6x dsp and c6713 dsk' conversation and receive update notifications?