SLAU144K December 2004 – August 2022 MSP430AFE221 , MSP430AFE222 , MSP430AFE223 , MSP430AFE231 , MSP430AFE232 , MSP430AFE233 , MSP430AFE251 , MSP430AFE252 , MSP430AFE253 , MSP430F2001 , MSP430F2002 , MSP430F2003 , MSP430F2011 , MSP430F2012 , MSP430F2013 , MSP430F2101 , MSP430F2111 , MSP430F2112 , MSP430F2121 , MSP430F2122 , MSP430F2131 , MSP430F2132 , MSP430F2132-EP , MSP430F2232 , MSP430F2234 , MSP430F2252 , MSP430F2252-Q1 , MSP430F2254 , MSP430F2272 , MSP430F2272-Q1 , MSP430F2274 , MSP430F2274-EP , MSP430F233 , MSP430F2330 , MSP430F235 , MSP430F2350 , MSP430F2370 , MSP430F2410 , MSP430F2416 , MSP430F2417 , MSP430F2418 , MSP430F2419 , MSP430F247 , MSP430F2471 , MSP430F248 , MSP430F2481 , MSP430F249 , MSP430F2491 , MSP430F2616 , MSP430F2617 , MSP430F2618 , MSP430F2619 , MSP430G2001 , MSP430G2101 , MSP430G2102 , MSP430G2111 , MSP430G2112 , MSP430G2121 , MSP430G2131 , MSP430G2132 , MSP430G2152 , MSP430G2153 , MSP430G2201 , MSP430G2201-Q1 , MSP430G2202 , MSP430G2203 , MSP430G2210 , MSP430G2211 , MSP430G2212 , MSP430G2213 , MSP430G2221 , MSP430G2230 , MSP430G2231 , MSP430G2231-Q1 , MSP430G2232 , MSP430G2233 , MSP430G2252 , MSP430G2253 , MSP430G2302 , MSP430G2303 , MSP430G2312 , MSP430G2313 , MSP430G2332 , MSP430G2333 , MSP430G2352 , MSP430G2353 , MSP430G2402 , MSP430G2403 , MSP430G2412 , MSP430G2413 , MSP430G2432 , MSP430G2433 , MSP430G2444 , MSP430G2452 , MSP430G2453 , MSP430G2513 , MSP430G2533 , MSP430G2544 , MSP430G2553 , MSP430G2744 , MSP430G2755 , MSP430G2855 , MSP430G2955 , MSP430TCH5E
Subroutine
CALL dst
dst → tmp dst is evaluated and stored
SP - 2 → SP
PC → @SP PC updated to TOS
tmp → PC dst saved to PC
A subroutine call is made to an address anywhere in the 64K address space. All addressing modes can be used. The return address (the address of the following instruction) is stored on the stack. The call instruction is a word instruction.
Status bits are not affected.
Examples for all addressing modes are given.
CALL #EXEC ; Call on label EXEC or immediate address (e.g. #0A4h)
; SP-2 -> SP, PC+2 -> @SP, @PC+ -> PC
CALL EXEC ; Call on the address contained in EXEC
; SP-2 -> SP, PC+2 ->SP, X(PC) -> PC
; Indirect address
CALL &EXEC ; Call on the address contained in absolute address
; EXEC
; SP-2 -> SP, PC+2 -> @SP, X(0) -> PC
; Indirect address
CALL R5 ; Call on the address contained in R5
; SP-2 -> SP, PC+2 -> @SP, R5 -> PC
; Indirect R5
CALL @R5 ; Call on the address contained in the word
; pointed to by R5
; SP-2 -> SP, PC+2 -> @SP, @R5 -> PC
; Indirect, indirect R5
CALL @R5+ ; Call on the address contained in the word
; pointed to by R5 and increment pointer in R5.
; The next time S/W flow uses R5 pointer
; it can alter the program execution due to
; access to next address in a table pointed to by R5
; SP-2 -> SP, PC+2 -> @SP, @R5 -> PC
; Indirect, indirect R5 with autoincrement
CALL X(R5) ; Call on the address contained in the address pointed
; to by R5 + X (e.g. table with address starting at X)
; X can be an address or a label
; SP-2 -> SP, PC+2 -> @SP, X(R5) -> PC
; Indirect, indirect R5 + X