西华师范大学嵌入式测试题_第1页
西华师范大学嵌入式测试题_第2页
西华师范大学嵌入式测试题_第3页
西华师范大学嵌入式测试题_第4页
西华师范大学嵌入式测试题_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、填空题(每空 2 分,共 24分)1、ARM7接受的是三级流水技术,指令分为三个阶段执行取指、译码、执行。2、ARM支持两个指令集, 分别为 ARM指令集 、 Thumb指令集 ,状态寄存器CPSR的 IRQ 、 FIQ位反映了当前状态中断把握,状态寄存器CPSR的  T   位反映了处理器运行不同指令的当前状态两种存储字数据,分别是大端格式小端格式 3、在用ARM汇编编程时,其寄存器有多个别名,通常PC是指 R15 、LR 是指 R14 、SP是指 R13 。4、计算机有CISC和RISC两种类型,以ARM微处理器为核心的计算机

2、属于RISC 类型,其指令长度为 32位 和16位 支持字节,半字,字三种数据类型 二、指令题(每小题6分,共18分)1、写一条 ARM 指令,完成操作R0=R1/16。MOV R0,R1,LSR #42、实现了R0=R1+R2*4ADD R0,R1,R2,LSL #23、对R0中的低8位清零,其他位保持不变BIC R0,R0,#0x000000FF AND R0,R0,#0xFFFFFF00三、程序题(每小题10分,共40分)1、实现1到100的累加,结果放到R3中MOV R5,#99MOV R3,#1MOV R2,#2LOOP: ADD R3,R3,R2 ADD R2,R2,#1 SUBS

3、 R5,R5,#1 BNE LOOP2、写一段 ARM汇编程序:对地址0x1000开头的全部元素进行累加,直到碰上零值元素,结果放在r4中。MOV R4, #0 MOV R0, #0x1000LOOP: LDR R1, R0, #4 CMP R1,#0 BEQ enADDR4, R4, R1BNE LOOPen END3、有如下程序段,标注出每条指令的作用,并说明程序功能。 MOVR0,#0x3000 LDRR1,R0LDRR2,R0,#4 CMPR1,R2MOVGTR1,#1MOVLT R1,# -1MOVEQR1,#0STRR1,R0,#8 4、地址0x21AB2000开头的15数据,分别

4、与0xACB11100地址开头的15个字数据相减,记录大于零的个数存入R4,小于零的个数存入R5,等于零的个数存入R6.MOV R4,#0MOV R5,#0MOV R6,#0MOV R7,#15MOV R0,#0x21AB2000MOV R1,#0xACB11100LOOP: LDR R2,R0 LDR R3,R1 SUBS R8,R2,R3 ADDGT R4,R4,#1 ADDLT R5,R5,#1 ADDEQ R6,R6,#1SUBS R7,R7,#1BNE LOOP用跳转比较R1,R2(R1>R2(R3-1)(R1<R2(R4-1)SU1:SUBR3,R3#1MOV PC,L

5、RSU2:R4,R4,#1 MOV PC,LRCMP R1,R2BLGT SU1BLLT SU2END或者CMP R1,R2SUBGT R3,R3,#1SUBLT R4,R4,#1四、简答题(每小题9,共18分) 1、R13R15寄存器分别称为什么寄存器,各有何特殊用途?R13用作数据堆栈指针(SP),保证特别发生后程序的正常执行R14称为链接寄存器(LR),它用于保存子程序的返回地址 R15是程序计数器(PC),从R15中读取的值正是处理器刚要取指的地址2、进入特别的处理方式及特别的返回?进入特别:(1)将下一条指令地址存入相应的连接寄存器LR,以便程序在处理特别返回时能从正确的位

6、置从新开头执行。(2)将CPSR值复制到相应的SPSR中。 (3)依据特别类型,强制设置CPSR的运行模式位。(4)强制PC从相关的特别向量地址取下一条指令执行,从而跳转到相应的特别处理程序处。退出特别: (1)将连接寄存器LR的值减去相应的偏移量后送到PC中。       (2)将SPSR复制回CPSR中。     (3)若在静茹特别处理时设置了中断禁止位,要在此清除。3.ARM处理器的工作模式有哪几种?答:1)用户模式2)快速中断模式3)外部中断模式4

7、)管理模式 5)数据访问中止模式6)系统模式7)未定义指中止模式4.Thumb指令与ARM指令性能比较,分别有什么优缺点。答:Thumb代码所需的存储空间约为ARM代码的60%70%Thumb代码使用的指令数比ARM代码多30%40%若使用32位的存储器,ARM代码比Thumb代码快约40%若使用16位的存储器,Thumb代码比ARM代码快约40%50%在ARM代码相比较,使用Thumb代码,存储器的功耗会降低约30%分类: ARM7系列ARM9 系列 ARM9E 系列  ARM10E 系列 ARM11系列

8、0; Cortex 系列  SecurCore 系列  2.地址0x2000开头的20数据,分别与0x1100比较,大于的乘2,小于乘3,等于乘4后存回原来的位置。MOV R5,#20MOV R2,#0x2000MOV R4,#0x2000LOOP: LDR R3,R2,#4 CMP R3,#0x1100 MOVGT R3,R3,LSL,#1 ADDLT R3,R3,R3,LSL,#1 MOVEQ R3,R3,LSL,#2STR R3,R4 ,#4SUBS R,5,R5,#1BNE LOOP3.写一段 ARM汇编程序实现:把

9、以0x4000CB00地址开头10个32位数据减去以地址0x3000AC00地址开头的10个32位数据后,两组数据一对一互减后,比较与零的大小,记录非零的个数,存放到R8中MOV R5,#10MOV R8,#0MOV R0,#0x4000CB00MOV R1,#0x4000AC00LOOP: LDR R2,R0 #4 LDR R3,R1 #4 CMP R2,R3 ADDNE R8,R8,#1 SUBS R5,R5,#1 BNE LOOP4.编程实现:把以0x1002AA10地址开头20个32位数据低5位清零后,把结果存放于以0x1022A230开头的地址空间MOV R3,20MOV R0,#0

10、x1002AA10MOV R1,#0x1022A230LOOP: LDR R2,R0 #4 BIC R2,R2 #0x0000001F/AND R2,R2 #0xFFFFFFF0 STR R2,R1 #4SUBS R3,R3,#1BNE LOOPEND5.用ARM汇编指令写出实现64位加法和64位减法的代码段,使用的寄存器请自行安排。64位 R1(高) R0(低)64位 R3(高) R2(低)结果存放入 R5,R4加法:ADDS R4,R2,R0ADC R5,R3,R1减法:SUBS R4,R2,R0SBC R5,R3,R16.使用LDR指令读取0x40003100上的数据,将数据加1,若结果

11、小于10则使用STR指令把结果写回原地址,若结果大于等于10,则把0写回原地址。然后再次读取0x40003100上的数据,将数据加1,推断结果是否小于10周而复始循环 EQU 0x40003100  AREA Example2,CODE,READONLY  ENTRY  CODE32  START:LDR R1,=COUNT  MOV R0,#0   STR R0,R1  LOOP: LDR R1

12、,=COUNT LDR R0,R1  ADD R0,R0,#1 CMP R0,#10 MOVHS R0,#0  STR R0,R1    B LOOP END7.实现两个寄存器相加AREA Example1,CODE,READONLY  ENTRY  CODE32  START:MOV R0,#0MOV R1,#10LOOP:BL ADD_SUBB LOOP

13、ADD_SUB:ADDS R0,R0,R1MOV PL,LREND7.定义一个全局数字变量count初始值为1,然后读取0xBC00AA00地址空间里的数据,把这些数据放入首地址0xCC001D00的空间中,当count的值等于10的时候,读取和存储结束,把字符串:“finish”存入变量STR中打开IRQ和FIQ中断MRS RO,CPSRAND R0,R0,#0x3FMSR CPSR_C,R0打开IRQ和FIQ中断开关;interrupt controllerICMR EQU OX40d00004init_ICMR EQU OX00000010开启中断源,设置屏蔽寄存器ICMR;ldr r1

14、, =ICMRldr r2, =init_ICMRstr r2,r1在ICMR里,键盘中断位是第5位,设置1即可ICMR 5=1ldr r11,=REG_ICPRldr r4,r11mov r5,#0x40000000mov r7,#0x5handleidentifyloopand r6,r4,r5cmp r6,#0x0bne interruptidentifymov r5,r5,LSR #0x1sub r7,r7,#0x1cmp r7,#0x0bne handleidentifyloop由于 OS Timer有 4个定时器,所以这里假设只使用4 号定时器,定义以下符号:osTimer_OSM

15、R3EQU 0x40a0000cosTimer_OSCR EQU 0x40a00010osTimer_OSSR EQU 0x40a00014osTimer_OIEREQU 0x40a0001Cint_ICPR EQU 0x40d00010置定时时间,配置寄存器OSCR,OSMR3ldr r1,=osTimer_OSCRldr r2,=osTimer_OSMR3ldr r0,r1add r0,r0,#0x100000str r0,r2OSCR的值加上定时时间0x100000,存入OSMR3开启 4号定时器中断功能,配置寄存器 OIER,OSSRldr r1,=osTimer_OIERmov r0

16、,#0x8str r0,r1ldr r10,=osTimer_OSSRldr r0,r10str r0,r104号定时器中断大事是否发生。ldr r11,=int_ICPR; ldr r4,r11mov r5,#0x20000000tstr4,r5关闭 4号定时中断ldr r11,=osTimer_OIERldr r4,r11and r4,r4,#07strr4,r11ldr r11,=osTimer_OSSRldr r4,r11orr r4,r4,#0x80strr4,r11变量赋值:LCLL LOOP LOOP:SET TRUE真1.地址0x2000开头的20数据,分别与0x1100比较,大于的乘2,小于乘3,等于乘4后存回原来的位置。2.写一段 ARM汇编程序实现:把以0x4000CB00地址开头10个32位数据减去以地址0x3000AC00地址开头的10个32位数据后,两组数据一对一互减后,比较与零的大小,记录非零的个数,存放到R8中3编程实现:把以0x1002AA10地址开头20个32位数据低5位清零后,把结果存放于以0x1022A230开头的地址空间4用ARM汇编指令写出实现64位加法和64位减法的代码段,使用的寄存器请自行安排。假定低32位数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论