ARM子程序設(shè)計
用跳轉(zhuǎn)表實現(xiàn)子程序程序的跳轉(zhuǎn)
例子:
SUBMAX
START
STOP
JUMPTAB
SUBTAB
SUB0
SUB1
ERROR
程序解讀:
1.
switch(R0)
{
case0:
case1:
…
}
實驗目的:掌握ARM子程序調(diào)用過程。
實驗一
閱讀下面程序,編寫字符串復制子程序中的代碼,實現(xiàn)程序的功能。(exp8_1.s)
START
STOP
;子程序名:BCOPY
;功能:以字節(jié)為單位的數(shù)據(jù)塊復制
;入口參數(shù):R0,R1
;出口參數(shù):無
;占用資源:R0,R1
;局部變量:R2
BCOPY
。。。。。。
。。。。。。
。。。。。。
LTORG
SRCSTR DCB "1-source",0
DSTSTR DCB "2-destination",0
答案:
LDRB R2,[R0],#1
實驗二 累乘程序設(shè)計,計算1*2*3*…*N的值(ARM7)
閱讀下面的程序,畫出程序的流程圖,分析程序的功能。(exp8_2_1.s)
N EQU 4
START
STOP
;子程序名:NMUL
;功能:累乘計算
;入口參數(shù):R0
;出口參數(shù):R0
;占用資源:R0
;局部變量:R1
NMUL
NMUL_L1
NMUL_ERR
NMUL_END
實驗三 子程序嵌套設(shè)計(ARM9)
閱讀下面的程序,畫出程序的流程圖,分析程序的功能。(exp8_3.s)
START
STOP
;子程序名:SUB1
;入口參數(shù):無
;出口參數(shù):無
;局部變量:R0,R1,R2
SUB1
DELAY
DELAY_L1
STKUSR SPACE 30*4
評論