编辑:sx_yanf
2016-05-16
这篇文章主要介绍了计算机四级考试嵌入式软件开发工程师练习题,希望对你有所帮助。
ARM程序分析
程序解释
AREA COPYBS,CODE,READONLY ;定义一个代码段
ENTRY ;程序入口
LDR RO,=SRC ;取得原数据表的表头
LDR R1,=DST ;取得目标数据表的表头
MOV R2,#20 ;R4作为循环控制
BCOPY MOVS R3,R2,LSR,#3 ;R3=R2 <<3 逻辑右移3位
BEQ CWORD ;若Z=1,跳转到CWORD
OCOPY LDMIA R0!,{R4-R11} ;加载R0指向的地址上的多字数据,保存到R4~R11中,R0值更新
STMIA R1!,{R4-R11} ;将R4-R11的数据存储到R1指向的地址上,R1值更新
SUBS R3,R3,#1 ;R3=R3-1
BNE OCOPY ;若Z=0,跳转到OCOPY
CWORD AND R2,R2,#7 ;R2=R2&7
BEQ STOP ;若Z=1,跳转到STOP
WCOPY LDR R3,{R0},#4 ;将R3中的字数据读入以R0为地址的存储器中,并将新地址R0+4写入R1
STR R3,{R1},#4 ;将R3中的字数据写入以R1为地址的存储器中,并将新地址R1+4写入R1
SUBS R2,R2,#1 ;R2=R2-1
BNE WCOPY ;若Z=0,跳转到WCOPY
STOP ……
……
在程序中常常需要根据一定的参数选择执行不同的子程序。跳转表中存放的是各子函数的地址,选择不同的子程序的参数是该子程序在跳转表中的偏移量。在本例中R3寄存器中存放的是跳转表的基地址(首选地址,其中存放的是第一个子程序的地址)。R0寄存器的值用于选择不同的子程序;当R0为0时,选择的是子程序DoAdd;当R0为1时,选择的是子程序DoSub。
标签:计算机等级考试
精品学习网(51edu.com)在建设过程中引用了互联网上的一些信息资源并对有明确来源的信息注明了出处,版权归原作者及原网站所有,如果您对本站信息资源版权的归属问题存有异议,请您致信qinquan#51edu.com(将#换成@),我们会立即做出答复并及时解决。如果您认为本站有侵犯您权益的行为,请通知我们,我们一定根据实际情况及时处理。