习题答案ARM程序设计.ppt

上传人:小飞机 文档编号:5913103 上传时间:2023-09-03 格式:PPT 页数:14 大小:320.11KB
返回 下载 相关 举报
习题答案ARM程序设计.ppt_第1页
第1页 / 共14页
习题答案ARM程序设计.ppt_第2页
第2页 / 共14页
习题答案ARM程序设计.ppt_第3页
第3页 / 共14页
习题答案ARM程序设计.ppt_第4页
第4页 / 共14页
习题答案ARM程序设计.ppt_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《习题答案ARM程序设计.ppt》由会员分享,可在线阅读,更多相关《习题答案ARM程序设计.ppt(14页珍藏版)》请在三一办公上搜索。

1、微处理器系统结构与嵌入式系统设计,第九章 ARM程序设计,作业,必做:、9.8、选做:9.6、9.7、9.12、9.14注意,除题目明确要求外,所有的程序均采用汇编语言编写,9.2 汇编语言和C语言相比,各具有什么特点?答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。汇编语言依赖于机器硬件,不同CPU提供的汇编指令可能有很大的不同,因此汇编源程序几乎不具有移植性;但汇编语言程序主要优点是速度快、效率高,更能发挥机器硬件的长处;C语言是一种结构化的高级语言。其优点是可读性好,移植容易,是普遍使用的一种语言。缺点是占用资源较多,需要先将源程序通过编译成机器语言才能

2、执行,执行效率不如汇编高。,3/52,9.3 试用汇编代码完成如下C语言代码完成的功能。int gcd(int a,int b)while(a!=b)if(a b)a=a-b;else b=b-a;return a;汇编实现:AREA Sub1,CODE,READ ONLYEXPORT Sub1CMP R0,R1;(R0)=a,(R1)=b MOVEQ PC,LR;相等则返回SUBGT R0,R0,R1;带符号数大于条件码为GT,无符号数为HI SUBLT R1,R1,R0;带符号数小于条件码为LT,无符号数为LOLDR R2,=a;R2指向a STRR0,R2;更新变量a MOV PC,LR

3、;返回END,9.4 宏的定义如下面的代码所示:MICRO$aa example$bb,$cc,$dd$aa CMP$cc,#0 B$dd$bbMEND 若在汇编程序中需要调用上面定义的宏example,则其程序代码如下。试写出下面程序被汇编后,宏展开后的结果。lable example next,R3,NEnext宏展开后的代码为:label CMP R3,#0 BNE next,9.5 编写一个程序段,当寄存器R3中数据大于R2中的数据时,将R2中的数据加10存入寄存器R3;否则将R2中的数据加100存入寄存器R3,并把这个程序段定义成一个代码段。AREA ADDITION,CODE,RE

4、ADONLYENTRYLoopCMPR3,R2BHIGREATERADDR3,R2,#100BSTOPGREATERADD R3,R2,#10STOPEND,9.6编写一个程序段,判断寄存器R5中数据是否为12,18,22,29,45或67,如果是则将R0中数据加1,否则将R0设置为0 xF,并把这个程序段定义成一个代码段 AREA Comp,CODE,READONLY ENTRY LDR R0,=dat;寄存器R0指向DataT表中的数据列表dat MOV R1,#7;dat表中的数据个数 MOV R2,#0;标志寄存器(R2)=0则R5中数据不在dat表中 SUB R0,R0,#4;调整比

5、较指针 Loop SUB R1,R1,#1;调整比较次数 BEQ Handle CMP R5,R0,#4!BNELoop MOVEQ R2,#1 Handle CMP R2,#0 ADDNE R0,R0,#1 MOVEQ R0,#0 xF Stop AREA DataT,DATA,READWRITE dat DCD 12,18,22,29,45,67;需要比较的数据列表 END,8/52,9.8 试编写一个循环程序,实现从0开始10个偶数的累加。AREA Foud,CODE,READONLYENTRY MOV R0,#0;存放累加和 MOV R1,#0;存放加数 MOVR2,#9;累加次数Lo

6、op ADD R1,R1,#2 ADD R0,R0,R1 SUBR2,R2,#1;调整累加次数 BNE LoopStopEND,9.12 试把如下C函数改写成汇编语言函数。(1)int SubXY(int x,int y)return x-y;(2)void SubXY(int x,int y,int z)z=x-y;(1)AREA SubXY,CODE,READONLYEXPORT SubXYSUB R0,R0,R1;结果通过R0返回 MOV PC,LR;返回END(2)AREA SubXY,CODE,READONLYEXPORT SubXYSUB R2,R0,R1LDRR3,=z;R3执行

7、变量zSTR R2,R3;更新变量z MOV PC,LR;返回END,9.14 把如下汇编语言函数改写成C函数。CMP R0,#1CMPNE R1,#1ADDEQ R2,R3,R4C函数为:void mydo(int a,int b,int c,int d,int e);(R0)=a,(R1)=b,(R2)=c;(R3)=d,R4)=e if(a!=1)if(b=1)c=d+e;,9.15 阅读程序,说明如下程序完成的功能。llsearch CMP R0,#0 LDRNEB R2,R0 CMPNE R1,R2 LDRNE R0,R0,#4 BNE llsearch MOV PC,LR该程序功能

8、为:若R00,则将R0指向的字节数据读入R2;若R00且R1R2,则将R0+4指向的双字数据存入R0中;循环,直至R0=R1退出子程序。,9.16 阅读程序,说明如下程序完成的功能。strcmp LDRB R2,R0,#1 LDRB R3,R1,#1 CMP R2,#0 CMPNE R3,#0 BEQ return CMP R2,R3 BEQ strcmp return SUB R0,R2,R3 MOV PC,LR程序功能为:R0指向数据串S1(的前一个字节单元),R1指向数据串S2(的前一个字节单元);依次比较字符串S1、S2中的字符,直至任一字符串结束;将S1,S2第一个不同字符(或最后一

9、个字符)的差存入R0并返回;,9.17 阅读程序,说明如下程序完成的功能。CMP R0,#maxindex LDRLO PC,PC,R0,LSL#2 B IndexOutOfRange DCD Handler0 DCD Handler1 DCD Handler2 DCD Handler3 程序功能为:实现子程序散转:若R0在有效范围内(小于#maxindex)则跳转到Hander03所指的子程序之一。,9.18 阅读程序,说明如下程序完成的功能。loop LDMIA R12!,(R0-R11)STMIA R13!,(R0-R11)CMP R12,R14BLO loop程序功能为:将R12开始向大地址方向所指的12个数据压入向上生成的堆栈(R13开始向大地址方向所指的12个单元)中;比较R12和R14的值,若R12小于R14则循环,否则退出程序;,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号