电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

2024年嵌入式实验报告VIP免费

2024年嵌入式实验报告_第1页
1/21
2024年嵌入式实验报告_第2页
2/21
2024年嵌入式实验报告_第3页
3/21
3.1试验一ARM汇编指令试验1---简朴数据搬移试验1.例题源程序:部分注释:AREA用于申明一种只读或读写的代码或数据段,ENTRY申明程序入口,CODE32用于申明如下代码为32位ARM指令,END程序结束。STRR0,[SP];将R0中的值放到SP中去LDRR1,[SP];将SP中的值赋给R1STRR0,[SP,#4];先执行SP+4,再将寄存器R0内容复制到SP指向的存储器ADDR0,R0,R1;将R0+R1的值赋给R0成果截图:成果分析:x和y的值分别为45,64,程序实现过程是将x放进R1,y放进R0,再将x+y放进R0,因此R0中成果为109,即为6D。R1中成果为45,即为2D。2.练习题设计思绪:运用R0做基地址,将R1,R2分别存入第一种单元的内容,运用R3做循环计数器,运用R4遍历读取第2至最终一种数据,假如R1的数据不不小于新读入的R4数据则将R4的内容存入R1,假如R2的内容不小于R4的内容则将R4的内容存入R2。遍历完毕之后,R1将寄存最大数据,R2将寄存最小数据。源程序:AREAInit,CODE,READONLYENTRYCODE32startMOVSP,#0X400;给指针赋初值LDRR0,=DataBuf;把数据定义表格中的值赋给R0LDRR1,[R0],#4;取数MOVR2,R1;R1赋给R2MOVR3,#8;R3做循环计数器,赋值为8compareSUBR3,R3,#1;实现R3自减CMPR3,#0;比较R3和0,确定循环与否结束BEQover;若R3等于0,结束循环LDRR4,[R0],#4CMPR4,R1;比较R4和R1,找大值BLTsmall1;不不小于跳转MOVR1,R4small1CMPR4,R2;比较R4和R2,找小值BLTsmall2;不不小于跳转BGTcompare;不小于跳转small2MOVR2,R4BcompareoverB.AREADatapool,DATA,READWRITEDataBufDCD11,-2,35,47,96,63,128,-23;数据的定义采用伪指令DCD实现END成果截图:成果分析:遍历完毕后,数据的最大值和最小值都已经找出,其中最大值寄存在R1中,最小值寄存在R2中。由成果可知,R1中为0x00000080,即为128,R2中为0xFFFFFFE9,即为-23。试验3.2ARM汇编指令试验2-字符串拷贝试验1、例题源程序:AREAInit,CODE,READONLYENTRYCODE32STARTMOVSP,#0x400;堆栈地址LDRR0,=Src;将初始字符串地址给R0LDRR1,=Dst;将目的字符串地址给R1MOVR3,#0;给R3赋值0strcopyLDRBR2,[R0],#1;把R0给R2后加一CMPR2,#0;比较R2和0,检测字符串与否结束BEQendcopy;等于跳转到结束STRBR2,[R1],#1;把R2给R1后R1+1ADDR3,R3,#1;R3自加Bstrcopy;循环endcopyLDRR0,=ByteNum;把字符数的地址给R0STRR3,[R0];把R3的值放到R0中B.AREADatapool,DATA,READWRITESrcDCB"string\0";初始字符串存储空间DstDCB0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0;目的字符串存储空间ByteNumDCD0END试验截图:成果分析:由程序可知,初始状态是R0寄存起始字符串,R1寄存目的字符串,R3赋初值0,拷贝字符串过程中,R3作为计数变量,每次自增一,拷贝借用R2做中转寄存器,每次复制到R2一种字符都要检查与否为0,若为0则字符串已经拷贝完毕,跳转到endcopy,若不为0则继续循环拷贝,直到结束。最终将技术变量的值寄存到到R0中。试验成果截图可知,R0中为字符串长度,R1为目的字符串。2、练习题设计思绪:R4~R11起始值为1~8,每次加操作后把R4~R11的内容放入SP栈中,SP初始设置为0x800,最终把R4~R11清空赋值为0。多字的加载与存储使用多寄存器寻址,使用的指令为LDM和STM。源程序:AREAInit,CODE,READONLYENTRYCODE32startMOVSP,#0X800LDRR0,=src;把src的地址赋给R0LDRR2,=str;把str的地址赋给R2MOVR1,#8LDMIAR2!,{R4-R11};将以R2起始地址的值存入R4-R11MOVR4,#1MOVR5,#2MOVR6,#3MOVR7,#4MOVR8,#5MOVR9,#6MOVR10,#7MOVR11,#8;给寄存器赋初值loopADDR4,R4,#1ADDR5,R5,#1ADDR6,R6,#1ADDR7,R7,#1ADDR8,R8,#1ADDR9,R9,#1ADDR10,R10,#1ADDR11,R11,#1;赋值的循环部分,给每一种寄存器赋原值加一STMIASP!,{R4-R11};SUBSR1,R1,#1;循环变量R1自减1BNEloop;不为0返回循环LDMIAR0!,{R4-R11};将以R0起始地址的值存入R4~R11HALTBHALT;停留,循环srcDCD0,0,0,0,0,0,0,0END试验截图:成果分析:进行步的运行,观测成果可以发现,每遍历一遍,R4~R11所有值增1,循环次数为8,如此实现了8次赋值。试验截图中为R1减到7时,此时赋值进行到R5,R5之前赋值两次,依次为3、4,R5之后赋值一...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

2024年嵌入式实验报告

您可能关注的文档

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部