<< Chapter < Page Chapter >> Page >

SP is initialized for you in the core file and should not need to be modified. SP -referenced direct addressing is used by the pshd , pshm , popd , and popm instructions for stack manipulation, as well as by all subroutine calls and returns, which save program addresses onthe stack.

DP -referenced direct addressing is available wherever you see the Smem abbreviation in an assembly syntax description. The advantage of DP -referenced addressing over the *(lk) form described in the next section is that DP -referenced addressing will not add an extra instruction word (and corresponding extra machine cycle). Thedisadvantage is that it is limited to 128 words of contiguous memory, and you have to make sure that DP points to the right 128 words. DP may be changed with the ld instruction as needed.

Examples:

ld 10,A ; sets A = (contents of memory location DP + 10) add 6,B ; sets B = B + (contents of memory location DP + 6)

Make sure you understand that the numbers 10 and 6 above are interpreted as memory addresses, not data values. To get data values, you would need to use a pound sign in front of the numbers.

Absolute addressing: dmad, pmad, *(lk)/smem

This seems to be TI's term for all the forms of direct addressing which it does not call direct addressing! It isrepresented in assembly-instruction syntax-definitions using one of the above abbreviations ( *(lk) addressing is available when the syntax definition says Smem ).

Dmad

dmad (Data Memory ADdress) operands are used by mv xx data move instructions and represent 16-bit memory addresses in datamemory whose contents are used in the instruction.

Example:

f3ptr .word 0 ; reserve one word of storage; initialize to 0 . . . . mvdm f3ptr,AR4 ; set AR4 = memory address of f3ptr

Pmad

pmad (Program Memory ADdress) operands are used by the firs , macd , macp , mvdp , and mvpd instructions, as well as all subroutine calls and branching instructions. They represent 16-bit addresses in programmemory whose contents are used in the instruction, or jumped to in the case of branch instructions. Other thansubroutine calls and branches, the most common use of a pmad is for the firs instruction.

Example:

firs *AR3+,*AR4+,coefs

coefs is a label in the program section of the code, not the data section.

*(lk)

*(lk) addressing is a syntactic oddity. The asterisk symbol generally means that indirect addressing isbeing used (see below), but this is actually direct addressing with a 16-bit data memory address encoded in theinstruction's last word. The reason for the asterisk is that TI does set the "I" bit in the opcode, usually denoting indirect addressing, and this formcan only be used when an Smem is called for in the assembly syntax. Other bits in the low byte of thefirst instruction word tell the processor that the " *(lk) exception" is to be used, and to fetch the memory address in the next word (see the MOD bits onpage 5-10 of the CPU and Peripherals reference). You can easily recognize this addressing mode in .lst files because the low byte of the first instruction word always equals F8h .

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Ece 320 - spring 2003. OpenStax CNX. Jan 22, 2004 Download for free at http://cnx.org/content/col10096/1.2
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Ece 320 - spring 2003' conversation and receive update notifications?

Ask