(完整版)《ARM嵌入式系统结构与编程》第三章课后答案

上传人:小****克 文档编号:201409827 上传时间:2021-10-10 格式:PDF 页数:5 大小:82.10KB
返回 下载 相关 举报
(完整版)《ARM嵌入式系统结构与编程》第三章课后答案_第1页
第1页 / 共5页
(完整版)《ARM嵌入式系统结构与编程》第三章课后答案_第2页
第2页 / 共5页
(完整版)《ARM嵌入式系统结构与编程》第三章课后答案_第3页
第3页 / 共5页
(完整版)《ARM嵌入式系统结构与编程》第三章课后答案_第4页
第4页 / 共5页
(完整版)《ARM嵌入式系统结构与编程》第三章课后答案_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《(完整版)《ARM嵌入式系统结构与编程》第三章课后答案》由会员分享,可在线阅读,更多相关《(完整版)《ARM嵌入式系统结构与编程》第三章课后答案(5页珍藏版)》请在金锄头文库上搜索。

1、第 3 章 ARM指令集寻址方式1.在指令编码中,条件码占几位,最多有多少个条件,各个条件是如何形成的?答:条件码占4 位,最多有15 个条件操作码条件助记符标志含义0000EQZ=1相等0001NEZ=0不相等0010CS/HSC=1无符号数大于或等于0011CC/LOC=0无符号数小于0100MIN=1负数0101PLN=0正数或零0110VSV=1溢出0111VCV=0没有溢出1000HIC=1,Z=0无符号数大于1001LSC=0,Z=1无符号数小于或等于1010GEN=V有符号数大于或等于1011LTN!=V有符号数小于1100GTZ=0,N=V有符号数大于1101LEZ=1,N!=

2、V有符号数小于或等于1110AL任何无条件执行(指令默认条件) 1111NV任何从不执行 (不要使用 ) 2. 指令条件码中,V 标志位在什么情况下才能等于1?答: V 溢出标志位对于加减法运算指令,当操作数和运算结果为二进制补码表示的带符号数时,V=1 表示符号位溢出,其他指令通常不影响V 位。3. 在 ARM 指令中, 什么是合法的立即数?判断下面各立即数是否合法,如果合法则写出在指令中的编码格式(也就是8 位常数和4 位移位数)0 x54300 x1080 x3040 x5010 xfb100000 x3340000 x3FC0000 x1FE00000 x55800000 x7F800

3、 0 x39C0000 x1FE80000答:立即数必须由1 个 8 位的常数通过进行32 位循环右移偶数位得到,其中循环右移的位数由一个 4位二进制的两倍表示。 即一个 8 位的常数通过循环右移2*rotate_4 位 (即 0,2,4, 。 。 。30)得到0X54300000,0000,0000,0000,0101,0100,0011,0000 非法立即数0X1080000,0000,0000,0000,0000,0001,0000,1000 0 x42 循环右移30 位 ( rotate_4=0 xF)0X3040000,0000,0000,0000,0000,0011,0000,01

4、00 0 xC1 循环右移30 位 (rotate_4=0 xF)0 x5010000,0000,0000,0000,0000,0101,0000,0001 非法立即数0 xfb100000000,1111,1011,0001,0000,0000,0000,0000 非法立即数0 x3340000000,0000,0011,0011,0100,0000,0000,0000 0Xcd 循环右移18 位( rotate_4=0 x9)0 x3FC0000000,0000,0011,1111,1100,0000,0000,0000 0XFF 循环右移18 位( rotate_4=0 x9 )0 x1

5、FE00000000,0001,1111,1110,0000,0000,0000,0000 非法立即数0 x55800000000,0101,0101,1000,0000,0000,0000,0000 非法立即数0 x7F8000000,0000,0000,0111,1111,1000,0000,0000 非法立即数0 x39C0000000,0000,0011,1001,1100,0000,0000,0000 0XE7 循环右移18 位( rotate_4=0 x9)0 x1FE800000001,1111,1110,1000,0000,0000,0000,0000 非法立即数4.分析逻辑右

6、移,算术右移,循环右移,带扩展的循环右移它们间的差别。答: LSL 逻辑左移:LSR 逻辑右移:ASR 算术右移:ROR 循环右移:RRX 带扩展的循环右移:5.ARM 数据处理指令具体的寻址方式有哪些,如果程序计数器PC 作为目标寄存器, 会产生什么结果?答:数据处理指令寻址方式具体可分为5 种类型:1)第二操作数为立即数2)第二操作数为寄存器3)第二操作数为寄存器移位方式且移位的31003100310310310C位数为一个5 位立即数4)第二操作数为寄存器移位方式且移位数值放在寄存器中5)第二操作数位寄存器进行RRX 移位得到。 如果 PC ( R15)用作目标寄存器,指令会产生不可预知

7、的结果。6.在 Load/Store 指令寻址中,字,无符号字节的Load/Store 指令寻址和半字,有符号字节寻址,试分析它们之间的差别。答:在 Load/Store 指令寻址中,字,无符号字节的Load/Store 指令寻址中共有以下3 种内存地址构成格式:1)Addressing_mode 中的偏移量为立即数2) Addressing_mode 中的偏移量为寄存器的值3)Addressing_mode 中的偏移量通过寄存器移位得到半字,有符号字节的Load/Store 指令寻址中共有以下2 种内存地址构成格式:1)Addressing_mode 中的偏移量为立即数2) Addressi

8、ng_mode 中的偏移量为寄存器的值7.块拷贝 Load/Store 指令在实现寄存器组合连续的内存单元中数据传递时,地址的变化方式有哪几种类型,并分析它们的地址变化情况。答:批量 Load/Store 指令在实现寄存器组合连续的内存单元中数据传递时,地址的变化方式有以下 4 种类型:后增 IA (Increment After) :每次数据传送后地址加4;先增 IB (Increment Before) :每次数据传送前地址加4 ;后减 DA (Decrement After) :每次数据传送后地址减4 ;先减 DB (Decrement Before) :每次数据传送前地址减4 ;8.栈

9、操作指令地址的变化方式有哪几种类型,并分析它们的地址变化情况,从而得出栈操作指令寻址和块拷贝Load/Store 指令之间的对应关系。答:根据堆栈指针的指向位置不同和堆栈的生长方向不同,共有4 种类型的堆栈工作方式:满递增堆栈FA:堆栈指针指向最后压入的数据,且由低地址向高地址生成。满递减堆栈FD:堆栈指针指向最后压入的数据,且由高地址向低地址生成。空递增堆栈EA:堆栈指针指向下一个要放入数据的空位置,且由低地址向高地址生成。空递减堆栈ED:堆栈指针指向下一个要放入数据的空位置,且由高地址向低地址生成。9.分析协处理器加载/存储指令的寻址方式种的内存地址索引格式中不同的汇编语法格式下内存地址的

10、计算方法。答: 协处理器加载/存储指令的寻址方式种的内存地址索引格式中,索引格式类似于LDR/STR指令寻址中的立即数作为地址偏移量的形式。Addressing_mode 中的偏移量为8 位立即数的汇编语法格式有以下3 种:?前变址不回写形式: ,#+/-*4 第一个内存地址编号为基地址寄存器Rn 值加上 /减去 imm_offset8 的 4 倍,后续的每一个地址是前一个内存地址加4,直到协处理器发出信号,结束本次数据传输为止。?前变址回写形式: ,#+/-*4 !第一个内存地址编号为基地址寄存器Rn 值加上 /减去 imm_offset8 的 4 倍,后续的每一个地址是前一个内存地址加4,

11、直到协处理器发出信号,结束本次数据传输为止。当指令执行时,生成的地址值将写入基址寄存器。?后变址回写形式: ,#+/-*4内存地址为基址寄存器Rn 的值,当存储器操作完成后,将基地址寄存器Rn 值加上 /减去 imm_offset8 的 4 倍,后续的每一个地址是前一个内存地址加4,直到协处理器发出信号,结束本次数据传输为止。最后将Rn 值加上 /减去 imm_offset8 的 4 倍写回到基址寄存器 Rn(更新基地址寄存器) 。1.写出下列指令的机器码,并分析指令操作功能。MOV R0,R1MOVR1,,0X198ADDEQS R1 ,R2,,0 xABCMPR2,#0XabLDRR0,R

12、1,#4STRR0,R1,R1,LSL #2!LDRHR0,R1,#4LDRSBR0,R2,#-2!STRBR1,R2,#0Xa0LDMIAR0,R1,R2,R8STMDBR0!,R1-R5,R10,R11STMEDSP!R0-R3,LR答:机器码部分略。MOV R0,R1 ;R0-R1MOVR1,,0X198 ;R0-0X198ADDEQS R1 ,R2,,0 xAB ;当 Z=1 时, R1 -R2+0 xAB 并影响标志位CMPR2,#0Xab ;R2-0 xAB ,并影响标志位LDRR0,R1,#4 ; R0-【R1+4】STRR0,R1,R1,LSL #2! ; 【R1+R1*4 】

13、 -R0,R1=R1+R1*4LDRHR0,R1,#4 ; R0-【R1+4】半字, R0 的高 16 位清零LDRSBR0,R2,#-2! ;R0-【R2-2】字节, R0 有符号扩展为32 位, R2=R2-2STRBR1,R2,#0Xa0 ; 【R2+0Xa0 】 -R1 低 8 位,LDMIAR0,R1,R2,R8 ;将内存单元【R0】【R+11】以字为单位读取到R1,R2,R8 中STMDBR0!,R1-R5,R10,R11将寄存器 R1R5,R10,R11 的值以字为单位依次写入【R0】中,每写一个字之前R0=R0-4STMEDSP!R0-R3,LR将寄存器 R0R3, LR 的的值以字为单位依次写入【SP】中,每写一个字之后SP=SP-4

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件 > 初中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号