<< Chapter < Page Chapter >> Page >
.d unit
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)
.m unit
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

Useful assembler directives

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 , etc. If you have

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 etc. 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 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,

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Dsp lab with ti c6x dsp and c6713 dsk. OpenStax CNX. Feb 18, 2013 Download for free at http://cnx.org/content/col11264/1.6
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Dsp lab with ti c6x dsp and c6713 dsk' conversation and receive update notifications?

Ask