新闻中心

MSP430汇编指令

作者: 时间:2016-11-25 来源:网络 收藏
操作数位置及执行过程状 态 位
代 码源操作数目的操作数指令执行过程详述VNZC
ADC[.W]或ADC.Bdst dst+C->dst进位C 加至目的操作数目的操作数以前的内容丢失****
ADD[.W]或ADD.Bsrc,dst src+dst->dst源操作数加至目的操作数源操作数不受影响目的操作数以前的内容丢失****
ADDC[.W]或ADDC.Bsrc,dst src+dst+C->dst源操作数和进位C 加至目的操作数源操作数不受影响目的操作数以前的内容丢失****
AND[.W]或AND.Bsrc,dst src.and.dst->dst源操作数和目的操作数逻辑与结果放入目的操作0***
BIC[.W]或BIC.Bsrc,dst not.src.and.dst->dst求反后的源操作数和目的操作数逻辑与结果放入目的操作数源操作数不变----
BIS[.W]或BIS.Bsrc,dst src.or.dst->dst源操作数和目的操作数逻辑或 结果放入目的操作数源操作数不变----
BIT[.W]或BIT.Bsrc,dst src.and.dst源操作数和目的操作数逻辑与其结果只影响状态位目的操作数和源操作数不变0***
BRdst转移到无条件转移到64K 地址空间的任一地址处可使用所有的源寻址方式转换指令是一个字指令----
CALLdstPC+2->堆栈,dst->PC调用64K 地址空间中任一地址处的子程序可使用所有的寻址方式返回地址(后续指令的地址)储存在堆栈中调用指令是一个字指令----
CLR[.W]或CLR.Bdst清除目的操作数清除目的操作数----
CLRC清除进位位进位位被清零清除进位位指令是一个字指令---0
CLRN清除负位常数#04H 求反后(0FFFBH)和目的操作数逻辑与结果放入目的操作数清除负位指令是一个字指令-0--
CLRZ清除零位常数#02H 求反后(0FFFDH)和目的操作数逻辑与结果放入目的操作数清除负位指令是一个字指令--0-
CMP[.W]或CMP.Bdstdst-src从目的操作数中减去源操作数方法是将源操作数求反再加 1,源操作数和目的操作数不受影响不保存结果只影响状态位****
DADC[.W]或DADC.Bdst dst+C->dst(十进制)进位位C 作为十进制加至目的操作数****
DADD[.W]或DADD.Bsrc,dst src+dst+C->dst(十进制)源操作数和目的操作数被当作4 个带有正符号的二-十进制BCD 数十进制的源操作数和进位C 被加至目的操作数源操作数不受影响目的操作数以前的内容丢失些结果对于非二-十进制数是不确定的****
DEC[.W]或DEC.Bdst dst-1->dst目的操作数减1 以前的内容丢失****
DECD[.W]或DECD.Bdst dst-2->dst目的操作数减2 以前的内容丢失****
DINT禁止中断禁止所有中断----
EINT使能中断使能所有中断,常数08H 与状态寄存器SR 逻辑或其结果放入SR----
INC[.W]或INC.Bdst dst+1->dst目的操作数增1目的操作数加1 以前的内容丢失****
INCD[.W]或INCD.Bdst dst+2->dst目的操作数增2目的操作数加2 以前的内容丢失****
INV[.W]或INV.Bdst目的操作数求反目的操作数取反以前的内容丢失****
JC/JHS标号进位位被置时转移到标号语句测试状态寄存器的进位位C 如果它被置则指令的LSB 中包含的10 位符号偏移加至程序计数器如果C 被复位则执行JUMP 后面的一条指令JC( 有进位/大于等于时跳转 )用于比较无符号数(0~65536)----
JEQ/JZ标号零位被置时转移到标号语句测试状态寄存器的零位Z 如果它被置则指令的LSB 中包含的10 位符号偏移加至程序计数器如果Z 被复位则执行JUMP 后面的一条指令----
JGE标号N.xor.V=0时转移到标号语句测试状态寄存器的负位N 和溢出位V 如果N 和V 均被置位或复位则指令的LSB 中包含的10 位符号偏移加至程序计数器如果其中之一被置位则执行JUMP 后面的一条指令该指令允许比较符号整数----
JL标号N.xor.V=0时转移到标号语句测试状态寄存器的负位N 和溢出位V 如果N 和V 其中之一被置位则指令的LSB 中包含的10 位符号偏移加至程序计数器如果两都均被置位或复位则执行JUMP 后面的一条指令该指令允许比较符号整数----
JMP标号无条件转移到标号语句指令的LSB中包含的10 位符号偏移加至程序计数器----
JN标号负位被置时转移到标号语句测试状态寄存器的负位N 如果N 被置位则指令的LSB 中包含的10 位符号偏移加至程序计数器如果N 被复位则执行JUMP 后面的一条指令该指令允许比较符号整数状态位 不影响状态位----
JNC/JLO标号进位位复位时转移到标号语句测试状态寄存器的进位位C 如果它被复位则指令的LSB 中包含的10 位符号偏移加至程序计数器如果C 被置位则执行JUMP 后面的一条指令JC( 有进位/大于等于时跳转 )用于比较无符号数(0~65536)----
JNE/JNZ标号零位复位时转移到标号语句测试状态寄存器的零位Z 如果它被复位则指令的LSB 中包含的10 位符号偏移加至程序计数器如果Z 被复位则执行JUMP 后面的一条指令----
MOV[.W]或MOV.Bsrc,dst src->dst源操作数被移至目的操作数源操作数不变目的操作数以前的内容丢失----
NOP空操作此指令可用于在检查软件期间仿真指令或用于已确定的等待时间----
POP[.W]或POP.Bdst项目从堆栈弹出,SP+2->SP堆栈指针(TOS)指向的栈区字移至目的操作数随后堆栈指针加2----
PUSH[.W]或PUSH.Bsrc SP–2->SP,src->@SP堆栈指针减2 然后源操作数移至由此指针(TOS)寻址的RAM 字----
RETITOS->SR SP+2->SP,TOS->PC SP+2->SP(1)状态寄存器恢复到中断服务程序开始时的值用TOS 存储器中的值替换SR 中的当前值可做到这一点堆栈指针SP加2
(2)程序计数器恢复到中断服务程序开始时的值这是中断程序流的后续步骤用TOS 存储器中的值替换PC 的当前值可实现这种恢复堆栈指SP 加1----
RETTOS->SR SP+2->SP由CALL 指令压进栈的返回地址移至程序计数器程序在子程序调用后的代码地址处继续执行----
RLA[.W]或RLA.Bdst算术左移目的操作数左移一位MSB成为进位位C LSB 填0 RLA 指令可当作符号乘2 在执行该操作前如果dst 大于等于04000H 且小于0C000H 则产生溢出结果会改变符号****
RLC[.W]或RLC.Bdst带进位位左移目的操作数左移一位进位位C 移入LSB MSB移入进位位C****
RRA[.W]或RRA.Bdst算术右移目的操作数右移一位MSB移入MSB MSB移入MSB – 1 LSB + 1 移入LSB0***
RRC[.W]或RRC.Bdst带进位位右移目的操作数右移一位进位位C 移入MSB LSB移入进位位C****
SBC[.W]或SBC.Bdst从目的操作数减去借位进位C 加到减1 后的目的操作数目的操作数原来的内容丢失****
SETC置进位位进位C 被置这是一个常用的操作---1
SETN置负位-1负位N 被置-1--
SETZ置零位-1负位Z 被置--1-
SUB[.W]或SUB.Bsrc,dst dst+.not.src+1->dst从目的操作数中减去源操作数方法是将源操作数求反再加上常数1 源操作数不受影响目的操作数以前的内容丢失****
SUBC[.W]或SUBC.Bsrc,dst dst+.not.src+C->dst从目的操作数中减去源操作数方法是将源操作数求反再加上进位C 源操作数不受影响目的操作数以前的内容丢失****
SWAPdst交换字节目的操作数的高位字节和低位字节互换----
SXTdst dst位7->位8......位150低位字节的符号扩展到高位字节0***
TST[.W]或TST.Bdst测试目的操作数比较目的操作数和 0 根据结果设置状态位目的操作数不受影响0**1
XOR[.W]或XOR.Bsrc,dst src.xor.dst->dst源操作数和目的操作数异或其结果放放目的操作数源操作数不受影响****
注:
1、以上指令共51条
2、状态位中“*”表示影响“-”表示不影响“0”表示清零“1”表示置位
3、含.B的为单字节操作指令,含[.W]的为双字节操作指令(可省略)
4、src 源操作数,dst目的操作数,TOS堆栈顶部,SR状态寄存器,SP堆栈指针


关键词:MSP430汇编指

评论


技术专区

关闭