This chapter contains the following sections:
Introduction
Instruction Set
Arithmetic Instructions
Logical Instructions
Bit Manipulation Instructions
Loop Instructions
Move Instructions
Program Control Instructions
The as56 DSP5600x assembler accepts all the assembly language instruction mnemonics defined for the DSP5600x . The mnemonics are listed in the tables below.
For a complete list of all DSP5600x instructions with mnemonics, operands, opcode format and states refer to Motorola's DSP56000 Digital Signal Processor Family Manual. For the DSP563xx refer to Motorola's DSP56300 24-Bit Digital Signal Processor Family Manual. For the DSP566xx refer to Motorola's DSP56600 Digital Signal Processor Family Manual. The addressing modes used with the instructions and the meaning and use of the Condition Codes are identical to the corresponding Motorola features.
Some instructions in the tables below are only available in one of the DSP56xxx families. The other instructions are available in both the DSP5600x, DSP563xx and the DSP566xx. However, some instructions may have a different implementation. Refer to the corresponding Digital Signal Processor Family Manual for details.
This section contains a summary of the DSP56xxx instruction set. The instruction set can be subdivided in instruction classes as follows.
Mnemonic | Operation |
abs | Absolute Value |
adc | Add Long with Carry |
add | Add |
addl | Shift Left and Add |
addr | Shift Right and Add |
asl | Arithmetic Shift Left |
asr | Arithmetic Shift Right |
clr | Clear an Operand |
cmp | Compare |
cmpm | Compare Magnitude |
cmpu | Compare Unsigned (DSP563xx, DSP566xx only) |
dec | Decrement |
div | Divide Iteration |
dmacss | Double (Multi) precision oriented MAC (signed x signed) (DSP563xx, DSP566xx only) |
dmacsu | Double (Multi) precision oriented MAC (signed x unsigned) (DSP563xx, DSP566xx only) |
dmacuu | Double (Multi) precision oriented MAC (unsigned x unsigned) (DSP563xx, DSP566xx only) |
inc | Increment by One |
mac | Signed Multiply-Accumulate |
maci | Signed Multiply-Accumulate (immediate operand) (DSP563xx, DSP566xx only) |
macr | Signed Multiply-Accumulate and Round |
macri | Signed Multiply-Accumulate and Round (immediate operand) (DSP563xx, DSP566xx only) |
macsu | Mixed mode Multiply-Accumulate (signed x unsigned) (DSP563xx, DSP566xx only) |
macuu | Mixed mode Multiply-Accumulate (unsigned x unsigned) (DSP563xx, DSP566xx only) |
max | Transfer By Signed Value (DSP563xx, DSP566xx only) |
maxm | Transfer By Magnitude (DSP563xx, DSP566xx only) |
mpy | Signed Multiply |
mpyi |
Signed Multiply (immediate operand) (DSP563xx, DSP566xx only) |
mpyr | Signed Multiply and Round |
mpyri | Signed Multiply and Round (immediate operand) (DSP563xx, DSP566xx only) |
mpysu | Mixed mode Multiply (DSP563xx, DSP566xx only) |
neg | Negate Accumulator |
norm | Normalize (DSP563xx, DSP566xx only) |
normf | Fast Accumulator Normalize (DSP563xx, DSP566xx only) |
rnd | Round |
sbc | Subtract Long with Carry |
sub | Subtract |
subl | Shift Left and Subtract |
subr | Shift Right and Subtract |
tcc | Transfer Conditionally |
tfr | Transfer Data ALU Register |
tst | Test an Operand |
Table 9-1: Arithmetic instructions
Mnemonic | Operation |
and | Logical ANDf |
andi | AND Immediate to Control Register |
clb | Count Leading Bits (DSP563xx, DSP566xx only) |
eor | Logical Exclusive OR |
extract | Extract Bit Field (DSP563xx, DSP566xx only) |
extractu | Extract Unsigned Bit Field (DSP563xx, DSP566xx only) |
insert | Insert Bit Field (DSP563xx, DSP566xx only) |
lsl | Logical Shift Left |
lsr | Logical Shift Right |
merge | Merge Two Half Words (DSP563xx, DSP566xx only) |
not | Logical Complement |
or | Logical Inclusive OR |
ori | OR Immediate to Control Register |
rol | Rotate Left |
ror | Rotate Right |
Table 9-2: Logical instructions
Mnemonic | Operation |
bchg | Bit Test and Change |
bclr | Bit Test and Clear |
bset | Bit Test and Set |
btst | Bit Test on Memory and Registers |
Table 9-3: Bit manipulation instructions
Mnemonic | Operation |
brkcc | Conditionally Exit from Hardware Loop (DSP563xx, DSP566xx only) |
do | Start Hardware Loop |
dor | Start Hardware Loop to PC-Related End-Of-Loop Location (DSP563xx only) |
do forever | Start Forever Hardware Loop (DSP563xx, DSP566xx only) |
dor forever | Start Forever Hardware Loop to PC-Related End-Of-Loop Location (DSP563xx only) |
enddo | Exit from Hardware Loop |
Table 9-4: Loop instructions
Mnemonic | Operation |
lea | Load Effective Address (DSP563xx only) |
lra | Load PC-Relative Address (DSP563xx, DSP566xx only) |
lua | Load Updated Address |
move | Move Data Register |
movec | Move Control Register |
movem | Move Program Memory |
movep | Move Peripheral Data |
vsl | Viterbi Shift Left (DSP563xx, DSP566xx only) |
Table 9-5: Move instructions
Mnemonic | Operation |
bcc | Branch Conditionally (DSP563xx, DSP566xx only) |
bra | Branch (DSP563xx, DSP566xx only) |
brclr | Branch if Bit Clear (DSP563xx only) |
brset | Branch if Bit Set (DSP563xx only) |
bscc |
Branch to Subroutine Conditionally (DSP563xx, DSP566xx only) |
bsr |
Branch to Subroutine (PC relative) (DSP563xx, DSP566xx only) |
bsclr | Branch to Subroutine if Bit Clear (DSP563xx only) |
bsset | Branch to Subroutine if Bit Set (DSP563xx only) |
debug | Enter Debug Mode |
debugcc | Enter Debug Mode Conditionally |
ifcc | Execute Conditionally (DSP563xx, DSP566xx only) |
ifcc.U | Execute Conditionally and Update CCR (DSP563xx, DSP566xx only) |
illegal | Illegal Instruction |
jcc | Jump Conditionally |
jmp | Jump |
jclr | Jump if Bit Clear (DSP563xx, DSP566xx only) |
jset | Jump if Bit Set (DSP563xx, DSP566xx only) |
jscc | Jump to Subroutine Conditionally |
jsr | Jump to Subroutine |
jsclr | Jump to Subroutine if Bit Clear |
jsset | Jump to Subroutine if Bit Set |
nop | No Operation |
plock | Lock Program Cache Sector (DSP563xx only) |
punlock | Unlock Program Cache Sector (DSP563xx only) |
punlockr |
Unlock PC-Related Program Cache Sector (DSP563xx only) |
pfree |
Unlock all Program Cache Locked Sectors (DSP563xx only) |
pflush | Reset Program Cache State (DSP563xx only) |
pflushun | Reset Program Cache State to all Unlocked Sectors (DSP563xx only) |
rep | Repeat Next Instruction |
reset | Reset On-Chip Peripheral Devices |
rti | Return from Interrupt |
rts | Return from Subroutine |
stop | Stop Processing (Low-Power Standby) |
swi | Software Interrupt (DSP5600x only) |
trapcc | Trap Conditionally (DSP563xx, DSP566xx only) |
trap | Trap Always (DSP563xx, DSP566xx only) |
wait | Wait for Interrupt (Low-Power Standby) |
Table 9-6: Program control instructions