<< Chapter < Page Chapter >> Page >

For our purposes, the CPL bit is set and so we will use SPH/SP for direct addressing. SP is initialized for you in the core file and should not need to be modified. SP-referenced direct addressing is used by the psh and pop instructions for stack manipulation, as well as by all subroutine calls and returns, which save program addresses on the stack.

Examples:

; Assuming SPH = 0, SP = FF00h, MOV *SP(5) , T2 ; T2 = value at location 00FF05h ; Assuming DPH = 3, DP = 0 MOV @0005h, T2 ; T2 = value at location 030005h ADD *SP(6), AC0 ; AC0 = AC0 + (contents of memory location SPH:SP+6)

Absolute addressing: *abs16(#k16), *(#k23)

This seems to be TI's term for all the forms of direct addressing which it does not call direct addressing! There are three types of adsolute addressing : k16, k23, and I/O. We will only be using the first two. It isrepresented in assembly-instruction syntax-definitions using one of the above abbreviations ( *(lk) addressing is available when the syntax definition says Smem or Lmem ).

K16

k16 absolute addressing uses the operand *abs16(#k16) along with the 7-bit DPH to form a 23-bit address.

Example:

; Assuming DPH = 3 MOV *abs16(#2002h), T2 ; T2 = value at address 032002h

K23

k23 absolute addressing uses the operand *(#k23) as a 23-bit address.

Example:

MOV *(#032002h), T2 ; T2 = value at location 032002h MOV AR1, *(#hold) ; sets (storage location at hold) = AR1

Indirect addressing: smem, lmem, xmem, ymem, cmem

Indirect addressing on the TMS320C55x uses the auxiliary registers AR0 through AR7 and the CDP . They can be used in place of Smem/Lmem or Xmem/Ymem .

Ar indirect: smem/lmem

In Smem/Lmem indirect addressing, only one indirect address is used int he instruction and a number of variations is possible (see the table on page 6-39 of the CPU Reference guide). An asterisk is always used, which usually signifies indirect addressing. Any of the registers AR0 - AR7 may be used, with optional modifications: automatic post-decrement by one, pre- and post-increment by one, post-increment and post-decrement by n ( n being stored in T0, T1, or AR0), and more, including many options for circular addressing (which automatically implements circular buffers) and bit-revered addressing (which is useful for FFTs).

Dual ar indirect: xmem/ymem

Xmem/Ymem indirect addressing is generally used in instructions that need two different indirect addresses,although there are a few instances where an Xmem by itself is specified in order to save bits in the opcode for other options. In Xmem/Ymem indirect addressing, fewer bits are used to encode the option modifiers in the opcode; hence,fewer options are available: post-increment by one, post-decrement by one, and post-increment by AR0 , T0 , or T1 with circular addressing.

ADD Xmem, Ymem, ACx ADD *AR1+, *AR2+, AC0 ; Add values stored in memory locations referenced by ; AR1 and AR2 and store result in AC0. ; Incremement AR1 and AR2 by 1 with or without circular ; addressing depending on circular addressing bit ; for the respective auxiliary registers

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Digital signal processing laboratory (ece 420 55x). OpenStax CNX. Jan 18, 2010 Download for free at http://cnx.org/content/col10397/1.10
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Digital signal processing laboratory (ece 420 55x)' conversation and receive update notifications?

Ask