新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Thumb指令集之:Thumb數(shù)據(jù)處理指令

Thumb指令集之:Thumb數(shù)據(jù)處理指令

作者: 時(shí)間:2013-09-30 來源:網(wǎng)絡(luò) 收藏

本文引用地址:http://m.butianyuan.cn/article/257041.htm

11.4.22MOV(1)

(1)編碼格式

數(shù)據(jù)傳送指令MOV(1)的編碼格式如圖11.28所示。

圖11.28MOV(1)指令的編碼格式

(2)指令的語法格式

MOVRd>,#immed_8>

①Rd>

目的寄存器。存放指令的執(zhí)行結(jié)果。

②immed_8>

8位立即數(shù)。指示要移入寄存器的數(shù)據(jù)。

(3)指令操作的偽代碼

Rd=immed_8

NFlag=Rd[31]

ZFlag=ifRd==0then1else0

CFlag=unaffected

VFlag=unaffected

(4)對(duì)應(yīng)的指令

MOVSRd>,#immed_8>

11.4.23MOV(2)

(1)編碼格式

數(shù)據(jù)傳送指令MOV(2)的編碼格式如圖11.29所示。

圖11.29MOV(2)指令的編碼格式

此種形式的用于數(shù)據(jù)在r0~r7低寄存器間傳送,并根據(jù)的指令的執(zhí)行結(jié)果更新程序狀態(tài)寄存器的標(biāo)志位。

注意

從指令的編碼形式可以看出,MOV(2)指令被作為ADDRd,Rn,#0指令來編譯。

(2)指令的語法格式

MOVRd>,Rn>

①Rd>

目的寄存器。存放指令的執(zhí)行結(jié)果。

②Rn>

源寄存器。用于存放被傳送的數(shù)據(jù)。

(3)指令操作的偽代碼

Rd=Rn

NFlag=Rd[31]

ZFlag=ifRd==0then1else0

CFlag=0

VFlag=0

(4)對(duì)應(yīng)的指令

ADDRd>,Rn>,#0

11.4.24MOV(3)

(1)編碼格式

數(shù)據(jù)傳送指令MOV(3)的編碼格式如圖11.30所示。

圖11.30MOV(3)指令的編碼格式

此種形式的用于在r8~r14和PC寄存器的高16位內(nèi)傳送數(shù)據(jù)。與MOV(2)指令不同,該指令不影響程序狀態(tài)寄存器。

(2)指令的語法格式

MOVRd>,Rm>

①Rd>

目的寄存器??梢允莚0~r15中的任意寄存器,用于存放指令的執(zhí)行結(jié)果。

②Rm>

源寄存器??梢允莚0~r15中的任意寄存器,用于存放被傳輸?shù)臄?shù)據(jù)。

(3)指令操作的偽代碼

Rd=Rm

(4)指令的使用

可以使用此種形式的MOVPC,r14用于子程序的返回(返回的程序是Thumb子程序)。它和BX指令的區(qū)別在于BX指令可以用于和Thumb程序間的相互調(diào)用。

注意

如果目的寄存器Rd>和源寄存器Rm>同時(shí)為r0~r7低寄存器,則指令的執(zhí)行結(jié)果不可預(yù)知。

(5)對(duì)應(yīng)的ARM指令

MOVRd>,Rm>



評(píng)論


相關(guān)推薦

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

關(guān)閉