指令分類:
1、算數(shù)和邏輯指令
2、比較指令
3、跳轉(zhuǎn)指令
4、移位指令
5、程序狀態(tài)字訪問指令
6、存儲(chǔ)器訪問指令
++++++++++++++++++++++++++++++++++++++++++++++++++
學(xué)習(xí)指令的資料《arm匯編手冊(cè)(中文版).chm》 ,注:這個(gè)資料是 ARM匯編手冊(cè),我們用的是GNU的匯編,所以語法 大小寫上是有差別的。
使用上一篇文章中的匯編程序來,學(xué)習(xí)使用每個(gè)指令的用法。
一、算數(shù)和邏輯指令
1、mov指令
作用、格式、例子
從另一個(gè)寄存器、被移位的寄存器、或一個(gè)立即值裝載一個(gè)值到目的寄存器。
MOV{條件}{S} 匯編程序中使用@來添加注釋。 JLink 連接好板子,PC機(jī)。板子nandflash啟動(dòng)。開啟JLinkGDBServer,啟動(dòng)eclipse。 打開上一篇文章中的匯編程序工程。 直接在eclipse的工程項(xiàng)目中編輯start.s文件, .text .global _start _start: @mov指令釋放 mov r1,#3 @ #3表示立即數(shù),十進(jìn)制3 mov r2,r1 mov r3,#10 clean,編譯,調(diào)試。 查看寄存器的值,寄存器的值可以使用16進(jìn)制來展示,右鍵菜單選項(xiàng)進(jìn)行設(shè)置。 2、MVN : 傳送取反的值 MVN{條件}{S} ( 使用C語言的表示方法:dest = !op_1)將 例子: mvn r1,#ob10 @ #ob10 表示二進(jìn)制數(shù) 10 mvn r2,#5 mvn r3,r1 ------------------ r1的值應(yīng)該是 二進(jìn)制 10 按位取反之后的值: 11111111111111111111111111111101 r3的值應(yīng)該是r1取反的值 即二進(jìn)制 10 3、SUB : 減法 SUB{條件}{S} dest = op_1 - op_2 SUB 用操作數(shù) one 減去操作數(shù) two,把結(jié)果放置到目的寄存器中。操作數(shù) 1 是一個(gè)寄存器,操作數(shù) 2 可以是一個(gè)寄存器,被移位的寄存器,或一個(gè)立即值 4、ADD : 加法 5、AND : 邏輯與 AND{條件}{S} dest = op_1 AND op_2 ---------------------------------- Op_1 Op_2 結(jié)果 0 0 0 0 1 0 1 0 0 1 1 1 .text .global _start _start: mov r0,#0 mov r1,#1 mov r2,#3 and r3,r0,r1 @r3的值是0 and r4,r1,r2 @r4的值是1 6、BIC : 位清除 BIC{條件}{S} BIC 是在一個(gè)字中清除位的一種方法。操作數(shù) 2 是一個(gè) 32 位位掩碼(mask)。如果如果在掩碼中設(shè)置了某一位,則清除這一位。未設(shè)置的掩碼位指示此位保持不變。 例子: r0 的值是二進(jìn)制 10111111 掩碼是 101 則結(jié)果是 10111010 掩碼是1 則清楚對(duì)應(yīng)位,置為0 掩碼是0,則不做操作。 .text .global _start _start: mov r1,#0b101011 bic r2,r1,#0b101 @r2的值應(yīng)該是 0b101010 二、比較指令 1、cmp : 比較(Compare) 比較的結(jié)果保存在程序狀態(tài)寄存器,CPSR的 N ,Z 位 N: 0 操作數(shù) one大于操作數(shù)two 1 操作數(shù) one小于操作數(shù)two Z: 1 表示比較的結(jié)果是兩個(gè)數(shù)相等 .text .global _start _start: mov r1,#1 cmp r1,#3 2、TST : 測(cè)試位 操作數(shù)one跟操作數(shù)two按位與操作,結(jié)果影響CPSR的Z位 Status = op_1 AND op_2 Status 0 CPSR Z位 是1 Status 1 CPSR Z位 是0 四、跳轉(zhuǎn)指令(分支指令) C語言中 if else分支,在匯編中是如何實(shí)現(xiàn)的? 1、b b{條件} <地址> {條件}的相關(guān)知識(shí)在: GT : 大于(有符號(hào))如果一次比較之后... 設(shè)置了 N 標(biāo)志并設(shè)置了 V 標(biāo)志 或者... 清除了 N 標(biāo)志并清除了 V 標(biāo)志 并且... 清除了 Z 標(biāo)志。 示例: mov r1,#7 mov r2,#3 cmp r1,r2 bgt branch add r3,r1,r2 b end branch: sub r3,r1,r2 end: nop bgt branch: 滿足條件跳轉(zhuǎn)到 branch標(biāo)號(hào)處。 b end: 無條件跳轉(zhuǎn)到end標(biāo)號(hào)處。 2、bl 帶連接的分支 bl會(huì)把下一條指令的地址保存到lr寄存器當(dāng)中。以便函數(shù)能夠正常返回到調(diào)用的地方。 在匯編中實(shí)現(xiàn)函數(shù)的調(diào)用,返回 mov r3,#1 bl func1 @調(diào)用函數(shù) func1 mov r1,#6 func1: mov r1,#2 mov r2,#3 mov pc,lr @注意lr寄存器,bl指令能夠把跳轉(zhuǎn)地址的下一條指令保存到lr中,可以通過反匯編來看到lr的地址是哪個(gè)指令操作的地址。 mov r3,#3 五、移位指令 1、LSL 邏輯左移 mov r1, #0b1 mov r1, r1, lsl#1 @r1的值最終為 0b10 2、ROR 循環(huán)右移 mov r1, #0b11 mov r1, r1, ror#1 @r1 的最終結(jié)果 1........1 六、程序狀態(tài)字訪問指令 需要特殊的指令來訪問,修改CPSR寄存器 msr 把通用寄存器寫入到CSPR寄存器中 mrs 把程序狀態(tài)字搬移到通用寄存器 mrs r0, cpsr @把cpsr的值賦值給 r0 orr r0, #0b100 @把r0 的第三位置為1 msr cpsr, r0 @把r0的值賦值給cpsr 七、存儲(chǔ)器訪問指令 內(nèi)存的值到寄存器 ldr 寄存器的值到內(nèi)存 str mov r0, 0xff str r0, [r1] @把r0的值賦值給,以r1的值為地址的內(nèi)存中。 @在調(diào)試時(shí),認(rèn)為的修改 r1的值為 0x30001000 ,(2440的開發(fā)板) @調(diào)試界面打開Memory窗口,觀察 內(nèi)存地址為 0x30001000 的數(shù)據(jù)是否是 0xff ldr r2, [r1] @以r1的值作為內(nèi)存的地址,把該內(nèi)存地址上的值賦值給r2 ,應(yīng)該是 0xff
上一篇:ARM體系結(jié)構(gòu)_DAY2
下一篇:ARM處理器、X86處理器和AI處理器的區(qū)別
推薦閱讀
史海拾趣
隨著產(chǎn)品技術(shù)的不斷成熟和市場(chǎng)份額的逐步擴(kuò)大,ESR公司開始將目光投向國(guó)際市場(chǎng)。公司積極參加國(guó)際電子展會(huì)和技術(shù)交流活動(dòng),與全球各地的客戶和合作伙伴建立了廣泛的聯(lián)系。
同時(shí),ESR公司還根據(jù)不同國(guó)家和地區(qū)的市場(chǎng)需求和法規(guī)要求,對(duì)產(chǎn)品線進(jìn)行了針對(duì)性的調(diào)整和優(yōu)化。通過本地化的營(yíng)銷策略和服務(wù)體系,公司成功打開了多個(gè)海外市場(chǎng)的大門,并贏得了當(dāng)?shù)乜蛻舻男湃魏椭С帧?/p>
某EPC公司注重與產(chǎn)業(yè)鏈上下游企業(yè)的合作與共贏。公司與供應(yīng)商建立了長(zhǎng)期穩(wěn)定的合作關(guān)系,確保了原材料的穩(wěn)定供應(yīng)和成本控制。同時(shí),公司積極與設(shè)備制造商、系統(tǒng)集成商等合作伙伴開展深度合作,共同研發(fā)新技術(shù)、新產(chǎn)品,為客戶提供更加全面的解決方案。通過合作共贏的模式,公司實(shí)現(xiàn)了跨越式的發(fā)展,成為了電子行業(yè)的領(lǐng)軍企業(yè)之一。
在電子行業(yè)的推動(dòng)下,大型基礎(chǔ)設(shè)施的建設(shè)也迎來了快速發(fā)展。韋拉札諾海峽大橋作為連接斯塔頓島和布魯克林的世界上最長(zhǎng)的吊橋,其建設(shè)過程對(duì)緊固件的需求量大且要求嚴(yán)格。BAND-IT公司憑借其大型不銹鋼卡箍產(chǎn)品,成功參與了這一重大工程的建設(shè)。這些卡箍不僅具有強(qiáng)大的承重能力,而且安裝簡(jiǎn)便、安全可靠,為大橋的穩(wěn)定性和安全性提供了有力保障。
1937年,在美國(guó)的科羅拉多州,BAND-IT公司應(yīng)運(yùn)而生。當(dāng)時(shí),電子行業(yè)正處于快速發(fā)展的初期,對(duì)高質(zhì)量緊固件的需求日益增長(zhǎng)。BAND-IT創(chuàng)始人敏銳地捕捉到了這一機(jī)遇,開始設(shè)計(jì)和制造不銹鋼帶和扎扣,以及C00169標(biāo)準(zhǔn)綁帶機(jī)。這些產(chǎn)品迅速在電子行業(yè)中獲得了認(rèn)可,成為電纜、電線束等部件緊固的理想選擇。初創(chuàng)時(shí)期的BAND-IT面臨著資金短缺、市場(chǎng)競(jìng)爭(zhēng)激烈等挑戰(zhàn),但憑借其創(chuàng)新的產(chǎn)品和卓越的品質(zhì),逐漸在電子行業(yè)中站穩(wěn)了腳跟。
隨著電子行業(yè)的快速發(fā)展,Barkston Plastics Engineering Ltd.意識(shí)到單一產(chǎn)品線的局限性,于是開始擴(kuò)展其產(chǎn)品線,涵蓋更多種類的塑料電子元件。同時(shí),公司積極尋求與行業(yè)內(nèi)其他企業(yè)的戰(zhàn)略合作,通過技術(shù)共享和市場(chǎng)資源互補(bǔ),共同開拓更廣闊的市場(chǎng)。這一戰(zhàn)略轉(zhuǎn)型不僅提升了Barkston的市場(chǎng)競(jìng)爭(zhēng)力,也為其后續(xù)發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ)。
我用的 ARM6410 (532MHz) + mDDr(外頻133MHz)系統(tǒng),burst為8。 我的程序里有大量的形如 N=19200; for (i=0; i<N; i++) { a = b*c+d; } 這樣的數(shù)組讀寫代碼。 對(duì)于數(shù)組讀取,因?yàn)橛衏ache,一次性讀8個(gè)32位數(shù)據(jù)效率很高, ...… 查看全部問答∨ |
|
在開發(fā)PPC應(yīng)用程序時(shí),系統(tǒng)沒有自帶的餅圖控件,請(qǐng)問有沒有與componentOne 類似的控件。 謝謝。 … 查看全部問答∨ |
關(guān)于GSM/GPRS進(jìn)行無線通信的單片機(jī)與通信模塊選擇問題? 請(qǐng)各位大俠幫幫忙! 小弟剛開始學(xué)習(xí)使用GSM/GPRS進(jìn)行電網(wǎng)的自動(dòng)監(jiān)測(cè),看了不久的協(xié)議與原理后,逐漸被各種單片機(jī)和GPRS模塊給晃花了眼睛,本著想要學(xué)好一項(xiàng)技術(shù),就得了解原理的原則,(這是論壇一位老鳥說的)我不想只用 ...… 查看全部問答∨ |
EVC 開發(fā)的程序,放到WINCE里面,過了一段時(shí)間 ,發(fā)現(xiàn)文件壞了,不能啟動(dòng)了??? 不知道是什么原因 EVC 開發(fā)的程序,放到WINCE里面,過了一段時(shí)間 ,發(fā)現(xiàn)文件壞了,不能啟動(dòng)了??? 可執(zhí)行文件的圖標(biāo)也變成了一個(gè)"藍(lán)方格子"了; 1.有可能是文件損壞了嗎? 損壞的原因是什么呢? (我用的是Release 版本)… 查看全部問答∨ |
ST發(fā)布了新的STM32庫(kù) V2.0,居然不能兼容過去的V1.0及以下!!!!如果使用新庫(kù),以前的程序要全面修改。數(shù)據(jù)結(jié)構(gòu)、函數(shù)變化太大了!郁悶!… 查看全部問答∨ |
最近搞了個(gè)裸跑wifi驅(qū)動(dòng),準(zhǔn)備移植到stm32上,不知道有沒有市場(chǎng)? 下載 (11.64 KB) 2010-11-11 11:45 … 查看全部問答∨ |
|
本帖最后由 ddllxxrr 于 2016-1-7 17:01 編輯 出一個(gè)晶控51串口編程器,30元9成新,還有其他好東西等你去發(fā)掘 … 查看全部問答∨ |
一個(gè)定時(shí)器怎么產(chǎn)生 3個(gè)定時(shí)中斷????實(shí)際使用中,我就會(huì)使用一個(gè)定時(shí)器產(chǎn)生一個(gè)定時(shí)中斷。并且我在做考試題目的時(shí)候也遇到了這個(gè)問題。… 查看全部問答∨ |
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- 人形機(jī)器人馬拉松背后的思考,兆易創(chuàng)新如何賦能機(jī)器人產(chǎn)業(yè)
- 一種基于STM32的智能柜控制器設(shè)計(jì)
- 小型傾轉(zhuǎn)旋翼機(jī)的無刷直流電機(jī)驅(qū)動(dòng)器設(shè)計(jì)
- 超高速攝影機(jī)電控系統(tǒng)設(shè)計(jì)
- 基于GPS自動(dòng)授時(shí)的無線智能控制器的設(shè)計(jì)
- 基于PTR2000的無線氣象信息采集系統(tǒng)設(shè)計(jì)
- Microchip推出MEC175xB系列器件,為嵌入式控制器引入硬件 抗量子攻擊能力
- 無人飛行器機(jī)載穩(wěn)定云臺(tái)控制系統(tǒng)的設(shè)計(jì)
- 匠芯創(chuàng)推出面向具身智能高性能實(shí)時(shí)處理器M7000
- 自動(dòng)駕駛卡車公司Aurora重新引入駕駛員
- 全固態(tài)電池新標(biāo)準(zhǔn)出臺(tái),明確定義解決行業(yè)界定義及測(cè)試難題
- 長(zhǎng)城死磕增程!下代平臺(tái)用6C充電,插混純電續(xù)航竟然破400公里!
- 寶馬全固態(tài)電池電動(dòng)汽車上路測(cè)試
- 基于數(shù)采系統(tǒng)的車載A2B信號(hào)測(cè)試解決方案
- 從夢(mèng)想到落地:固態(tài)激光雷達(dá)的十年發(fā)展史
- AI 座艙芯片,走入全民時(shí)代
- 2025年1-3月ADAS供應(yīng)商裝機(jī)量排行榜:自主廠商引領(lǐng)技術(shù)融合新趨勢(shì)
- 又一廠商官宣大動(dòng)作,汽車零部件企業(yè)緣何涌向機(jī)器人領(lǐng)域?
- 總規(guī)模50億!蘇州吳中區(qū)成立機(jī)器人專項(xiàng)基金
- 下載【ADI 6本精選電子書】,截圖抽紅包啦~
- 分分鐘完成電子設(shè)計(jì)的奧秘—2015WEBENCH邀你共同見證!
- 有獎(jiǎng)?wù){(diào)查:ST MEMS 傳感器論壇用戶問卷調(diào)查,參與有驚喜
- 有獎(jiǎng)直播|魏德米勒產(chǎn)品在半導(dǎo)體行業(yè)的應(yīng)用 報(bào)名中
- 老T叔的藏書閣——一位老工程師多年的資料積累
- 年末福利!2019 TI 工業(yè)應(yīng)用精選課程匯總,搶樓贏好禮
- 下載安森美半導(dǎo)體工業(yè)物聯(lián)網(wǎng)工業(yè)解決方案,百份好禮送!
- TI 嵌入式產(chǎn)品研討會(huì)視頻曝光,下載有禮!
- WINCE在ARM平臺(tái)的移植及驅(qū)動(dòng)技術(shù)詳解
- iPhone 11極限防水測(cè)試結(jié)果:浸水8個(gè)月可正常運(yùn)行
- 三星預(yù)熱高端機(jī)型Thom Browne版Galaxy Z Fold 2
- iPhone 12傳聞全匯總:這里帶您了解未來新品模樣
- 單片機(jī)數(shù)字電子鐘電路仿真圖和程序
- STC15408AS單片機(jī)的EEPROM測(cè)試程序
- 二期活動(dòng)來啦,專家現(xiàn)場(chǎng)分享Cypress、NXP案例
- 華為效應(yīng) 臺(tái)灣三大封測(cè)廠商大陸擴(kuò)產(chǎn)計(jì)劃減慢
- 遠(yuǎn)程工作和教學(xué)需求 筆電代工廠訂單看到年底
- 臺(tái)灣驅(qū)動(dòng)IC雙雄均漲價(jià) 旺季更旺
- 我的電子技術(shù)入門之路
- 如何使用74HC573來實(shí)現(xiàn)一個(gè)接口多種用途?
- 軟件測(cè)試經(jīng)典資料大推薦(十九)---步步為贏:軟件測(cè)試管理全程實(shí)踐
- 有沒有大師在,幫忙分析分析這塊板子,有那些錯(cuò)誤點(diǎn),怎么畫的更好呢?感謝~~
- 求救!請(qǐng)問市面上有 GSM 網(wǎng)絡(luò)的語音接入設(shè)備(板卡或mddem都可以)-- 不是短信貓,要可以支持語音AT指令和實(shí)現(xiàn)DTMF按鍵采集接口!
- 請(qǐng)各位前輩給我一些經(jīng)驗(yàn)性的指導(dǎo)
- 請(qǐng)問這個(gè)應(yīng)該調(diào)用何函數(shù)?
- MSP430F155程序下載不了
- 關(guān)于SIM900A和TCP服務(wù)器的通信問題
- 淺談便攜顯示屏的作用以及優(yōu)劣勢(shì)