77范文网 - 专业文章范例文档资料分享平台

ARM9_期末复习题

来源:网络收集 时间:2018-11-12 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

AREA JUMP,CODE,READONLY

NUM EQU 2

ENTRY

START MOV R0,0(#0)

MOV R1,#3

MOV R2,#2 BL FUNC

FUNC CMP R0,#NUM MOVCS PC,LR ADR R3,JTABLE

LDR PC,[R3,R0,LSR #2] JTABLE DCD DOADD DCD DOSUB DOADD ADD R0,R1,R2 MOV PC,LR DOSUB SUB R0,R1,R2 MOV PC,LR END

通过跳转表指令实现两个数2+3的求和。

43、ARM处理器寄存器R0中的数据内容为0x11223344,将其存放到内存地址为0x10000开始的内存单元中,采用小端存储格式和大端存储格式存储,则以内存地址0x10000开始的内存单元中内容分别是多少。

AREA f,CODE,READONLY ENTRY CODE32 START

LDR R0,=0x11223344 LDR R1,=0x10000 STR R0,[R1] B START END

0x1000开始的内存单元中的小端存储格式 :0x44, 0x33, 0x22, 0x11 0x1000开始的内存单元中的大端存储格式 :0x11, 0x22, 0x33, 0x44 44、分析下面程序的执行情况

MOV R0,#0

MOV R1,#10 MOV R2,#1 L ADD R0,R0,R2 ADD R2,R2,#1 SUBS R1,R1,#1

BNE L 完成(1+2+3+4+5+6+7+8+9+10) 45、分析下面程序实现的功能

6

COUNT EQU 0x40003100

AREA Example2,CODE,READONLY ENTRY CODE32 START LDR R1,=COUNT MOV R0,#0 STR R0,[R1]

LOOP LDR R1,=COUNT

LDR R0,[R1] ADD R0,R0,#1 CMP R0,#10 MOVHI R0,#0 STR R0,[R1] B LOOP END

使用LDR指令读取0x40003100上的数据,将数据加1,若结果大于10,则把0写回原地址;若结果小于等于10则使用STR指令把结果写回原地址……周而复此循环;

46、切换处理器方式有哪些方法?

?可以通过程序状态寄存器(PSR)的控制位T位来切换。其中T = 0时,处理器工作在ARM态;T = 1时,处理器工作在Thumb态。

?根据操作数寄存器的状态位(位[0])来切换。当位[0]为0时,执行BX指令使处理器工作在ARM态;位[0]为1时,执行BX指令使处理器工作在Thumb态。

?当处理器发生异常时,进入异常模式进行切换。把PC放入异常模式链接寄存器中,从异常向量地址开始执行也可以进入ARM状态。 47、下列指令完成的功能是什么?

MOVNES R3,R2,ASR #3 ;R3 = R2/3 ADDS R0,R1,R1,LSL #1 ;R0 = 3R1 RSB R3,R4,#2 ;R3 = 2-R4 LDR R0,[R1,#6] ;[R1+6]->R0

LDR R0,[R1,#6]! ;[R1+6]->R0,R0 = R0+6 LDR R0,[R1],#6 ;[R1]->R0,R1 = R1+6 LDR R0,=expression ;R0 = expression(地址值)

SMULLS R0,R1,R2,R3 ;R2*R3->R0(底32位值),R2*R3->R1(高32位值) MRS R0,CPSR ;把CPSR(当前程序的内容)送到R0中 STM R0,{R1,R4,R2,R3} ;以R0位首地址向其中存入4个值

48、 写出完成下列操作的指令:

1) R0=R1+R2*15/4-R3*5

RSB R2,R2,R2,LSL #4 ADD R0,R1,R2,LSR #2

7

ADD R3,R3,R3,LSL #2 SUB R0,R0,R3

2) 判断bit5是否为0,如果为0则置1

MRS R5,CPSR TST R5,#bit5

ORREQ R5,R5,#0x00000020 ;(BIC取反后相与) MSR CPSR_c, R5

3) 用汇编实现1*2*3…*100

AREA jiecheng,CODE,READONLY CODE32 ENTRY

START

MOV R8, #100 MOV R9, #0 SUB R0,R8,#1

L MOV R1,R9

UMULL R8, R9, R0, R8 MLA R9, R1, R0, R9 SUBS R0, R0, #1 BNE L B START END

49、 在内存单元0x00000030与0x00000034中有2个32位无符号数x,y,

要求计算x+y并将结果存入0x00000028单元。 方法一 :

AREA wb,CODE,READONLY ENTRY CODE32

START

MOV R0, #0x00000030 MOV R1, #0x00000028

LDMIA R0!, {R2, R3} ; ADD R4, R2, R3 STR R4, [R1] B START END

方法二 :

AREA wb,CODE,READONLY ENTRY CODE32

START

MOV R0,#00000034 LDMDA R0!, {R1,R2,R3}

8

ADD R4,R1,R2 STR R4,[R0] B START END

50、 在内存单元0x00000030与0x00000034中有2个32位无符号数x,y,

要求若x>y,则0x00000038单元送1;若x≤y, 则0x00000038单元送0。

AREA wb,CODE,READONLY ENTRY CODE32

START

MOV R0,#0x00000030

LDMIA R0!, {R1, R2} ;源操作数{R1, R2}为多寄存器寻址 CMP R1, R2 MOVHI R3,#1 MOVLS R3,#0 STR R3, [R0] B START END

51、 在内存单元0x00000030与0x00000034中有2个32位无符号数x,y,

要求将x的低8位与y的高24位组合成一个新的数送0x00000038单元中。

AREA wb,CODE,READONLY ENTRY CODE32

START

MOV R0,#0x00000030 LDMIA R0! , {R1,R2} AND R1,R1,#0x000000FF BIC R2,R2,#0x000000FF ORR R3,R1,R2 STR R3,[R0] B START END

52、 从内存0x00FF0000开始的区域内存有6个无符号数,将它们移动到

0x00000030开始的区域。

AREA wb,CODE,READONLY ENTRY CODE32

START

MOV R0,#0x00FF0000 MOV R1,#0x00000030

LDMIA R0! , {R2-R7} ;源操作数{R2-R7}为块拷贝寻址 STMIA R1! , {R2-R7} B START

9

END

53、 从内存0x00FF0000开始的区域内存有6个无符号数,判断其中是否有数

与R0的值相等,若有则将R0清零。

AREA wb,CODE,READONLY ENTRY CODE32

STRAT

MOV R1,#0x00FF0000 MOV R2,#6

L LDR R3,[R1],#4

CMP R3,R0

ANDEQ R0,R0,#0 SUBS R2,R2,#1 BNE L B START END

54、 编程判断(7*Y/4)>(9*X)的大小关系?若大于则R5 = R5&0xFFF00000,

否则R5 = R5|0x000000FF。(设X,Y为无符号整数,X用R0表示,且初值为10,Y用R1表示,初值为20,R5初值为0x0000FF00)

AREA wb,CODE,READONLY ENTRY CODE32

START

MOV R0,#10 MOV R1,#20

MOV R5,#0x0000FF00 RSB R1,R1,R1,LSL #3 MOV R1,R1,LSR #2 ADD R0,R0,R0,LSL #3 CMP R1,R0

LDRHI R6,=0xFFFOOOOO ANDHI R5,R5,R6

ORR R5,R5,#0x000000FF B START END

55、 描述什么是嵌入式系统。(以应用为中心,以计算机技术为基础,软硬件

可裁剪,从而能够适应实际应用中对功能,可靠性,成本,体积,功耗等严格要求的专用计算机系统。)

56、要求:根据原理图,编写实现对LED1、LED2、LED3、LED4轮流闪烁(即:LED1亮、LED2熄灭、LED3亮、LED4熄灭,周而复此),要求具有一定延时(提示:S3C2410主频为200MHz)

10

《ARM体系结构与编程》复习题

1、ARM920T支持7种运行模式,分别为_用户模式_ ,快速中断模式(FIQ),_普通中断模式(IRQ),数据访问中止模式,_管理模式_,_系统模式_,未定义指令模式

2、ARM处理器支持2种指令集, 32 位的ARM指令集和 16 位的Thumb集。 3、ARM920T内核支持___ARM__ ,__Thumb__ 指令集,分别为_32___ ,_16___ 位的指令系统。

4、ARM处理器共有 37 个寄存器, 31 个通用寄存器, 6 个状态寄存器,其中的 (R0-R7) 8 个可以在任何模式下看到。 5、ARM920T体系结构所支持的最大寻址空间 4G B。

6、当ARM处理器发生异常时,其优先级最高的异常是_复位异常_。

7、当处理器发生快速中断FIQ异常时,异常向量地址为 0x0000001C ,当处理器在复位后,异常向量地址为 0x00000000 ,且处理器进入 管理模式 。 8、ARM920T中支持字节(8位),_半字(16位)_ ,_字(32位) 3种数据类型。

9、ARM内核有__37__ 个寄存器,__用户和系统___模式使用寄存器最少。 10、ATPCS规定数据栈为_满递减(FD)_类型,并且对数据栈的操作是__8__字节对齐的。

11、局部变量的存储方式一般是_动态__存储,全局变量一般是__静态__存储。 12、ARM920T体系结构支持两种方法存储字数据,即_大端存储模式_ ,_小端存储模式_。

13、在复位后,ARM处理器处于___管理__ 模式__ARM__ 状态。

14、ARM920T体系结构支持两种方法存储字数据,即 大端存储 格式和 小端存储 格式,其中在 小端存储格式 中,字数据的高字节存放在高地址单元中,而字数据的低字节存放在低地址单元中。

15、CPSR中的低8位控制位中,当T= 1 时,处理器工作在Thumb状态,当T=_0_时,处理器工作在ARM状态。

16、ARM微处理器采用的是RISC(精简指令集)体系结构。 17、在ARM微处理器中,堆栈可分为两种堆栈,即满栈和空栈。

18、伪指令和位操作只在汇编过程中起作用。

19、ARM处理器有哪7种异常。 复位异常 , 未定义指令异常 , 软件中断异

1

常,预取中止异常(取指令存储器中止异常) ,数据中止异常(数据访问存储器中止异常),IRQ(普通中断)异常,FIQ(快速中断)异常。

20、什么是C语言的预处理伪指令?(宏定义,文件包含,条件编译)

C语言中以#开头的那部分指令

21、在ARM32位机中C语言常用的基本整型int在内存单元中占 4 个字节。

依据程序编译器的不同int定义的字节数不同。

常用的单片机编译器,51类单片机的C语言中,int代表2个byte(16位);如果是32位ARM处理器的C语言中,则int代表4个byte(32位)

22、在C语言的库函数中,求字符串长度的函数是什么(strlen()函数)。 23、指令ADD R0,R1,R1,LSL #1完成什么操作?(加法操作R1+2R1 --> R0。把R1中的内容扩大3倍后送给R0。)

24、指令MVN R0,#4执行的结果?(0xFFFFFFFB)

25、指令LDR R0,[R1,#8]实现的功能?(把基址R1的内容加上位移量8后所指的存储单元的内容送到寄存器R0中) 26、分析下列指令是否正确。

MOV R0,#0x8FFA0 ×(#0x8FFA0不合法的8位位图) STRB R2,(R3,#8) × ([R3, #8])

MUL R1,R2,#8 × (#8立即数不能作为乘法指令的任何操作数) LDR R0,[R1],R2,LSL #2 √ SWP R0,R1,R2 ×([R2]) 27、判断合法立即数的方法。(8位位图,即把一个8位的常数通过循环右移偶数位得到的8位常数)

28、LDR R0,[R1,#9]的源操作数(变/基址寻址)与目的操作数(寄存器寻址)的寻址方式。

29、ARM处理器的指令集(ARM指令集、Thumb指令集)有哪些6大类?是否包含除法指令?

ARM处理器的ARM指令集有:跳转指令,数据处理指令,程序状态寄存器访问指令,加载/存储型指令,协处理器指令,异常产生指令。

30、CPSR中如何修改T,MODE位?在程序中的何处修改?在何种模式下修改?

CPSR中的T控制位使用BX指令完成处理器状态的切换(BX指令属分支指令,它会打断流水线状态,实现处理器状态切换)。MRS与MSR配合使用,实现CPSR寄存器的读-修改-写操作。修改I,F,T,MODE位时先将CPSR中的内容通过MRS指令读到通用寄存器中,再将要修改的位所确定的立即数通过MSR指令写入状态寄存器CPSR中,只有在特权模式下才能修改。

通过MRS,MSR两条指令来获取和送回CPSR的值,修改CPSR的位[5:0]的值。异常出现时,可以改变控制位T,在特权模式下修改。

31、在内嵌的SWI和BL中,除了正常的操作数外,还必须增加3个可选的寄存器列表,这三个寄存器列表分别是什么?(LR(子程序链接寄存器),CPSR(当前程

2

序状态寄存器), SPSR(备份程序状态寄存器))

答:第一个寄存器列表中的寄存器用来存放输入的数据;

第二个寄存器列表中的寄存器用来存放返回的数据;

第三个寄存器列表中的寄存器的内容,提供被调用的子程序来用。

32、当处理器发生异常后,ARM处理器执行的操作。(异常出现后,强制从异常类型对应的固定存储器地址(异常向量)开始执行程序。异常模式分组的R14 和SPSR用于保存状态。)

33、汇编程序与C程序的相互调用规则的寄存器规则。(子程序之间通过寄存器r0-r3来传递参数,当多于4个参数时,使用堆栈来传递参数。在子程序中使用r4-r11来保存局部变量。寄存器r12用来保存堆栈指针IP。寄存器r13用作堆栈指针SP。寄存器r14用作链接寄存器LR。寄存器r15作为程序计数器PC) 34、编写完整程序实现数据块拷贝操作,将源数据区Src中的8个字数(0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08),据拷贝到目的地址Dst中(要求利用块拷贝实现)。

AREA fz,CODE,READONLY CODE32 ENTRY START

MOV R0,#8

MOV R0,R0,ASR #2 LDR R1,=Src LDR R2,=Dst L LDMIA R1!,{R3-R6} //块拷贝

STMIA R2!,{R3-R6} //块拷贝 SUBS R0,R0,#1 BNE L B START

Src DCD 0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8 Dst DCD 0,0,0,0,0,0,0,0

END

35、写几条汇编指令,使能FIQ中断。

Enable MRS R0, CPSR

BIC R0, R0, #0x00000040 MSR CPSR_c, R0 MOV PC, LR

使能IRQ中断如下:

3

Enable MRS R0, CPSR

BIC R0, R0, #0x00000080 MSR CPSR_c, R0 MOV PC, LR

37、写汇编程序依次读出表DISP_TABLE中的半字数据(16位即2个字节)。(DISP_TABLE中的半字数据为:0xc0, 0Xf9,0xd0,0x34,0x92,0xe8,0x25,0x65)

AREA dubiao,CODE,READONLY CODE32 ENTRY START

LDR R0,=DISP_TABLE MOV R1,#8

L LDRH R2,[R0],#2

SUBS R1,R1,#1 ;循环次数减一 BNE L B START

DISP_TABLE DCW 0xAB,0xF8,0xC0,0x34,0x92,0xD6,0x25,0x65

END

39、采用汇编程序调用C语言方法完成1*2*3*4*…*n求积

汇编程序如下:

AREA jiecheng,CODE,READONLY ENTRY CODE32 IMPORT jc START

MOV R0,#n ;n是具体的值 BL jc B START END

C语言程序如下:

int jc(int n) {

int ji=1; for(;n>0;n--)

{

ji*=n; }

return ji; }

4

40、采用C语言调用汇编完成1*2*3*4*…*n求积

汇编程序如下:

EXPORT cheng

AREA chengfa,CODE,READONLY ENTRY CODE32

IMPORT main

cheng

MOV R2,R0 MOV R3,#0 SUB R0,R2,#1

L MOV R1,R3

UMULL R2,R3,R0,R2 MLA R3,R1,R0,R3 SUBS R0,R0,#1 BNE L B cheng END

C语言程序如下:

extern int cheng(int n);

int main() {

int a=n; //n是具体的值 cheng(a); while(1); }

启动程序如下:

AREA Startup,CODE,READONLY ENTRY CODE32

START

MOV R13,#0x40000000 BL main END

41、LDR伪指令与LDR加载指令的功能和应用有何区别?举例说明?

LDR伪指令:用于将一个立即数读取到相应的寄存器中,需要用等号(=)来连接地址值。如:LDR R0,=0xFFF00000

LDR加载指令:用于从内存中加载数据到寄存器中。如:LDR R1,[R0]

42、改错并指出程序功能

5

11

VDD33LED1R139470Q98050R140470R1011KGPE11JP9GPH10BEEP1KR141LED2Q118050R142470R1021KGPE12LED3S3C2410AQ108050R143470R1031KGPH4LED4Q128050R1041KGPH6

#include \

// 定义LED控制口 (输出高电平时点亮LED) #define LED1_CON (1<<11) #define LED2_CON (1<<12) #define LED3_CON (1<<4) #define LED4_CON (1<<6)

void DelayNS(uint32 dly) {

uint32 i; for(; dly>0; dly--)

for(i=0; i<50000; i++); }

int main(void) {

rGPECON = 0xFD7FFFFF; rGPHCON = 0x3FDDFF;

while(1) {

rGPEDAT = rGPEDAT|(0x01<<11);

DelayNS(5);

rGPEDAT = rGPEDAT&(~(0x01<<12));

12

/* GPE11口 */ /* GPE12口 */ /* GPH4口 */ /* GPH6口 */

DelayNS(5);

rGPHDAT = rGPHDAT|(0x01<<4);

DelayNS(5);

rGPHDAT = rGPHDAT&(~(0x01<<6)); DelayNS(5);

rGPEDAT = rGPEDAT&(~(0x03<<11)); rGPHDAT = rGPHDAT&(~(0x05<<4)); DelayNS(5);

}

return(0); }

13

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库ARM9_期末复习题在线全文阅读。

ARM9_期末复习题.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/269709.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: