嵌入式系统原理及应用题目要求+程序代码Word格式文档下载.docx

上传人:b****3 文档编号:14501651 上传时间:2022-10-23 格式:DOCX 页数:24 大小:28.75KB
下载 相关 举报
嵌入式系统原理及应用题目要求+程序代码Word格式文档下载.docx_第1页
第1页 / 共24页
嵌入式系统原理及应用题目要求+程序代码Word格式文档下载.docx_第2页
第2页 / 共24页
嵌入式系统原理及应用题目要求+程序代码Word格式文档下载.docx_第3页
第3页 / 共24页
嵌入式系统原理及应用题目要求+程序代码Word格式文档下载.docx_第4页
第4页 / 共24页
嵌入式系统原理及应用题目要求+程序代码Word格式文档下载.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

嵌入式系统原理及应用题目要求+程序代码Word格式文档下载.docx

《嵌入式系统原理及应用题目要求+程序代码Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《嵌入式系统原理及应用题目要求+程序代码Word格式文档下载.docx(24页珍藏版)》请在冰豆网上搜索。

嵌入式系统原理及应用题目要求+程序代码Word格式文档下载.docx

问:

该程序完成了什么功能?

答:

该程序完成的功能:

先把数据区堆栈中的1~7这七个数据送给R0~R0寄存器,然后又把寄存器列表中的R0~R7存入堆栈,然后又依次把堆栈中的1~7这七个数送给R3~R6,R0~R2,然后程序就结束了,在取数和存数的过程中。

堆栈指针sp由0x0000变到0x8030再到0x804c,然后到0x8030,然后依次加4,最后到0x804c;

程序计数器R15(PC)由0x8000地址依次加4。

二、LDMFD,STMFD伪代码实现的原理。

指令STMFD和LDMFD分析:

根据ATPCS规则,我们一般使用FD(FullDescending)类型的数据栈!

所以经常使用的指令就有STMFD和LDMFD,

通过ARM对于栈操作和批量Load/Store指令寻址方式,可以知道指令STMFD和LDMFD的地址计算方法:

STMFD指令的寻址方式为事后递减方式(DB)

 

而DB寻址方式实际内存地址为:

start_address=Rn-(Number_Of_Set_Bits_In(register_list)*4)

end_address=Rn-4

STM指令操作的伪代码:

ifConditionPassed(cond)then

address=start_address

fori=0to15

ifregister_list[i]==1

Memory[address]=Ri

address=address+4

有上面两个伪代码可以得出STMFDSP!

,{R0-R7,LR}的伪代码如下:

SP=SP-9×

4;

address= 

SP;

fori=0to7

Memory[address]=Ri;

address 

=address+4;

Memory[address]=LR;

LDMFD指令的寻址方式为事后递增方式(IA)

IA内存的实际地址的伪代码

start_address=Rn

end_address=Rn+(Number_of_set_bits_in(register_list)*4)-4

LDM指令操作的伪代码(未考虑PC寄存器):

Ri=Memory[address,4]

所以LDMFDSP!

,{R0-R7,PC}^(;

恢复现场,异常处理返回)伪代码是:

address=SP;

fori=0to7

Ri=Memory[address,4]

address=address+4;

SP=address;

作业2

一、用移位操作完成(R0)*10运算。

参考程序:

movR0,#10

movR1,R0,LSL#3

movR2,R0,LSL#1

addR3,R1,R2

stop:

Bstop

二、已知数据缓冲池中有两组数据x和y,每组中有3个数据(例如x:

90,60,30,y:

60,40,20),将x中的数据减去y中的数据,最后将两组数相减得到的结果送回到x中去!

参考代码:

LDRSP,=x

{R0-R2}

{R3-R5}

subR2,R2,R5

SubR1,R1,R4

SubR0,R0,R3

x:

.long80,90,100

y:

.long10,20,30

作业3

已知R0和R1的值,要求保留R0的低16位,保留R1的高16位状态,最后将这两个值组成一个新的数送给R3.

参考代码:

LDRR0,=0x12345678

LDRR1,=0x87654321

ldrR2,=0xffff

LDRR4,=0xffff0000

ANDR0,R0,R2

ANDR1,R1,R4

ORRR3,R0,R1

作业4

在ARMGNU环境下用ARM汇编语言编程序实现

LDRR0,=x

LDRR1,=y

LDRR2,[R0]

CMPR2,#0

BEQZERO

BGTZHENG

BLTFU

ZERO:

MOVR3,#0

STRR3,[R1]

ZHENG:

movR3,R2

FU:

mvnR3,R2

movR4,#0x1

addR3,R3,R4

Bstop

.long-10

.long0

作业5

求20的阶乘:

64位结果放在【R9:

R8】中,R9放高32位,R放低32位

思路:

每轮乘法操作中,低32位(R8)乘以X(R0)后,结果的低32位放在R8中,高32位放在R9中;

高32位R1乘以X(R0)后再加上R9,得到64位结果的高32位,存入R9

MOVR8,#20@低32位初始化为20

MOVR9,#0@高位初始化为0

SUBR0,R8,#1@初始化计数器

Loop:

MOVR1,R9@暂存高位值

UMULLR8,R9,R0,R8@[R9:

R8]=R0*R8

MLAR9,R1,R0,R9@R9=R1*R0+R9

SUBSR0,R0,#1@计数器递减

BNELoop@计数器不为0继续循环

Stop:

Bstop

二、已知a=R0,b=R1.

while(a<

>

b)do

if(a>

b)then

a=a-b

else

a=b-a

endif

endwhile

result=a

根据以上代码写出对应的汇编代码:

CMPR0,R1

CMPNER0,R1

SubGTR0,R0,R1

SubLTR0,R1,R0

作业6

1.将下面的ADS环境下的程序代码改写成GUN环境下的程序代码。

(调试时使用F11stepinto,注意和F10stepover的区别)

AREAJump,CODE,READONLY

numEQU4;

函数地址表内容的个数

ENTRY

CODE32

start

LDRR0,=choice;

R0指向存储区的choice单元

LDRR0,[R0];

设置第一个参数:

选择执行哪一个函数

MOVR1,#16;

设置第1个操作数

MOVR2,#2;

设置第2个操作数

BLarithfunc;

调用子程序arithfunc

stop

MOVR0,#0x18;

程序结束返回编译器调试环境

LDRR1,=0x20026

SWI0x123456

arithfunc

CMPR0,#num;

比较R0的值是否超过函数地址表的个数

MOVHSPC,LR;

如果大于,那么就返回到标号stop处

ADRR3,JumpTable;

将函数地址表的地址作为基地址

LDRPC,[R3,R0,LSL#2];

根据R0参数进入对应的子程序

JumpTable;

函数地址表的入口基地址

DCDDoAdd;

加法子程序

DCDDoSub;

减法子程序

DCDDoMul;

乘法子程序

DCDDoDiv;

除法子程序

DoAdd

ADDR0,R1,R2;

R0=R1+R2

MOVPC,LR;

返回

DoSub

SUBR0,R1,R2;

R0=R1-R2

DoMul

MOVR0,R1,LSLR2;

R0=R1<

<

R2

MOVPC,LR;

DoDiv

MOVR0,R1,LSRR2;

R0=R1>

>

AREANUM,DATA,READWRITE

choiceDCD3;

0:

表示选择加法子程序1:

表示选择减法子程序

;

2:

表示选择乘法子程序3:

表示选择除法子程序

END

.equnum,4@函数地址表内容的个数

LDRR0,=choice@R0指向存储区的choice单元

LDRR0,[R0]@设置第一个参数:

MOVR1,#16@设置第1个操作数

MOVR2,#2@设置第2个操作数

Blarithfunc@调用子程序arithfunc

arithfunc:

CMPR0,#num@比较R0的值是否超过函数地址表的个数

MOVHSPC,LR@如果大于,那么就返回到标号stop处

ADRR3,JumpTable@将函数地址表的地址作为基地址

LDRPC,[R3,R0,LSL#2]@根据R0参数进入对应的子程序

JumpTable:

@函数地址表的入口基地址

.longDoAdd@加法子程序

.longDoSub@减法子程序

.longDoMul@乘法子程序

.longDoDiv@除法子程序

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

当前位置:首页 > 外语学习 > 法语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1