如对您有帮助,欢迎下载支持,谢谢!
大端模式
低位地址 高位地址 0x12 0x34 0x56 0x78
小端模式
低位地址 高位地址
0x78 0x56 0x34 0x12
第四章 ARM7指令集
一、填空题
1、ARM处理器具有9中基本寻址方式,分别为:(寄存器寻址,立即寻址,寄存器移位寻址,寄存器间接寻址,基址寻址,多寄存器寻址,堆栈寻址,块拷贝寻址,相对寻址)。 2、指令MOV R1,R2 采用的是(寄存器寻址)的寻址方式。
3、堆栈是一个按特定顺序进行存取的存储区,操作顺序为“(后进先出)” 。 4、存储器堆栈可分为(向上生长)和(向下生长)两种方式。
5、ARM处理器是典型的RISC处理器,对存储器的访问只能使用加载和存储指令实现。存储器访问指令分为(单寄存器操作指令)和(多寄存器操作指令)。
二、程序阅读题
1、指令MOV R0,R2,LSL #3 ;执行前,各寄存器的值如下,请写出指令执行后,各寄存器的值。
R2 R0
0x01 0x55
9
如对您有帮助,欢迎下载支持,谢谢!
答:指令执行后,各寄存器的值为:
R2 0x01 R0 0x08
2、指令LDMIA R1!,{R2-R7,R12} 执行什么的操作。并给出指令执行前后寄存器的变化情况。 R6 0x?? 0x04 0x4000000C R4 0x?? 0x03 0x40000008 R3 0x?? 0x02 0x40000004 R2 0x?? 0x01 0x40000000
存储器 R1 0x40000000
指令执行前各寄存器的状态
答:(1)将R1指向的单元中的数据读出到R2~R7、R12中(R1自动加4) 。 (2)指令执行后各寄存器的状态如下: R6 0x04 0x04 0x4000000C R4 0x03 0x03 0x40000008 R3 0x02 0x02 0x40000004 R2 0x01 0x01 0x40000000
存储器 R1 0x40000010
指令执行前各寄存器的状态
3、读下面的程序,说明这段程序的功能。 AREA Example1,CODE,READONLY ;声明代码段Example1
10
如对您有帮助,欢迎下载支持,谢谢!
ENTRY ;标识程序入口 CODE32 ;声明32位ARM指令 START MOV R0,#0 ;设置参数 MOV R1,#10
LOOP BL ADD_SUB ;调用子程序ADD_SUB B LOOP ;跳转到LOOP ADD_SUB ADDS R0,R0,R1 ;R0 = R0 + R1 MOV PC,LR ;子程序返回 END ;文件结束
答:实现两个寄存器相加。
4、 R0和R1中有两个32位数,若R0>R1,则R0=R0-R1;若R0 (1)请用CMP, B 和 SUB指令完成上述操作。 (2)请用条件SUB指令完成上述操作。 5、 用合适的指令实现以下功能: a) r0 = 16 b) r1 = r0 * 4 c) r0 = r1 / 16 d) r1 = r2 * 7 6、说明下列指令的功能: a) ADDS r0, r1, r1, LSL #2 b) RSB r2, r1, #0 7、下列指令序列完成什么功能? ADD r0, r1, r1, LSL #1 SUB r0, r0, r1, LSL #4 ADD r0, r0, r1, LSL #7 8、对比说明ADR、ADRL与LDR的区别与联系。 9、编写一段C语言与汇编语言的混合编程代码,在C语言程序中调用汇编语言代码,完成字符串STR1和STR2内容的互换。 10、下列语句中,那些是无效的汇编语言指令?并指出无效指令中的错误。 1)ABC: MOV R1,#2 2) Count RN R0 11 如对您有帮助,欢迎下载支持,谢谢! 3) USR_STACK Equ 64 4)START LDR R0,=0x1123456 ;R0=bx123456H 5)START LDR R0,=0x1123456 6) START MOV R0,#1 MOV R2,#3 11、试编写程序,实现计算2+4+6+8+…+2N的值。 12、试编写汇编程序实现32位除法功能。 第五章 基于ARM的硬件系统设计 1、嵌入式最小系统的结构图。 答: 12

