ARM子程序设计
用跳转表实现子程序程序的跳转
例子:
SUBMAX
START
STOP
JUMPTAB
SUBTAB
SUB0
SUB1
ERROR
程序解读:
1.
switch(R0)
{
case0:
case1:
…
}
实验目的:掌握ARM子程序调用过程。
实验一
阅读下面程序,编写字符串复制子程序中的代码,实现程序的功能。(exp8_1.s)
START
STOP
;子程序名:BCOPY
;功能:以字节为单位的数据块复制
;入口参数:R0,R1
;出口参数:无
;占用资源:R0,R1
;局部变量:R2
BCOPY
。。。。。。
。。。。。。
。。。。。。
LTORG
SRCSTR DCB "1-source",0
DSTSTR DCB "2-destination",0
答案:
LDRB R2,[R0],#1
实验二 累乘程序设计,计算1*2*3*…*N的值(ARM7)
阅读下面的程序,画出程序的流程图,分析程序的功能。(exp8_2_1.s)
N EQU 4
START
STOP
;子程序名:NMUL
;功能:累乘计算
;入口参数:R0
;出口参数:R0
;占用资源:R0
;局部变量:R1
NMUL
NMUL_L1
NMUL_ERR
NMUL_END
实验三 子程序嵌套设计(ARM9)
阅读下面的程序,画出程序的流程图,分析程序的功能。(exp8_3.s)
START
STOP
;子程序名:SUB1
;入口参数:无
;出口参数:无
;局部变量:R0,R1,R2
SUB1
DELAY
DELAY_L1
STKUSR SPACE 30*4
评论