第9章节习题答案ARM程序设计.ppt

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章节习题答案ARM程序设计

作业 必做:9.2-9.5、 9.8、 9.15-9.18 选做:9.6、9.7、9.12、9.14 注意,除题目明确要求外,所有的程序均采用汇编语言编写 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 ONLY EXPORT Sub1 CMP R0, R1 ;(R0)=a,(R1)=b MOVEQ PC,LR ;相等则返回 SUBGT R0, R0, R1 ;带符号数大于条件码为GT,无符号数为HI SUBLT R1, R1, R0 ;带符号数小于条件码为LT,无符号数为LO LDR R2,=a ;R2指向a STR R0,[R2] ;更新变量a MOV PC,LR ;返回 END 9.4 宏的定义如下面的代码所示: MICRO $aa example $bb, $cc, $dd $aa CMP $cc, #0 B$dd $bb MEND 若在汇编程序中需要调用上面定义的宏example,则其程序代码如下。试写出下面程序被汇编后,宏展开后的结果。 lable example next, R3, NE … next … 宏展开后的代码为: label CMP R3 , #0 BNE next 9.5 编写一个程序段,当寄存器R3中数据大于R2中的数据时,将R2中的数据加10存入寄存器R3;否则将R2中的数据加100存入寄存器R3,并把这个程序段定义成一个代码段。 AREA ADDITION,CODE,READONLY ENTRY Loop CMP R3 , R2 BHI GREATER ADD R3 , R2 , #100 B STOP GREATER ADD R3 , R2 , #10 STOP … END 9.6编写一个程序段,判断寄存器R5中数据是否为12, 18, 22, 29, 45或67,如果是则将R0中数据加1,否则将R0设置为0xF,并把这个程序段定义成一个代码段 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 ;调整比较指针 Loop SUB R1, R1, #1 ;调整比较次数 BEQ Handle CMP R5,[R0,#4]! BNE Loop MOVEQ R2,#1 Handle CMP R2,#0 ADDNE R0, R0, #1 MOVEQ R0,#0xF Stop …… AREA DataT,DATA,READWRITE dat DCD 12,18,22,29,45,67;需要比较的数据列表 END 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,READONLY EXPORT SubXY SUB R0,R0,R1 ;结果通过R0返回 MOV PC,LR ;返回

文档评论(0)

junjun37473 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档