嵌入式系统概论课堂练习Word文件下载.docx

上传人:b****2 文档编号:5823144 上传时间:2023-05-05 格式:DOCX 页数:10 大小:18.49KB
下载 相关 举报
嵌入式系统概论课堂练习Word文件下载.docx_第1页
第1页 / 共10页
嵌入式系统概论课堂练习Word文件下载.docx_第2页
第2页 / 共10页
嵌入式系统概论课堂练习Word文件下载.docx_第3页
第3页 / 共10页
嵌入式系统概论课堂练习Word文件下载.docx_第4页
第4页 / 共10页
嵌入式系统概论课堂练习Word文件下载.docx_第5页
第5页 / 共10页
嵌入式系统概论课堂练习Word文件下载.docx_第6页
第6页 / 共10页
嵌入式系统概论课堂练习Word文件下载.docx_第7页
第7页 / 共10页
嵌入式系统概论课堂练习Word文件下载.docx_第8页
第8页 / 共10页
嵌入式系统概论课堂练习Word文件下载.docx_第9页
第9页 / 共10页
嵌入式系统概论课堂练习Word文件下载.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

嵌入式系统概论课堂练习Word文件下载.docx

《嵌入式系统概论课堂练习Word文件下载.docx》由会员分享,可在线阅读,更多相关《嵌入式系统概论课堂练习Word文件下载.docx(10页珍藏版)》请在冰点文库上搜索。

嵌入式系统概论课堂练习Word文件下载.docx

5).将R0+R2地址处的数据读出,保存到R1中

LDRR1,[R0,R2]

6).将R1中数据保存到R0+R2地址处

STRR1,[R0,R2]

7).将R0-R2地址处的数据读出,保存到R1中

LDRR1,[R0,-R2]

8).将R1中的数据保存到R0-R2地址处

STRR1,[R0,-R2]

3、写一条ARM指令,完成操作r1=r2*3

ADDR1,R2,R2,LSL#1

4、初始值R1=23H,R2=0FH执行指令BICR0,R1,R2,LSL#1后,寄存器R0,R1的值分别是多少?

R0=21H,R1=23H

 

二、指令操作

1.ARM7TDMI(-S)有几种寻址方式?

LDRR1,[R0,#0x08]属于哪种寻址方式?

1.寄存器寻址

2.立即寻址;

3.寄存器移位寻址;

4.寄存器间接寻址;

5.基址加偏址寻址;

6.多寄存器寻址;

7.堆栈寻址;

8.块复制寻址;

9.相对寻址;

LDRR1,[R0,#0x08]属于基址加偏址寻址。

2.ARM指令的条件码有多少个?

默认条件码是什么?

16条,默认条件码是AL。

3.ARM指令中第二个操作数有哪几种形式?

举例5个8位图立即数。

(1)立即数;

(2)寄存器;

(3)寄存器及移位常数;

0x3FC(0xFF<

<

2)、0、0xF0000000(0xF0<

24)、200(0xC8)、0xF0000001(0x1F<

28)

4.CMP指令的操作是什么?

写一个程序,判断R1的值是否大于0x30,是则将R1减去0x30。

CMP指令将寄存器Rn的值减去operand2的值,

根据操作的结果更新CPSR中的相应条件标志位,

以便后面的指令根据相应的条件标志来判断是否执行。

CMPR1,#0x30

SUBHIR1,R1,#0x30

5.调用子程序是用B还是用BL指令?

请写出返回子程序的指令?

BL指令用于子程序调用。

MOVPC,LR

6.请指出LDR伪指令的用法。

指令格式与LDR加载指令的区别是什么?

LDR伪指令用于加载32位的立即数或一个地址值到指定寄存器。

第二个数为地址表达式。

7.将R0最后4位数据保留,并影响标志位

ANDSR0,R0,#0x0F

8.将R0的1,3,5位置1

ORRR0,R0,#0x2A

9.将R0的1,3,5位置0

BICR0,R0,#0x2A

三、解释应用

1、说明指令STMIAr12!

{r0-r11}的操作功能。

答:

将R0至R11共12个寄存器中的32位数据,存储到R12地址指针为起始地址的内存中,地址的操作方式是先操作、后增加,并更新地址。

2、简单说明ARM7TDMI的含义。

64位乘法指令(带M后缀的)、

支持片上调试(带D后缀的)、

高密度16位的Thumb指令机扩展(带T后缀的)

EmbededICE观察点硬件(带I后缀的)

3、什么是小端和大端存储器组织?

1)小端存储器组织是较高的有效字节存放在较高的存储器地址,较低的有效字节存放在较低的存储器地址。

2)大端存储器组织是较高的有效字节存放在较低的存储器地址,较低的有效字节存放在较高的存储器地址。

4、分别列举ARM的处理器模式和状态

状态:

ARM状态32位,这种状态下执行的是字方式的ARM指令

Thumb状态16位,这种状态下执行半字方式的Thumb指令

Thumb-2状态可以以执行16位或32位混合的Thumb-2指令

Thumb-2EE状态V7以后新定义的可实时编译的指令集执行环境

模式:

用户模式、快中断模式、中断模式、管理模式、中止模式、未定义模式和系统模式。

5、简单叙述CPSR寄存器和SPSR寄存器的作用,以及CPSR各状态位的作用是什么。

1)CPSR包含条件码标志、中断禁止位、当前处理器模式以及其它状态和控制信息。

所有处理器模式下都可以访问当前的程序状态寄存器CPSR。

2)在每种异常模式下都有一个对应的物理寄存器——程序状态保存寄存器SPSR。

当异常出现时,SPSR用于保存CPSR的状态,以便异常返回后恢复异常发生时的工作状态。

6、请指出MOV指令与LDR加载指令的区别及用途。

1)、MOV将8位图(pattern)立即数或寄存器(operand2)传送到目标寄存器(Rd),可用于移位运算等操作。

2)、LDR读取指定地址上的存储器单元内容,执行条件AL.

7、、采用多寄存器寻址方式,可以用一条指令完成传送最多16个通用寄存器的值。

请解释以下指令的含义:

LDMIAR0,{R1,R2,R3,R4};

该指令的后缀IA表示在每次执行完加载/存储操作后,R0按字长度增加,因此,指令可将R0所指的连续存储单元的值传送到R1~R4。

指令执行过程如下:

R1←[R0]

R2←[R0+4]

R3←[R0+8]

R4←[R0+12]

四、程序设计题

1.把下面的C代码转换成汇编代码。

数组a和b分别存放在以0x4000和0x5000为起始地址的存储区内,类型为long(即32位)。

把编写的汇编语言进行编译连接,并进行调试。

for(i=0;

i<

8;

i++)

{

a[i]=b[7-i];

}

2、、用ARM编程实现如下功能:

;

for(i=0;

i<

10;

i++)

;

{

x++;

}

r0=x,r2=i

ARM程序如下:

MOVR0,#0

MOVR2,#0

FOR_LP

CMPR2,#10

BHSFOR_END

ADDR0,R0,#1

ADDR2,R2,#1

BFOR_LP

FOR_END

NOP

3、写一段ARM汇编程序:

循环累加队列myarray中的所有元素,直到碰上零值元素,结果放在r4中。

程序框架如下,补充代码完成上述功能。

AREAtotal,CODE,READONLY

ENTRY

start

MOVr4,#0

ADRr0,myarray

在此补充代码

loop

LDRr1,[r0],#4

ADDr4,r4,r1

CMPr1,#0

BNEloop

stop

Bstop

myarray

DCD0x11

DCD0x22

……

DCD0x0

END

4、、编写程序将R0和R1的内容相加的结果放入R2,将R0和R1的内容相减的结果放入R3,将R0*2和R1的内容相加的结果放入R4。

AREAExamplel,CODE,READONLY;

声明代码段Examplel

ENTRY;

标识程序入口

CODE32;

声明32位ARM指令

STARTMOVR0,#0;

设置参数

MOVR1,#10

LOOPBLADD_SUB;

调用子程序ADD_SUB

BLOOP;

跳转到LOOP

ADD_SUB

ADDSR2,R0,R1

SUBSR3,R0,R1

MOVR0,R0,LSL#1

ADDSR4,R0,R1

MOVPC,LR;

子程序返回

END;

文件结束

5、用STMFD/LDMFD,MUL指令编写一个整数乘方的子程序,然后使用BL指令调用子程序计算Xn的值。

原理:

Xn=X*X*………*X,其中相乘的X个数为n个,先将X的值装入R0和R1中,使用R2作计数器,循环次数n-1次R0=R0*R1,运算结果保存在R0中:

编程如下:

MAINROUTINE

XEQU9

nEQU8

AREAMyPro,CODE,READONLY

ENTRY

CODE32

START

LDRSP,=0x40003F00

LDRR0,=X

LDRR1,=n

BLPOW

HALTBHALT

POWSUBROUTINE

INPUTR0,R1

OUTPUTR0

POW

STMFDSP!

{R1-R12,LR}

MOVSR2,R1

MOVEQR0,#1

BEQPOW_END

MOVR1,R0

SUBR2,R2,#1

POW_CONTI

BLDO_MUL

SUBSR2,R2,#1

BNEPOW_CONTI

POW_END

LDMFDSP!

{R1-R12,LR}

DO_MULSUBROUTINE

DO_MUL

MULR0,R1,R0

MOVPC,LR

END

使能IRQ中断例程:

ENABLE_IRQ

MRSR0,CPSR

BICR0,R0,#0x80

MSRCPSR_c,R0

MOVPC,LR

禁能IRQ中断例程:

DISABLE_IRQ

ORRR0,R0,#0x80

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 商业计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2