MSP430指令系统按指令性质可分为:内核指令和仿真指令,其中内核指令27条,仿真指令24条(带*),共51条指令。
内核指令是CPU解码生成的独一无二的操作码。
仿真指令使指令更容易读和写。但是自己没有操作码,由内核指令生成。
三种核心指令格式:
1、双操作数指令(12条)
2、单操作数指令(7条)
3、JUMP(8条)
MSP430指令系统按功能可分为:
数据传送类指令
数据传送是单片机在工作中最基本也是最重要的一种操作,它包括将操作数从源地址送到目的地址单元中,或目的地址中的操作数进行高低字节交换或者将目的地址操作数更新或清为“0”都属于数据传送指令。
MOV[.W];MOV.Bsrc, dst
*CLR[.W];CLR.Bdst(可由指令MOV #0,DST仿真实现)
*POP[.W];POP.Bdst(可由指令MOV @SP+,DST仿真实现)
PUSH[.W];PUSH.Bsrc
SWPBdst
SXTdst
算术运算类指令
加法运算指令
*ADC[.W];ADC.Bdst(可由指令ADDC #0,DST仿真实现)
ADD[.W];ADD.Bsrc, dst
ADDC[.W];ADDC.Bsrc, dst
*DADC[.W];DADC.Bdst(可由指令DADD #0,DST仿真实现)
DADD[.W];DADD.Bsrc, dst
*INC[.W];INC.Bdst(可由指令ADD #1,DST仿真实现)
*INCD[.W];INCD.Bdst(可由指令ADD #2,DST仿真实现)
减法运算指令
SUB[.W];SUB.B src, dst
SUBC[.W];SUBC.B src, dst
*SBC[.W];SBC.B dst(可由指令SUBC #0,DST仿真实现)
CMP[.W];CMP.B dst
*TST[.W];TST.B dst(可由指令CMP #0,DST仿真实现)
*DEC[.W];DEC.B dst(可由指令SUB #1,DST仿真实现)
*DECD[.W];DECD.B dst(可由指令SUB #2,DST仿真实现)
逻辑运算类指令
AND[.W];AND.B src, dst
BIC[.W];BIC.B src, dst
BIS[.W];BIS.B src, dst
BIT[.W];BIT.B src, dst
XOR[.W];XOR.B src, dst
*RLA[.W];RLA.B dst(可由指令ADD DST,DST仿真实现)
*RLC[.W];RLC.B dst(可由指令ADDC DST,DST仿真实现)
RRA[.W];RRA.B dst
RRC[.W];RRC.B dst
*INV[.W];INV.B dst(可由指令XOR #0FFFFH,DST仿真实现)
位操作指令
*CLRC清除进位位(可由指令BIC #1,SR仿真实现)
*CLRN清除负位(可由指令BIC #4,SR仿真实现)
*CLRZ清除零位(可由指令BIC #2,SR仿真实现)
*SETC置进位位(可由指令BIS #1,SR仿真实现)
*SETN置负位 (可由指令BIS #1,SR仿真实现)
*SETZ置零位 (可由指令BIS #1,SR仿真实现)
*DINT禁止中断(可由指令BIS #1,SR仿真实现)
*EINT使能中断(可由指令BIC #1,SR仿真实现)
跳转和程序控制类指令
*brdst(可由指令MOV DST,PC仿真实现)
CALLdst
JC/JHS标号
JEQ/JZ标号
JGE标号
JL标号
JMP标号
JN标号
JNC/JLO标号
JNE/JNZ标号
*RET从子程序返回(可由指令MOV @SP+,PC仿真实现)
RETI从中断返回
*NOP空操作(可由指令MOV #0,#0仿真实现)