標題: ARM嵌入式匯編語言程序設計重點 [打印本頁]
作者: qq8426030 時間: 2014-7-14 15:26
標題: ARM嵌入式匯編語言程序設計重點
ARM嵌入式匯編語言程序設計重點
實驗目的
l 熟悉ARM微處理器指令系統;
l
學習ARM嵌入式匯編程序設計的編程重點。
實驗設備
l 硬件:PC機。
l
軟件:ADS1.2集成開發環境,Windows 2000/XP/2003。
實驗內容
l 了解多分支程序的編寫方法; l
掌握ARM程序的運行和調試。
實驗原理
(1)Arm 體系結構3種執行流程 1 順序執行:在正常執行過程中,每執行一條ARM指令,程序計數器(PC)的值加4個字節;每執行一條Thumb指令,程序計數器 (PC)加2個字節。整個過程按順序執行。 2 跳轉執行:程序可以跳轉到特定的地址標號處執行,或者跳轉到特定的子程序處執行。 3 異常中斷執行:在進入異常中斷處理程序時,要保存被中斷程序的執行現場,從異常中斷
處理程序退出時,要恢復被中斷程序的執行現場。
(2)跳轉表
多分支結構是程序中常見的結構,若給出調用號來調用子程序,一般用查表方法,查到子程序的地址,轉到相應子程序。注意:讀跳轉表時不要超過表的末端,檢查超限是必需的。例如:
BL JUMPTABLE …
JUMPTABLE ADR R1,SUBTABLE
CMP R0,#SUBMAX ;檢查超限
BHI stop ;若超限,則程序結束 LDR PC,[R1,R0,LSL #2];否則跳轉到表中 stop MOV R0,#0X18
LDR R1,=0X20026
SWI 0x123456
SUBTABLE DCD SUB0 ;子程序表入口 DCD SUB1 DCD SUB2
實驗參考程序
利用跳轉表實現多分支轉移。
AREA JUMP,CODE,READONLY;設置本段程序的名稱(JUMP)及屬性
num EQU 2 ;跳轉表中的子程序個數 ENTRY ;程序執行的入口點
START ;設置3個參數,然后調用子程序arithfunc,進行算術運算 MOV R0,#0
MOV R1,#3 MOV R2,#2
BL arithfunc ;調用子程序arithfunc
STOP ;調用angel_SWIreason_ReportException,從應用程序中退出 MOV R0,#0X18
LDR R1,=0X20026 SWI 0x123456
arithfunc ;子程序arithfunc入口點
CMP R0,#num;判斷選擇子程序的參數是否在有效范圍之內 MOVHS PC,LR
ADR R3,JumpTable;讀取跳轉表的基地址
LDR PC,[R3,R0,LSL #2];根據參數R0的值跳轉到相應的子程序
;跳轉表JumpTable中保存了各個子程序的地址, 在這里有兩個子程序DoAdd和DoSub ;當參數R0為0時上面的代碼將選擇DoAdd ;當參數R0為1時上面的代碼將選擇DoSub JumpTable
DCD DoAdd DCD DoSub
DoAdd 子程序DoAdd執行加法操作 ADD R0,R1,R2
MOV PC,LR
DoSub 子程序DoSub執行減法操作 SUB R0,R1,R2 MOV PC,LR END;結束匯編
實驗思考題
1. 修改下列C程序段代碼為ARM匯編程序段代碼。
do { x--; } while(x>0); 這里設x存放在R0 中(x為無符號整數) DOWHILE_L1 ADD R0,R0,#-1 ; 循環體,x--
DOWHILE_L2 MOVS R0,R0 ; R0 <= R0,并影響條件碼標志
BNE DOWHILE_L1 ; 若R0不為0(即x不為0),則繼續循環
DOWHILE_END NOP
2. 編寫一簡單ARM匯編程序段,實現1+2+…+100的運算。 AREA EXAMPLE1, CODE,READONLY ;定義一個代碼段,名稱為EXAMPLE1 ENTRY ;入口
MOV R0,#0 ;給R0賦值為0
MOV R1,#0 ;用R1來存放1~100的總和,初始化為0
START ADD R0,R0,#1 ;用來判斷終止的,每次加1 ADD R1,R1,R0 ;從1加到100
CMP R0,#100 ;執行R0-100的操作,但不保存,只影響CPSR的值 BLT START ;帶符號數小于時跳轉到START處執行 STOP B STOP ;死循環 END
全面承快速樣板及小批量貼片,后焊加工業務,樣板2-3天完成,加快24小時, BGA反修,植球及更換。電話:0755-2655271 QQ: 2643383166,網站
同樣的業務我們比質量;同樣的質量我們比價格;同樣的價格我們比時間,同樣的時間我們比服務;同樣的服務我們比信譽,麥斯艾姆,你值得信賴的樣板貼片專家。
歡迎光臨 (http://www.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
www.国产精|
中文字幕视频在线观看免费
|
久久国产精品久久久久久
|
黄色成人在线
|
国产三级精品三级在线观看四季网
|
中文字幕在线观看
|
国产福利资源
|
91网站在线观看视频
|
91免费福利在线
|
日日操夜夜操天天操
|
久久精品国产亚洲一区二区
|
欧洲精品在线观看
|
亚洲国产一区二区三区四区
|
国产视频一区二区在线观看
|
在线播放第一页
|
欧美美女二区
|
欧美日韩大片
|
av夜夜操|
日韩欧美中文
|
亚洲逼院|
国产精品久久久久久久毛片
|
亚洲国产高清高潮精品美女
|
日中文字幕在线
|
日本天天色
|
亚洲精品一区中文字幕乱码
|
99久久精品视频免费
|
狠狠躁天天躁夜夜躁婷婷老牛影视
|
欧美日韩久久
|
精品一区二区三区中文字幕
|
日韩美女在线看免费观看
|
成人一级片在线观看
|
久久精品无码一区二区三区
|
爱爱视频日本
|
永久看片
|
亚洲一区二区三区四区五区中文
|
国产高清在线精品一区二区三区
|
欧美亚洲国产日韩
|
日本一区二区三区四区
|
亚洲一区二区免费视频
|
国产999精品久久久久久
|
欧美成人一区二区三区
|