SLAU367P October 2012 – April 2020 MSP430FR5041 , MSP430FR5043 , MSP430FR50431 , MSP430FR5847 , MSP430FR58471 , MSP430FR5848 , MSP430FR5849 , MSP430FR5857 , MSP430FR5858 , MSP430FR5859 , MSP430FR5867 , MSP430FR58671 , MSP430FR5868 , MSP430FR5869 , MSP430FR5870 , MSP430FR5872 , MSP430FR58721 , MSP430FR5887 , MSP430FR5888 , MSP430FR5889 , MSP430FR58891 , MSP430FR5922 , MSP430FR59221 , MSP430FR5947 , MSP430FR59471 , MSP430FR5948 , MSP430FR5949 , MSP430FR5957 , MSP430FR5958 , MSP430FR5959 , MSP430FR5962 , MSP430FR5964 , MSP430FR5967 , MSP430FR5968 , MSP430FR5969 , MSP430FR5969-SP , MSP430FR59691 , MSP430FR5970 , MSP430FR5972 , MSP430FR59721 , MSP430FR5986 , MSP430FR5987 , MSP430FR5988 , MSP430FR5989 , MSP430FR5989-EP , MSP430FR59891 , MSP430FR5992 , MSP430FR5994 , MSP430FR59941 , MSP430FR6005 , MSP430FR6007 , MSP430FR6035 , MSP430FR6037 , MSP430FR60371 , MSP430FR6041 , MSP430FR6043 , MSP430FR60431 , MSP430FR6045 , MSP430FR6047 , MSP430FR60471 , MSP430FR6820 , MSP430FR6822 , MSP430FR68221 , MSP430FR6870 , MSP430FR6872 , MSP430FR68721 , MSP430FR6877 , MSP430FR6879 , MSP430FR68791 , MSP430FR6887 , MSP430FR6888 , MSP430FR6889 , MSP430FR68891 , MSP430FR6920 , MSP430FR6922 , MSP430FR69221 , MSP430FR6927 , MSP430FR69271 , MSP430FR6928 , MSP430FR6970 , MSP430FR6972 , MSP430FR69721 , MSP430FR6977 , MSP430FR6979 , MSP430FR69791 , MSP430FR6987 , MSP430FR6988 , MSP430FR6989 , MSP430FR69891
POPM.A | Restore n CPU registers (20-bit data) from the stack | ||
POPM.[W] | Restore n CPU registers (16-bit data) from the stack | ||
Syntax | POPM.A #n,Rdst | 1 ≤ n ≤ 16 | |
POPM.W #n,Rdst or POPM #n,Rdst | 1 ≤ n ≤ 16 | ||
Operation | POPM.A: Restore the register values from stack to the specified CPU registers. The SP is incremented by 4 for each register restored from stack. The 20-bit values from stack (2 words per register) are restored to the registers. | ||
POPM.W: Restore the 16-bit register values from stack to the specified CPU registers. The SP is incremented by 2 for each register restored from stack. The 16-bit values from stack (1 word per register) are restored to the CPU registers. | |||
Note : This instruction does not use the extension word. | |||
Description | POPM.A: The CPU registers pushed on the stack are moved to the extended CPU registers, starting with the CPU register (Rdst – n + 1). The SP is incremented by (n × 4) after the operation. | ||
POPM.W: The 16-bit registers pushed on the stack are moved back to the CPU registers, starting with CPU register (Rdst – n + 1). The SP is incremented by (n × 2) after the instruction. The MSBs (Rdst.19:16) of the restored CPU registers are cleared. | |||
Status Bits | Status bits are not affected, except SR is included in the operation. | ||
Mode Bits | OSCOFF, CPUOFF, and GIE are not affected. | ||
Example | Restore the 20-bit registers R9, R10, R11, R12, R13 from the stack |
POPM.A #5,R13 ; Restore R9, R10, R11, R12, R13
Example | Restore the 16-bit registers R9, R10, R11, R12, R13 from the stack. |
POPM.W #5,R13 ; Restore R9, R10, R11, R12, R13