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