




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、应举r科技大学品声学在B n HUA2HOKO UMVERS/TY OF SCIENCE AND TECHNOLOG ¥ WENHUA COLLEGEARM与嵌入式技术专业班级:10通信工程1班姓名:万洁学号:100103011125实验日期:2013年5月28日指导老师:郑汉麟1、通过实验掌握ARM指令的特点和寻址方式;2、掌握简单的ARM汇编语言的程序设计;3、了解集成开发环境 Embest IDE及其开发软件的应用;二、实验环境Embest IDE应用于嵌入式软件开发的新一代图形化的集成开发环境,它包括一套完备 的面向嵌入式系统的开发和调试工具。其开发软件Embest IDE
2、for ARM 是集编辑器、编译器、调试器、工程管理器( projectmanager)于一体的高度集成的窗口环境,用户可以在 Embest IDE集成开发环境中创建工程、编辑文件、编译、链接、运行,以及调试嵌入式应 用程序。三、实验步骤1)新建工程:运行Embest IDE集成开发环境,选择菜单项File New Workspace ,如图一,系统弹出一个对话框,键入文件名“ wj”,如图二,点击 OK按钮。将创建一个新工程,并同时创 建一个与工程名相同的工作区。此时在工作区窗口将打开该工作区和工程.。(老师提醒:不要放入Bin文件夹中) NetCtH + NHCtrf+OOpen Work
3、5P4s图b 5top2)建立源文件:点击菜单项 File - New,如图三,系统弹出一个新的文本编辑窗,输入源文件代码。 编辑完后,保存文件“ wj.s”后缀,如图三,四。.qlabjl start.text图四nou rO.ttSnouadd rU.rtljlstart:3)添加源文件:选择菜单项 Project Add To Project Files ,在工程目录下选择刚才建立的源文件.s后缀文件,如图五,图六,图七。图六图五日相 Workspace 'wj*: 1 project闾 白窜 wj filesl Project Source Files_j Project He
4、ader Files L 国 wj.s图七4)基本配置:选择菜单项Project - Settings ,弹出工程设置对话框。在工程设置对话框中。 选择Processor设置对话框,按照图八所示,进行配置:一他例, rirniolr Dcbau 0H虱ComiiiVer | A«flflrriib .CPU; nrrn ISupport lor AV1M/ fMiHflv V< ICI*U 4HE” :* I_ SnxrllHn * I IHfle E niilnnEl 11) E nd I >nAb li 口 l» ,1Mnko# ; * Hulld T oo
5、l* :ghu T«i» lov AHM图八 选择Remot皱置对话框,按照下图九所示,进行配置:("nee sn-a uvOcbun | !,亡仁turv9 C arnpllcr Adevice ;| gv»ArE f t vnlfciai «l-iriitlflit'ur AMM if Vi-irL抬 peed:.J 42nimrTh«j mlty pr-:| EJ3 L t LP匹1 lri nl iUrN图九选择 奉 籥盘最右边一个进行编译,显示如图十,则编译成功。Building project: wj arn-el
6、f-as -gdwarf2 F :ARMExarnpleswjwj ,s -o .rtebGgwj .arm-elf-Id -oAdebugSwj.elf .dgbug'aj.oConntand(s) successfully executed .图十选择 Project Settings示,进行配置:Debug®置对话框,按图4Prcjeet SrttingsSettings For :Processor RemoteDebug . Directory - Compiler Assemb . >h 49 Workspace Jwj': 1 projectfs向
7、踊1售血3O Project Source Files _I Project Header Fites 国1 wj.s打开图十一rProject SettingsSettings Fuir :查找范围CI);Fi Workspace 1 pra|ect(swj file自Category: GeneralSymbol file :修改日期2013/6/1 11:00Processor Remote Debug | Directory | Compiler | AseEb * I "CaCegory | General-1- Bi Prajecl Soiurci: Files1- Bi
8、 Prajeict Header Files 庄|Syinbul tile :|F:yiR MEx mp I eb iigwj.e IfLJAction atfier cionnected足 NoneAuto downloadCommand script图十二图十三 选择图 篇矗最右边一个进行编译,显示如图十四,则编译成功。Building project: wj arm-elF-as -gdwarf2 F:ARMExampleswjwj.s -o .debugwj .otfrm-elf-ld -o Adebugvj, elf AdebugXwj .0Con)Rand(s) successFu
9、lly executed.5)选择菜单项Debug Remote Connect进行连接软件仿真器,将存储器地址改为0x1000 ,如图十五,执行 Debug Download命令下载程序,并打开寄存器窗口。打开memory 窗口,按F10进行单步跟踪,观察寄存器的数据变化并分析。ooomooo O0BO10Q3 OOOD10O6 DOO01009 00001900 OaODIOSFER FF FFAddress:.R15: 0x00061008f SP: 0x00000004 LR: OXO0OOOOOQ| J PC: OX06Q01098族 cpsr: OxQOoaoOda|0皿财。11口
10、nou7% 83±iBxninniin nn4PIIFUf «i<nEyUtKUUUiU<1 UIIRnitdi应仙U。 UO匚b0x1 口配加 MUOdMOsuiinti以啊用“1sviiwOMBiDH-fffffsvi<n>uQwQiQffiFff FBxHiniRIlrl H1eskiimuUK 口口+千干FFfi liKUUUUl U7Ushiinu购11时+¥抻g I-fitfiirrrfrt* nat flw.MMMaM nil 时。哑口触的 A2i以口口口口的加5:5 Reqi&ler | A 3enphffrBl |
11、按照老师所说的,将源程序的 add r0,r0,r1中的add改为 adds,并设置 R0, R1分别为BxQBOaii 0Q0novrOp tt3|RxQ80aii BOknour1B tt1Baddsr0p rO, id9x00QQ1 B0ch0n1 喇IBxOBOai 01QsuinufbcOBflAI 01*suinuOBFff=Fff|BcOB0tt1BIS£uinu驰日町"FffRKOBfiQI IMcswinuaxDBwasasuinuaxoaoai B24suinuexoaoai li28suinu觎B肝"Fffex。聊用n2csuinuMumwn
12、 暄口q”inu触图0xffffff88和0x000000aa再次观察,得到如下结果:R13: 0x00080000:理 RM二 0X06000000=% R15 : 0x0000100c;“ SP: 0x00000030| LK: 8x00008000“PC: 0X006Q1O0C:6 CPSR: 0x20000003“ SPSR: 0x00800000四、实验内容:1.(原题目第二题)编写程序将R2的高8位传送到R3的低8位(不考虑 R3的其他位)源程序:.global _start .text_start:/*把第一个立即数送进r2*/*把第二个立即数送进r3*/*取r2高8位到r0*/
13、*r3低8位清零*/*r0逻辑右移24位后与r 3相或,结果送进 r3*/mov r2,#0x66000000 mov r3,#0x88000000 and r0,r2,#0xff000000 and r3,r3,#0xffffff00 orr r3,r3,r0,lsr #24 stop: b stop .end调试结果:Download下载:Ann近HI方面凝丽0X00011 鼬movr3, »-2fi132<>59209x0091008andr2T #1677721601X0000100cbic13f r3T K25Sg &0001m 8orrtJ3f r3p
14、 rfl, Isr /24瞰 OU HUI 0r1UlbUX1U14晶帆附kI Bd SsuinuOxUBffffFf眠口 9 口1 01Csuinu以 an 序口 102 bsuinuflxOBffffFf加nn刖0 1哂StfinuflxflflffFfFFY pxftflflftlflfflRwl huSiKflfiFfFfFfAddress: SKlieoodHJI*B +1 +2 1-3 +H*BUB01 DQQ 66 2U AU E3 22aaommas 33 aq es ff qiiWCI喇 im 02 EZ FF 3fi C3 0.R口咖舶F E3 29 3C 93 E1 .一
15、皿咖 0114 FE FF FF Eft FF BEh? IFF FF FF IFF FF .,.,9G0&1»1 FFF FF FF TF Building project: 叼2arn-elf-as -gdwarf 2 Fas -u ±nEhu9,uj2 工口F :fiRMXBinXwj2<wj2ASnbler mes弓自日电与:F:XflRMXBinXvj2<wj2,s:6: Warning: end of file not at end ularm-elf"Id -0.debuguj2,elF .debugXwj2,oCioinnijn
16、d(s) successfully executed»取r2高8位到r0:DkOOGS-1 60QHDUr2, #1711276032上!dX皿则眄4附0-2 胪! 326592 U割依加眄1 G眈andM.1九 tt-1677了如69x0901 00cbicQ#255DX0BOO1011urr3. r3, ra, isr M24必皿眄1 014b0X10140x00001 018写 hiinn0X00FFFFFF9X0OQ01 01cuinyBxBBfFFf FF8x88001020swinu0X00ffFfFFd9x0000102写 MzinuaxOaffFFFF0x080010
17、28uino0xB0f FFf FF即9|l3- Currentf Rd: 0x90090080。R1: 0x00000000.R2: 0«66080000。R3: QxSSOBSOOQf Rif: 8x00000000f,R5: QxDOODQOOOr3低8位清零:9x00001000mour2, 817112768329x00001 004mo。r3 r #-2013265920andrd.0一167772169x09001 QOcbitr3, r3, W255(JMUU0U1 01 Horrr3, 13, rfl, Lsr tf24QX013QQ1h0x00001 Q16syj
18、inu0xG0ffF<fF昵皿G01 U1CsJiny船眄HFFfF0x09001 02SswinvOxOOfFFfFF-I型 gII日._ Currentj y rb: axAfioeaoaQ;0 ri二 uxouoguoso、* R2; 8x66000000;0 R3: DX880gUO9Or0逻辑右移24位后与r3相或,结果送进r3 :0x00001000mour2, tt171127fi032zl0X00001&94nour3, #-2013265920ftXflOBOIfiflRandr% 16777216曲口君道仙。chier3, r3, 0255囱&K毗岫1
19、(91。orrr3t r3, r0, Isr tt249xoaaoi 014b以1目1U0X00001 016swinyAxOOfffFfFOxOOS01O1csuinu0x00fFFfFf0x00081020swiny0K00fFFFFF-i空g日.Current力 m: oxnaoennoB;& R2: SX66Q00008f R3: 0x8a0000000x00001600HDUr2, #1711276032OX0BOO1OMnour3, tt-2013245920,0x00001008andP0, r2, tt-1677721fiDxOOaQIflOcbicr3, r3. #2
20、S5oxDoarittioorrr3T ra, rBT Isr9x00901 014b0x1914OX0OOO1O1BswinuBxOOfFfffF0x0030101cswinuOxOflfFFFFfOK00001020stnnuOxBBffFfffswinuflxOBfffFffBegI日蠡 f- Current0 RD: 0(x66000000:)R1 : 0x00000080 R2: 0x66000000-> R3; 880000663 R4: OkUU0»UU0O 公 EL. n. nnnffmnnn2.(原题目第三题)R1 : R0o编程实现64位的加法运算,要求【R
21、1 :R0+【R3: R2结果放回.global _start .textstart:mov mov mov movR0,#24R1,#12R2,#16R3,#18ADDS R0,R0,R2 ADC R1,R1,R3 stop: b stop .end/*R0=24*/*R1=12*/*R2=16*/*R3=18*/*R0 等于低32位相加,并影响标志位/*R1 等于高32位相加,并加上低位进位*/*/凶Jl*0 +1 +2 +3: +4*iib n© nn E3 nc .0D901D0510 AO E3 10 20.一U40U1熊RA« E3 12 U0 n。 .d.&q
22、uot;"I00061QflFE3 Q2 QD 90 EQ 里仲00001014g3 m1 ED FE jA dldrz |Qk1O0O:I.Download下载:阻DXgUWETI QgQnouf 124SKoeemao4Figyrl. #1?iftx 0100131008nuv2 ItfiaHBUGlUUcnowr3. tIBftxnn»n ni»rd, rfl, r?RMOBOO1014a deri j ri # tj3UXU0UU1U1HbBxIfrlSBxQflQQi nicswinvBxflQfFFfFF%皿0口192。弓 tdnu0x00fFFffF
23、1124swinuSKSfrFFFffFftxQ0QQ1S28swinu0x00fFFfFF0X09001 02Csinu0X00fFFffFLJ- -Ouilding project: wj3 -arm-elf-aS -yduarF? F:RHlBinuj2debugwj 3 .s -n1aAtlebuq'MjW -uF:n!RMBinXwj2elet)ugwj3.s: Assiehbler resfjges:F:ARMXBinuij2XidebugXuuj3,5:Q: Warning: end of File not at end carm-elf-ld -o.debuigwj.l
24、F .XUebugywj.oC<unirkdn(l(&)executed.R0-RO+R2 ; R1 -R1+R3:日-,P Current> R0: 0X00000028R1: OxOSOOOOIe 中 H2: 0x00300010 v R3: 0x00000012=SxOOOOBaBOma:uxauououuiiR15 :nxonnfvi amosp;aixoaooaQaBLR :tbidaoaaunaPC :mconnm ni 8CP3R;Ok OOaBOadSSPSR: 0H BOBBBBOa 单步跟踪后的结果:|»X0OO01C0Omovr0t 井240
25、x00081 oaunoutT* t(12QXBO0Q1DO8novr2T tt16OX0QO01OOCnour3r tt189XQ0001D1Daddsr0, rO,r2QXOOOQ101Uadcri, r1fr3lEaaxBaoeitjigb6x1018swinuOxOOFFFFFfHw nona-i oacic iiii n nflv序。工工工工"存储器的结果显示:+ 0 +1+2+ 3+4OBOOIOOO18 00ABE30C 0690100510 ABE31020.00001 BOAA8 E31239AO06001QOFE3 02CO9。E0 0SOO1 叫 403 100
26、1E0FE 00001019FF FFEiAFFFF 00001 01EFF FFFFFFFF Address: 3x1000寄存器的结果显示:3.(原题目第七题)编写一段程序计算10!.global _start.text.equ num,10_start:mov r0,#nummov r1,r0s1:subs r1,r1,#1 把 r1-1 放入 r1*/ mul r0,r1,r0/*r0*r1放入 r0*/cmp r1,#1/*比较 R1与1的大小*/beq stopbne s1 stop:b stop.end分析调试:0x00081000 0x00001004nounourO, tt1
27、0rr1, rG- Current 0x00801008subsr1t r1f fl1 :j RO: OxOOOOOOSanul皿 r1, rGF30x00001010cnpr1( #1i R1: DxOOOOOOD?0x00001014beq0x101cEVDX0Q001O1Sbne0x1008:。R2: 0x000000000x0000101cb0X101CV0x00091020swinuBxOOFFFfff :$ R3: 9x00000000 =9-1=8,10*9*8=720,换成 16 进制是 2d0。第二次执行S1, 第一次执行 S1, r1=10-1=9,10*9=90,换成16
28、进制是5a。oxomiooo 0x00001004 0x00001003 oxoeomeocox oom 0100x00001018 0x0000101c 0x08801020beq0x101ctone0x1008b0x1 Q1cswinvOxOOFfFffFcmpri,s u V bl o o u u oos n-Current -RO: 0x000SQ2d0R1: 0x00000008R2: 9x00000000R3: 0x00000800依次执行 S1 ,到r1=1,停止,10*9*8*1=3628800,换成16进制是375f00。0x000010000X000010040x00001
29、008GxOGGGI 口耻nouROU subs RUlr0, mo r1, r0 r1,11, rG, r1,rOmy一 Current .一.RO:GxO0375f刖00x00001010C叩r1,R1:0x000000010X00001014 0x00001018 0x0000101C 0X00001020beq bne b suinu01c 0x1008 0x101C OxflOFFfFfFIL«2:R3:0X000000000x080000004.(原题目第八题)串拷贝(R0指向源数据的首地址,R1指向目的数据串的首地址) .global _start .text.EQU
30、NUM,8 _start:/*指向源数据串R0*/*指向目标数据串R1*/*R3=8*/*返回*/*调用串拷贝子程序*/LDR R0,=srcstrLDR R1,=dststr mov R3,#NUM mov LR,PCB strcopy stop: b stop/*字符串的复制*/*装载字节同时更新地址*/*存储字节同时更新地址*/*判断是否结束*/*不是,则继续*/*返回*/strcopy:LDRB R2,R0,#1 STRB R2,R1,#1 SUBS R3,R3,#1CMP R3,#0 BNE strcopy MOV PC,LR.datasrcstr: .long 1,2,3,4,5,
31、6,7,8 /* 定义源数据串 */dststr: .long 8,7,6,5,4,3,2,1 /* 定义目的字符串 */分析调试:Compiling File: F:ARHExamplesujvj5Xdebugujdebuguj4.sarR-elf-as -gdwarF? F:ARMExampleswjwjSdebugwjdebugwj4_s -o,debugwj4.oCommand(s) successfully executed, 单步跟踪后的结果及存储器的结果显示:慨腼财皿回Idr他pc,tt28;9x103 00X00001004IdrtT. pc,#28;9x10340X00001
32、008nou3. tt8mt)ulr, pcOKOOOai EMOhoxi si abIOM0OQO1Q18Idrbr2. r0,#1OX00QO1 01Cstrbr2. Ir1* «12.存储器结果显示Address: exiebflF2KKwogonoog28009FE528(00001085109FES0830690&10BAAHE30FE。A目 00001 OOFE1000000EC-*09001014FEFFFFEA01OB0Q1O1920DflE4012aQ0OO101EC1E40130S3BS00001023E20000S3E33.naecvift9QJ . l
33、i匚0L匚匚iacc¥寄存器的结果显示:R15: 0x80081018 sr: ox du nue i) LR ; Oh 00 0(11 01 u PC :QS0G1 Bd SCPSRi Ox S0O0OSd3旦钟gI日,CuKrpnt巾 R耻 000008138/ R1: Dx00008158五、实验体会心得:这是第一次接触 ARM与嵌入式实验,在此次实验过程里,我 发现实验课比理论学习课有趣得多,因为老师一边讲解怎么使用软 件,一边询问我们相关知识点,不仅使我们记得模糊的理论知识变 更加清晰确切了,而且也在对软件的学习实践中,增加了浓厚的兴 趣,真正实现了手把手教的详细教学。认真
34、听老师讲,积极主动去 思考,我发现学习起来,并没有想象中的那么难。不懂的问题,不 断去尝试调试,并请教老师,可以有很多收获。以下是本次试验中的学习收获:1.为何要将存储器地址改为 0x1000,而不是从0x0000开始(这是 老师问到我的问题)2.00系列可以存放程序的范围,分为四个空间 内部程序存储器 地址范围 0000H-0FFFH 共4KB ,外部程序存储器 0FFFH-0FFFFH 共64KB ;内部数据存 储器00H-FFH共256个字节(其中包括低128字节和特殊功能寄存器 SFR 128 个字节),外部数据存储器可扩展至64KB。由于异常向量放在064字节中,系 统要用到,所以为
35、了避免冲突,选用从 0x1000开始的地址,即从4K开始的地 址。2 . little Endian / Big Endainlittle Endian就是低位字节排放在内存的低端,高位字节排放在内存的高 端。而Big Endain正好相反。3 . Add / Adds 的区别Add是不影响标志位的加法算数运算指令,即操作结果不更新CPSR中的相应条件标识位;而Adds是影响标志位加法算数运算指令,即操作结果会更新 CPSR中的相应条件标识位。4 .进位和溢出是两个不同的概念溢出标志OF和进位标志CF是两个意义不同的标志.进位标志表小无符号 数运算结果是否超出范围,运算结果仍然正确;溢出标志表
36、示有符号数运算结 果是否超出范围,运算结果已经不正确。5 .程序书写中注意.global _start中间是有空格的,而不是相连的。6 .因为是单步调试的,所以要注意先连续按键 F10三次,再去修改Rigester中 的数据。7 .不仅可以用F10,也可以用F11进行单步调试8 .调试过程中遇到的问题如:1:B 购 Workspace Wp1: 1 project|s)B 群 wjZ filesB 口 Project Source Files由 wj2.s省wj3港I 1 PtnisH He拇FiIrs y Fu吗fl Ei * I.qlobal start >textmou R1M12
37、mou R2.K16 mou R9 tit1SADDS R%R%R2 ADC R1PR1,R3 stop: | b stop -endLdConpiling filo: F:flRMBinnj2d&tJugwj3-sarm-elf-as -gdwarF2 F:ftRM0inuj2detiugwj3.s -a Aclphugiuj.qf:AKHBinwj2deDugwj3,s: Assem&Ler nessages::F :ftRllBin八加匕叩。2算.:5t 0二 Uartiing; t?n(J uF file unt: at encl 。干 a, linu; nEwliriE fn&ertEdF:AMHB:inMj2dEbijgHj3 在:11 : Errur:由己d in与tructi口n ' b EEupError executing anave curwnd.于是我把程序代码改写为stop: b stop即写为一行,然后保存,结果如下:ADC R1SR1rR3 stop: b stop| .endCompiling file: F :ftRHBinXwj2debU'gwji3 .s-3rm-plF-as gdw<arF2 F:fiRMBiifiwj2dPbijgi.iij3,s 一口 ,KdbugXwj
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025妇女权益保障集体合同
- 《2025项目合作合同书》
- 2024-2025学年人教版PEP四年级英语下册期末试卷(3)(含答案含听力原文无音频)
- 2025标准写字楼租赁合同模板下载
- 2025典范保险合同模板
- 2025装饰装修设计合同争议
- 2025年供气合同模板范文
- 2025私人房屋买卖合同书范本
- 2025在线签订劳动合同的操作流程
- 2025年网络广告投放合同范本
- 2024-2025学年小学科学六年级下册湘科版(2024)教学设计合集
- 新型建筑材料应用论文
- 2024复合材料和增强纤维 碳纤维增强塑料(CFRP)和金属组件十字拉伸强度的测定
- 《油气井增产技术》课件-63 拉链式压裂井场布置
- 水利工程竣工自查报告
- 新疆维吾尔自治区新2024年中考数学模拟试卷附答案
- 2024年中国老年糖尿病诊疗指南解读(2024年版)
- 震后学校维修合同书
- 手术室不良事件警示教育
- 李白:《将进酒》经典省公开课一等奖全国示范课微课金奖课件
- 19S406建筑排水管道安装-塑料管道
评论
0/150
提交评论