9 INSTRUCTION SET

This chapter contains the following sections:

Introduction
Instruction Set
Arithmetic Instructions
Logical Instructions
Bit Manipulation Instructions
Loop Instructions
Move Instructions
Program Control Instructions

9.1 Introduction

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.

9.2 The Instruction Set

This section contains a summary of the DSP56xxx instruction set. The instruction set can be subdivided in instruction classes as follows.

9.2.1 Arithmetic Instructions

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

9.2.2 Logical 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

9.2.3 Bit Manipulation 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

9.2.4 Loop 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

9.2.5 Move 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

9.2.6 Program Control 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


Copyright © 2002 Altium BV