嵌入式第三章课后习题.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式第三章课后习题

第三章 ARM7TDMI支持哪几种指令集,各有什么特点? 答:支持ARM指令集和Thumb指令集,各自特点是ARM指令集的指令是32位,执行效率高、功能全,每条指令可以根据条件执行,但是代码密度低。Thumb指令集指令是16位,在功能上是ARM指令集的子集,功能并没有降低。 ARM指令的寻址方式有几种?并指出下列指令中的寻址方式。 答:ARM指令的寻址方式有8种,分别为立即寻址、寄存器寻址、寄存器移位寻址、寄存器间接寻址、基址变址寻址、相对寻址、多寄存器寻址、堆栈寻址。 ⑴ SUB R0, R1, R2 寄存器寻址 ⑵ LDR R0, [R2] 寄存器间接寻址 ⑶ MVN R0, #0x0F2 立即寻址 ⑷ LDMIA R0, {R1-R5} 多寄存器寻址 ⑸ STR R2, [R4, #0x02]! 基址变址寻址 ⑹ LDR R1, [R2, R3] 基址变址寻址 ⑺ MOV R1, R1, ROR #2 寄存器移位寻址 ⑻ LDR R1, [R3], #0x04 基址变址寻址 简述ARM指令集中第2个操作数(operand2)的三种形式。 答: ⑴ 常数表达方式。该常数必须对应8位位图,即常数是由一个8位的常数循环右移偶数位得到。例如:MOV R2,#100; ⑵ 寄存器方式。Operand2是Rm寄存器方式,在寄存器方式下操作数即位寄存器中的数值。例如:SUB R0,R1,R2; ⑶ 寄存器移位方式。Rm,shift 表示将寄存器的移位结果作为操作数,但Rm值保持不变。例如:MOV R0,R1,RRX;将R1带扩展的循环右移1位,存入R0中。 指出下列指令是否正确,若不正确请说明原因。 ⑴ MOVS R1, 101 不正确,立即寻址方式应该是#101 ⑵ MVN R1, #0x10F 正确 ⑶ STMDA R11, {R2-R8}! 不正确,不能同时存储在R2和R8中 ⑷ ADD R0!, R2, #4 正确 ⑸ LDR R4, [R5]! 不正确,LDR是存储到单个寄存器的加载指令,而这个是两个存储器都进行存储,应该为 LDR R4, [R5] ⑹ MRS PC, CPSR 不正确MRS是将CPSR传送到通用寄存器中,但这里的通用寄存器不包括R15,即PC ⑺ LDMFDS R0!, { R5-R8, R2} 正确 ⑻ ADD R3, [R3], R7 不正确,ADD指令不能访问存储器 (9) LDR R11, [R15,R8] ! 正确 (10) BXS R0 正确 何谓ARM指令的条件码?默认的条件码是什么?举例说明ARM指令的条件码对指令执行的影响。 答:所谓的ARM指令的“条件执行”是指在指令码中含有本条指令的执行条件,当CPSR中的条件码标志满足时,处理器执行本条指令,否则本条指令不执行。默认是无条件执行。 比如执行指令“ANDEQ R2,R1,R3”时,如果CPSR中的Z=1时,执行R2=R1R3,否则不执行该指令。 解释“满堆栈”、“空堆栈”、“递增堆栈”和“递减堆栈”? ARM指令系统中是如何支持的? 答:满堆栈:堆栈指针SP指向最后压入的堆栈有效数据项。 空堆栈:堆栈指针SP指向下一个待压入数据的空位置。 递增堆栈:向高地址方向生长。 递减堆栈:向低地址方向生长。 ⑴满递增:堆栈向上增长,SP指向内含有效数据项的最高栈单元。指令如LDMFA、STMFA等; ⑵空递增:堆栈向上增长,SP指向堆栈上的第一个空位置。指令如LDMEA、STMEA等; ⑶满递减:堆栈向下增长,SP指向内含有效数据项的最低栈单元。指令如LDMFD、STMFD等; ⑷空递减:堆栈向下增长,SP指向堆栈下的第一个空位置。指令如LDMED、STMED等。 试说明MOV指令、LDR加载指令和LDR伪指令三者的区别。 答:MOV指令是在寄存器间进行数据传送,影响标志位。 LDR指令是将存储器中的数据按给定地址加载到寄存器中,不影响标志位。 LDR伪指令是可以在一个立即数前面加等号,把一个地址写入某寄存器。 解释B指令、BL指令与BX指令的功能差别,并举例说明其使用方法。 答:B指令是分支指令,BL指令是带链接的分支指令,BX是带状态切换的分支指令。对于B指令“B WAITA”指跳转至标号WAITA处开始执行,B指令的跳转范围为±32M,对于BL指令,实现程序跳转,并保持PC到链寄存器LR中,跳转范围±32M,举例“BL DELAY”完成的跳转至标号DELAY处执行,并把PC-4存入LR。BX指令,带状态切换的跳转,比如“BX R0”表示跳转R0指定的地址开始执行,并查看R0[0]位的值,如果是1,对CPSR的T位置位,解

文档评论(0)

dashewan + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档