當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]數(shù)據(jù)處理指令可分為數(shù)據(jù)傳送指令、算術(shù)邏輯運算指令和比較指令等。數(shù)據(jù)傳送指令用于在寄存器和存儲器之間進行數(shù)據(jù)的雙向傳輸。 算術(shù)邏輯運算指令完成常用的算術(shù)與邏輯的運算,該類指令不但將運算結(jié)果保存在目的寄存器

數(shù)據(jù)處理指令可分為數(shù)據(jù)傳送指令、算術(shù)邏輯運算指令和比較指令等。

數(shù)據(jù)傳送指令用于在寄存器和存儲器之間進行數(shù)據(jù)的雙向傳輸。 算術(shù)邏輯運算指令完成常用的算術(shù)與邏輯的運算,該類指令不但將運算結(jié)果保存在目的寄存器中,同時更新CPSR 中的相應(yīng)條件標(biāo)志位。 比較指令不保存運算結(jié)果,只更新CPSR 中相應(yīng)的條件標(biāo)志位。

數(shù)據(jù)處理指令包括:

— MOV 數(shù)據(jù)傳送指令

— MVN 數(shù)據(jù)取反傳送指令

— CMP 比較指令

— CMN 反值比較指令

— TST 位測試指令

— TEQ 相等測試指令

— ADD 加法指令

— ADC 帶進位加法指令

— SUB 減法指令

— SBC 帶借位減法指令

— RSB 逆向減法指令

— RSC 帶借位的逆向減法指令

— AND 邏輯與指令

— ORR 邏輯或指令

— EOR 邏輯異或指令

— BIC 位清除指令

1、 MOV 指令

MOV 指令的格式為:

MOV{條件}{S} 目的寄存器,源操作數(shù)

MOV 指令可完成從另一個寄存器、被移位的寄存器或?qū)⒁粋€立即數(shù)加載到目的寄存器。其中S選項決定指令的操作是否影響CPSR 中條件標(biāo)志位的值,當(dāng)沒有S 時指令不更新CPSR 中條件標(biāo)志位的值。

指令示例:

MOV R1 , R0 ;將寄存器 R0 的值傳送到寄存器 R1

MOV PC , R14 ;將寄存器 R14 的值傳送到 PC ,常用于子程序返回

MOV R1 , R0 , LSL # 3 ;將寄存器 R0 的值左移 3 位后傳送到 R1

2、 MVN 指令

MVN 指令的格式為:

MVN{條件}{S} 目的寄存器,源操作數(shù)

MVN 指令可完成從另一個寄存器、被移位的寄存器、或?qū)⒁粋€立即數(shù)加載到目的寄存器。與MOV 指令不同之處是在傳送之前按位被取反了,即把一個被取反的值傳送到目的寄存器中。其中S 決定指令的操作是否影響CPSR 中條件標(biāo)志位的值,當(dāng)沒有S 時指令不更新CPSR 中條件標(biāo)志位的值。

指令示例:

MVN R0 ,# 0 ;將立即數(shù) 0 取反傳送到寄存器 R0 中,完成后 R0=-1

3、 CMP 指令

CMP 指令的格式為:

CMP{條件} 操作數(shù)1,操作數(shù)2

CMP 指令用于把一個寄存器的內(nèi)容和另一個寄存器的內(nèi)容或立即數(shù)進行比較,同時更新CPSR 中條件標(biāo)志位的值。該指令進行一次減法運算,但不存儲結(jié)果,只更改條件標(biāo)志位。標(biāo)志位表示的是操作數(shù)1 與操作數(shù)2 的關(guān)系(大、小、相等),例如,當(dāng)操作數(shù)1 大于操作操作數(shù)2,則此后的有GT后綴的指令將可以執(zhí)行。

指令示例:

CMP R1 , R0 ;將寄存器 R1 的值與寄存器 R0 的值相減,并根據(jù)結(jié)果設(shè)置 CPSR 的標(biāo)志位

CMP R1 ,# 100 ;將寄存器 R1 的值與立即數(shù) 100 相減,并根據(jù)結(jié)果設(shè)置 CPSR 的標(biāo)志位

4、 CMN 指令

CMN 指令的格式為:

CMN{條件} 操作數(shù)1,操作數(shù)2

CMN 指令用于 把一個寄存器的內(nèi)容和另一個寄存器的內(nèi)容或立即數(shù)取反后進行比較,同時更新CPSR 中條件標(biāo)志位的值。該指令實際完成操作數(shù)1 和操作數(shù)2 相加,并根據(jù)結(jié)果更改條件標(biāo)志位。

指令示例:

CMN R1 , R0 ;將寄存器 R1 的值與寄存器 R0 的值相加,并根據(jù)結(jié)果設(shè)置 CPSR 的標(biāo)志位

CMN R1 ,# 100 ;將寄存器 R1 的值與立即數(shù) 100 相加,并根據(jù)結(jié)果設(shè)置 CPSR 的標(biāo)志位

5、 TST 指令

TST 指令的格式為:

TST{條件} 操作數(shù)1,操作數(shù)2

TST 指令用于 把一個寄存器的內(nèi)容和另一個寄存器的內(nèi)容或立即數(shù)進行按位的與運算,并根據(jù)運算結(jié)果更新CPSR 中條件標(biāo)志位的值。操作數(shù)1 是要測試的數(shù)據(jù),而操作數(shù)2 是一個位掩碼,該指令一般用來檢測是否設(shè)置了特定的位。

指令示例:

TST R1 ,#% 1 ;用于測試在寄存器 R1 中是否設(shè)置了最低位(%表示二進制數(shù))

TST R1 ,# 0xffe ;將寄存器 R1 的值與立即數(shù) 0xffe 按位與,并根據(jù)結(jié)果設(shè)置 CPSR 的標(biāo)志位

6、 TEQ 指令

TEQ 指令的格式為:

TEQ{條件} 操作數(shù)1,操作數(shù)2

TEQ 指令用于 把一個寄存器的內(nèi)容和另一個寄存器的內(nèi)容或立即數(shù)進行按位的異或運算,并根據(jù)運算結(jié)果更新CPSR 中條件標(biāo)志位的值。該指令通常用于比較操作數(shù)1 和操作數(shù)2 是否相等。

指令示例:

TEQ R1 , R2 ;將寄存器 R1 的值與寄存器 R2 的值按位異或,并根據(jù)結(jié)果設(shè)置 CPSR 的標(biāo)        志位

7、 ADD 指令

ADD 指令的格式為:

ADD{條件}{S} 目的寄存器,操作數(shù)1,操作數(shù)2

ADD 指令用于 把兩個操作數(shù)相加,并將結(jié)果存放到目的寄存器中。操作數(shù) 1 應(yīng)是一個寄存器,操作數(shù) 2 可以是一個寄存器,被移位的寄存器,或一個立即數(shù)。

指令示例:

ADD R0 , R1 , R2 ; R0 = R1 + R2

ADD R0 , R1 , #256 ; R0 = R1 + 256

ADD R0 , R2 , R3 , LSL#1 ; R0 = R2 + (R3 << 1)

8、 ADC 指令

ADC 指令的格式為:

ADC{條件}{S} 目的寄存器,操作數(shù)1,操作數(shù)2

ADC 指令用于 把兩個操作數(shù)相加,再加上CPSR 中的C 條件標(biāo)志位的值,并將結(jié)果存放到目的寄存器中。它使用一個進位標(biāo)志位,這樣就可以做比32 位大的數(shù)的加法,注意不要忘記設(shè)置S 后綴來更改進位標(biāo)志。操作數(shù)1 應(yīng)是一個寄存器,操作數(shù)2 可以是一個寄存器,被移位的寄存器,或一個立即數(shù)。

以下指令序列完成兩個128 位數(shù)的加法,第一個數(shù)由高到低存放在寄存器R7~R4,第二個數(shù)由高到低存放在寄存器R11~R8,運算結(jié)果由高到低存放在寄存器R3~R0:

ADDS R0 , R4 , R8 ; 加低端的字

ADCS R1 , R5 , R9 ; 加第二個字,帶進位

ADCS R2 , R6 , R10 ; 加第三個字,帶進位

ADC R3 , R7 , R11 ; 加第四個字,帶進位

9、 SUB 指令

SUB 指令的格式為:

SUB{條件}{S} 目的寄存器,操作數(shù)1,操作數(shù)2

SUB 指令用于 把操作數(shù) 1 減去操作數(shù) 2 ,并將結(jié)果存放到目的寄存器中。操作數(shù) 1 應(yīng)是一個寄存器,操作數(shù) 2 可以是一個寄存器,被移位的寄存器,或一個立即數(shù)。該指令可用于有符號數(shù)或無符號數(shù)的減法運算。

指令示例:

SUB R0 , R1 , R2 ; R0 = R1 - R2

SUB R0 , R1 , #256 ; R0 = R1 - 256

SUB R0 , R2 , R3 , LSL#1 ; R0 = R2 - (R3 << 1)

10、SBC 指令

SBC 指令的格式為:

SBC{條件}{S} 目的寄存器,操作數(shù)1,操作數(shù)2

SBC 指令用于 把操作數(shù) 1 減去操作數(shù) 2 ,再減去CPSR 中的C 條件標(biāo)志位的反碼,并將結(jié)果存放到目的寄存器中。操作數(shù) 1 應(yīng)是一個寄存器,操作數(shù) 2 可以是一個寄存器,被移位的寄存器,或一個立即數(shù)。該指令使用進位標(biāo)志來表示借位,這樣就可以做大于 32 位的減法,注意不要忘記設(shè)置S后綴來更改進位標(biāo)志。該指令可用于有符號數(shù)或無符號數(shù)的減法運算。

指令示例:

SUBS R0 , R1 , R2 ; R0 = R1 - R2 - ! C ,并根據(jù)結(jié)果設(shè)置 CPSR 的進位標(biāo)志位

11、RSB 指令

RSB 指令的格式為:

RSB{條件}{S} 目的寄存器,操作數(shù)1,操作數(shù)2

RSB 指令稱為逆向減法指令,用于 把操作數(shù) 2 減去操作數(shù) 1 ,并將結(jié)果存放到目的寄存器中。操作數(shù) 1 應(yīng)是一個寄存器,操作數(shù) 2 可以是一個寄存器,被移位的寄存器,或一個立即數(shù)。該指令可用于有符號數(shù)或無符號數(shù)的減法運算。

指令示例:

RSB R0 , R1 , R2 ; R0 = R2 – R1

RSB R0 , R1 , #256 ; R0 = 256 – R1

RSB R0 , R2 , R3 , LSL#1 ; R0 = (R3 << 1) - R2

12、RSC 指令

RSC 指令的格式為:

RSC{條件}{S} 目的寄存器,操作數(shù)1,操作數(shù)2

RSC 指令用于 把操作數(shù) 2 減去操作數(shù) 1 ,再減去CPSR 中的C 條件標(biāo)志位的反碼,并將結(jié)果存放到目的寄存器中。操作數(shù) 1 應(yīng)是一個寄存器,操作數(shù) 2 可以是一個寄存器,被移位的寄存器,或一個立即數(shù)。該指令使用進位標(biāo)志來表示借位,這樣就可以做大于 32 位的減法,注意不要忘記設(shè)置S后綴來更改進位標(biāo)志。該指令可用于有符號數(shù)或無符號數(shù)的減法運算。

指令示例:

RSC R0 , R1 , R2 ; R0 = R2 – R1 - ! C

13、AND 指令

AND 指令的格式為:

AND{條件}{S} 目的寄存器,操作數(shù)1,操作數(shù)2

AND 指令用于 在兩個操作數(shù)上進行邏輯與運算,并把結(jié)果放置到目的寄存器中。操作數(shù) 1 應(yīng)是一個寄存器,操作數(shù) 2 可以是一個寄存器,被移位的寄存器,或一個立即數(shù)。該指令常用于屏蔽操作數(shù) 1 的某些位。

指令示例:

AND R0 , R0 ,# 3 ; 該指令保持 R0 的 0 、 1 位,其余位清零。

14、ORR 指令

ORR 指令的格式為:

ORR{條件}{S} 目的寄存器,操作數(shù)1,操作數(shù)2

ORR 指令用于 在兩個操作數(shù)上進行邏輯或運算,并把結(jié)果放置到目的寄存器中。操作數(shù) 1應(yīng)是一個寄存器,操作數(shù) 2 可以是一個寄存器,被移位的寄存器,或一個立即數(shù)。該指令常用于設(shè)置操作數(shù) 1 的某些位。

指令示例:

ORR R0 , R0 ,# 3 ; 該指令設(shè)置 R0 的 0 、 1 位,其余位保持不變。

15、EOR 指令

EOR 指令的格式為:

EOR{條件}{S} 目的寄存器,操作數(shù)1,操作數(shù)2

EOR 指令用于 在兩個操作數(shù)上進行邏輯異或運算,并把結(jié)果放置到目的寄存器中。操作數(shù) 1 應(yīng)是一個寄存器,操作數(shù) 2 可以是一個寄存器,被移位的寄存器,或一個立即數(shù)。該指令常用于反轉(zhuǎn)操作數(shù) 1 的某些位。

指令示例:

EOR R0 , R0 ,# 3 ; 該指令反轉(zhuǎn) R0 的 0 、 1 位,其余位保持不變。

16、BIC 指令

BIC 指令的格式為:

BIC{條件}{S} 目的寄存器,操作數(shù)1,操作數(shù)2

BIC 指令用于清除 操作數(shù) 1 的某些位,并把結(jié)果放置到目的寄存器中。操作數(shù) 1 應(yīng)是一個寄存器,操作數(shù) 2 可以是一個寄存器,被移位的寄存器,或一個立即數(shù)。操作數(shù) 2 為 32 位的掩碼,如果在掩碼中設(shè)置了某一位,則清除這一位。未設(shè)置的掩碼位保持不變。

指令示例:

BIC R0 , R0 ,#% 1011 ;該指令清除 R0

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉