ZHCU032K 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
指向下一条指令的 20 位 PC (PC/R0) 被执行。每条指令使用一个偶数数量字节(2,4,6,或 8 字节),PC 相应递增。指令访问在字边界上执行,PC 与偶数地址对齐。图 4-3显示了 PC。
可使用所有指令和寻址模式来对 PC 进行寻址。几个示例:
MOV.W #LABEL,PC ; Branch to address LABEL (lower 64KB)
MOVA #LABEL,PC ; Branch to address LABEL (1MB memory)
MOV.W LABEL,PC ; Branch to address in word LABEL
; (lower 64KB)
MOV.W @R14,PC ; Branch indirect to address in
; R14 (lower 64KB)
ADDA #4,PC ; Skip two words (1MB memory)
BR 和 CALL 指令将 PC 的高 4 位复位为 0。BR 或者 CALL 指令只能对低 64KB 地址范围内的地址寻址。当分支指令或者调用时,低 64KB 地址范围以外的地址只能使用 BRA 或者 CALLA 指令寻址。此外,根据所使用的寻址模式,任一直接修改 PC的指令进行类似操作。例如,
MOV.W #value,PC
清除 PC 的高四位,因为它是一条 .W 指令。
PC 通过 CALL(或 CALLA)指令并在执行中断服务例程期间自动存储在堆栈中。图 4-4显示了一个 CALLA 指令后,具有返回地址的 PC 的存储。一个 CALL 指令只存储 PC 的位 15:0。
RETA 指令恢复 PC 位 19:0 并且将堆栈指针 (SP) 加 4。RET 指令恢复 PC 位 15:0 并且将 SP 加 2。