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
除了 MSP430 和 MSP430X 指令,仿真指令是使代码更容易进行写入和读取,但是本身不具有运算代码的指令。作为替代,它们自动被具有一个核心指令的汇编程序所取代。使用仿真指令并不会产生代码或者性能损失。表 4-7中列出了仿真指令。
指令 | 说明 | 仿真 | 状态位 (1) | |||
---|---|---|---|---|---|---|
V | N | Z | C | |||
ADC(.B) dst | 将进位增加至 dst | ADDC(.B) #0,dst | * | * | * | * |
BR dst | 分支指令间接 dst | MOV dst,PC | – | - | - | – |
CLR(.B) dst | 清零 dst | MOV(.B) #0,dst | – | - | - | – |
CLRC | 清零进位位 | BIC #1,SR | – | - | – | 0 |
CLRN | 清零负位 | BIC #4,SR | - | 0 | - | – |
CLRZ | 清零零位 | BIC #2,SR | – | – | 0 | - |
DADC(.B) dst | 用十进制将进位增加至 dst | DADD(.B) #0,dst | * | * | * | * |
DEC(.B) dst | dst 减 1 | SUB(.B) #1,dst | * | * | * | * |
DECD(.B) dst | dst 减 2 | SUB(.B) #2,dst | * | * | * | * |
DINT | 禁用中断 | BIC #8,SR | – | - | - | – |
EINT | 启用中断 | BIS #8,SR | – | - | - | – |
INC(.B) dst | dst 增 1 | ADD(.B) #1,dst | * | * | * | * |
INCD(.B) dst | dst 增 2 | ADD(.B) #2,dst | * | * | * | * |
INV(.B) dst | 反转 dst | XOR(.B) #–1,dst | * | * | * | * |
NOP | 无操作 | MOV R3,R3 | – | - | - | – |
POP dst | 从堆栈中弹出操作数 | MOV @SP+,dst | – | - | - | – |
RET | 从子例程返回 | MOV @SP+,PC | – | - | - | – |
RLA(.B) dst | 算术左移 dst | ADD(.B) dst,dst | * | * | * | * |
RLC(.B) dst | 通过进位逻辑左移 dst | ADDC(.B) dst,dst | * | * | * | * |
SBC(.B) dst | 从 dst 中减去进位 | SUBC(.B) #0,dst | * | * | * | * |
SETC | 将进位位置 1 | BIS #1,SR | – | - | - | 1 |
SETN | 将负位置 1 | BIS #4,SR | - | 1 | - | – |
SETZ | 将零位置 1 | BIS #2,SR | – | - | 1 | - |
TST(.B) dst | 测试 dst(与 0 相比较) | CMP(.B) #0,dst | 0 | * | * | 1 |