新聞中心

MSP430匯編指令

作者: 時間:2016-11-25 來源:網(wǎng)絡(luò) 收藏
操作數(shù)位置及執(zhí)行過程 狀 態(tài) 位
代 碼 源操作數(shù)目的操作數(shù) 指令執(zhí)行過程詳述 VNZC
ADC[.W]或ADC.B dst dst+C->dst 進(jìn)位C 加至目的操作數(shù)目的操作數(shù)以前的內(nèi)容丟失 ****
ADD[.W]或ADD.B src,dst src+dst->dst 源操作數(shù)加至目的操作數(shù)源操作數(shù)不受影響目的操作數(shù)以前的內(nèi)容丟失 ****
ADDC[.W]或ADDC.B src,dst src+dst+C->dst 源操作數(shù)和進(jìn)位C 加至目的操作數(shù)源操作數(shù)不受影響目的操作數(shù)以前的內(nèi)容丟失 ****
AND[.W]或AND.B src,dst src.and.dst->dst 源操作數(shù)和目的操作數(shù)邏輯與結(jié)果放入目的操作 0***
BIC[.W]或BIC.B src,dst not.src.and.dst->dst 求反后的源操作數(shù)和目的操作數(shù)邏輯與結(jié)果放入目的操作數(shù)源操作數(shù)不變 ----
BIS[.W]或BIS.B src,dst src.or.dst->dst 源操作數(shù)和目的操作數(shù)邏輯或 結(jié)果放入目的操作數(shù)源操作數(shù)不變 ----
BIT[.W]或BIT.B src,dst src.and.dst 源操作數(shù)和目的操作數(shù)邏輯與其結(jié)果只影響狀態(tài)位目的操作數(shù)和源操作數(shù)不變 0***
BR dst轉(zhuǎn)移到 無條件轉(zhuǎn)移到64K 地址空間的任一地址處可使用所有的源尋址方式轉(zhuǎn)換指令是一個字指令 ----
CALL dstPC+2->堆棧,dst->PC 調(diào)用64K 地址空間中任一地址處的子程序可使用所有的尋址方式返回地址(后續(xù)指令的地址)儲存在堆棧中調(diào)用指令是一個字指令 ----
CLR[.W]或CLR.B dst清除目的操作數(shù) 清除目的操作數(shù) ----
CLRC 清除進(jìn)位位 進(jìn)位位被清零清除進(jìn)位位指令是一個字指令 ---0
CLRN 清除負(fù)位 常數(shù)#04H 求反后(0FFFBH)和目的操作數(shù)邏輯與結(jié)果放入目的操作數(shù)清除負(fù)位指令是一個字指令 -0--
CLRZ 清除零位 常數(shù)#02H 求反后(0FFFDH)和目的操作數(shù)邏輯與結(jié)果放入目的操作數(shù)清除負(fù)位指令是一個字指令 --0-
CMP[.W]或CMP.B dstdst-src 從目的操作數(shù)中減去源操作數(shù)方法是將源操作數(shù)求反再加 1,源操作數(shù)和目的操作數(shù)不受影響不保存結(jié)果只影響狀態(tài)位 ****
DADC[.W]或DADC.B dst dst+C->dst(十進(jìn)制) 進(jìn)位位C 作為十進(jìn)制加至目的操作數(shù) ****
DADD[.W]或DADD.B src,dst src+dst+C->dst(十進(jìn)制) 源操作數(shù)和目的操作數(shù)被當(dāng)作4 個帶有正符號的二-十進(jìn)制BCD 數(shù)十進(jìn)制的源操作數(shù)和進(jìn)位C 被加至目的操作數(shù)源操作數(shù)不受影響目的操作數(shù)以前的內(nèi)容丟失些結(jié)果對于非二-十進(jìn)制數(shù)是不確定的 ****
DEC[.W]或DEC.B dst dst-1->dst 目的操作數(shù)減1 以前的內(nèi)容丟失 ****
DECD[.W]或DECD.B dst dst-2->dst 目的操作數(shù)減2 以前的內(nèi)容丟失 ****
DINT 禁止中斷 禁止所有中斷 ----
EINT 使能中斷 使能所有中斷,常數(shù)08H 與狀態(tài)寄存器SR 邏輯或其結(jié)果放入SR ----
INC[.W]或INC.B dst dst+1->dst目的操作數(shù)增1 目的操作數(shù)加1 以前的內(nèi)容丟失 ****
INCD[.W]或INCD.B dst dst+2->dst目的操作數(shù)增2 目的操作數(shù)加2 以前的內(nèi)容丟失 ****
INV[.W]或INV.B dst目的操作數(shù)求反 目的操作數(shù)取反以前的內(nèi)容丟失 ****
JC/JHS 標(biāo)號進(jìn)位位被置時轉(zhuǎn)移到標(biāo)號語句 測試狀態(tài)寄存器的進(jìn)位位C 如果它被置則指令的LSB 中包含的10 位符號偏移加至程序計數(shù)器如果C 被復(fù)位則執(zhí)行JUMP 后面的一條指令JC( 有進(jìn)位/大于等于時跳轉(zhuǎn) )用于比較無符號數(shù)(0~65536) ----
JEQ/JZ 標(biāo)號零位被置時轉(zhuǎn)移到標(biāo)號語句 測試狀態(tài)寄存器的零位Z 如果它被置則指令的LSB 中包含的10 位符號偏移加至程序計數(shù)器如果Z 被復(fù)位則執(zhí)行JUMP 后面的一條指令 ----
JGE 標(biāo)號N.xor.V=0時轉(zhuǎn)移到標(biāo)號語句 測試狀態(tài)寄存器的負(fù)位N 和溢出位V 如果N 和V 均被置位或復(fù)位則指令的LSB 中包含的10 位符號偏移加至程序計數(shù)器如果其中之一被置位則執(zhí)行JUMP 后面的一條指令該指令允許比較符號整數(shù) ----
JL 標(biāo)號N.xor.V=0時轉(zhuǎn)移到標(biāo)號語句 測試狀態(tài)寄存器的負(fù)位N 和溢出位V 如果N 和V 其中之一被置位則指令的LSB 中包含的10 位符號偏移加至程序計數(shù)器如果兩都均被置位或復(fù)位則執(zhí)行JUMP 后面的一條指令該指令允許比較符號整數(shù) ----
JMP 標(biāo)號無條件轉(zhuǎn)移到標(biāo)號語句 指令的LSB中包含的10 位符號偏移加至程序計數(shù)器 ----
JN 標(biāo)號負(fù)位被置時轉(zhuǎn)移到標(biāo)號語句 測試狀態(tài)寄存器的負(fù)位N 如果N 被置位則指令的LSB 中包含的10 位符號偏移加至程序計數(shù)器如果N 被復(fù)位則執(zhí)行JUMP 后面的一條指令該指令允許比較符號整數(shù)狀態(tài)位 不影響狀態(tài)位 ----
JNC/JLO 標(biāo)號進(jìn)位位復(fù)位時轉(zhuǎn)移到標(biāo)號語句 測試狀態(tài)寄存器的進(jìn)位位C 如果它被復(fù)位則指令的LSB 中包含的10 位符號偏移加至程序計數(shù)器如果C 被置位則執(zhí)行JUMP 后面的一條指令JC( 有進(jìn)位/大于等于時跳轉(zhuǎn) )用于比較無符號數(shù)(0~65536) ----
JNE/JNZ 標(biāo)號零位復(fù)位時轉(zhuǎn)移到標(biāo)號語句 測試狀態(tài)寄存器的零位Z 如果它被復(fù)位則指令的LSB 中包含的10 位符號偏移加至程序計數(shù)器如果Z 被復(fù)位則執(zhí)行JUMP 后面的一條指令 ----
MOV[.W]或MOV.B src,dst src->dst 源操作數(shù)被移至目的操作數(shù)源操作數(shù)不變目的操作數(shù)以前的內(nèi)容丟失 ----
NOP 空操作 此指令可用于在檢查軟件期間仿真指令或用于已確定的等待時間 ----
POP[.W]或POP.B dst項目從堆棧彈出,SP+2->SP 堆棧指針(TOS)指向的棧區(qū)字移至目的操作數(shù)隨后堆棧指針加2 ----
PUSH[.W]或PUSH.B src SP–2->SP,src->@SP 堆棧指針減2 然后源操作數(shù)移至由此指針(TOS)尋址的RAM 字 ----
RETI TOS->SR SP+2->SP,TOS->PC SP+2->SP (1)狀態(tài)寄存器恢復(fù)到中斷服務(wù)程序開始時的值用TOS 存儲器中的值替換SR 中的當(dāng)前值可做到這一點堆棧指針SP加2
(2)程序計數(shù)器恢復(fù)到中斷服務(wù)程序開始時的值這是中斷程序流的后續(xù)步驟用TOS 存儲器中的值替換PC 的當(dāng)前值可實現(xiàn)這種恢復(fù)堆棧指SP 加1 ----
RET TOS->SR SP+2->SP 由CALL 指令壓進(jìn)棧的返回地址移至程序計數(shù)器程序在子程序調(diào)用后的代碼地址處繼續(xù)執(zhí)行 ----
RLA[.W]或RLA.B dst算術(shù)左移 目的操作數(shù)左移一位MSB成為進(jìn)位位C LSB 填0 RLA 指令可當(dāng)作符號乘2 在執(zhí)行該操作前如果dst 大于等于04000H 且小于0C000H 則產(chǎn)生溢出結(jié)果會改變符號 ****
RLC[.W]或RLC.B dst帶進(jìn)位位左移 目的操作數(shù)左移一位進(jìn)位位C 移入LSB MSB移入進(jìn)位位C ****
RRA[.W]或RRA.B dst算術(shù)右移 目的操作數(shù)右移一位MSB移入MSB MSB移入MSB – 1 LSB + 1 移入LSB 0***
RRC[.W]或RRC.B dst帶進(jìn)位位右移 目的操作數(shù)右移一位進(jìn)位位C 移入MSB LSB移入進(jìn)位位C ****
SBC[.W]或SBC.B dst從目的操作數(shù)減去借位 進(jìn)位C 加到減1 后的目的操作數(shù)目的操作數(shù)原來的內(nèi)容丟失 ****
SETC 置進(jìn)位位 進(jìn)位C 被置這是一個常用的操作 ---1
SETN 置負(fù)位-1 負(fù)位N 被置 -1--
SETZ 置零位-1 負(fù)位Z 被置 --1-
SUB[.W]或SUB.B src,dst dst+.not.src+1->dst 從目的操作數(shù)中減去源操作數(shù)方法是將源操作數(shù)求反再加上常數(shù)1 源操作數(shù)不受影響目的操作數(shù)以前的內(nèi)容丟失 ****
SUBC[.W]或SUBC.B src,dst dst+.not.src+C->dst 從目的操作數(shù)中減去源操作數(shù)方法是將源操作數(shù)求反再加上進(jìn)位C 源操作數(shù)不受影響目的操作數(shù)以前的內(nèi)容丟失 ****
SWAP dst交換字節(jié) 目的操作數(shù)的高位字節(jié)和低位字節(jié)互換 ----
SXT dst dst位7->位8......位150 低位字節(jié)的符號擴(kuò)展到高位字節(jié) 0***
TST[.W]或TST.B dst測試目的操作數(shù) 比較目的操作數(shù)和 0 根據(jù)結(jié)果設(shè)置狀態(tài)位目的操作數(shù)不受影響 0**1
XOR[.W]或XOR.B src,dst src.xor.dst->dst 源操作數(shù)和目的操作數(shù)異或其結(jié)果放放目的操作數(shù)源操作數(shù)不受影響 ****
注:
1、以上指令共51條
2、狀態(tài)位中“*”表示影響“-”表示不影響“0”表示清零“1”表示置位
3、含.B的為單字節(jié)操作指令,含[.W]的為雙字節(jié)操作指令(可省略)
4、src 源操作數(shù),dst目的操作數(shù),TOS堆棧頂部,SR狀態(tài)寄存器,SP堆棧指針


關(guān)鍵詞: MSP430匯編指

評論


技術(shù)專區(qū)

關(guān)閉