资源描述:
《实验2—汇编程序调试》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、西安邮电大学(计算机学院)课内实豔报告实验名称三汇编程序调试1rJU!专业名称:光信息科学与技术班级:1103学生姓名:W学号(8位),皿1指导教师:蒋励实验日期:2014年04刀08日一.实验目的及实验环境1•进一步学习ADS1.2工具使用及ARMulator软件仿真调试方法。2•阅读、分析、调试简单的汇编程序。3•分析和学习各种寻址方式。实验环境:WindowsXP/2000系统,ADS1.2集成开发环境。二.实验内容1•在存储器地址为0x40003100上开辟一个计数器变量(COUNT),对其进行计数(每次加1),记到10后重新开始计数。C语言描述的
2、伪算法为for(intcount=0;count<=10;count++)需要将存储器的值读到CPU寄存器屮参与计算。具体算法为:使用LDR指令读取地址为0x40003100的数据(读取变量)到CPU某个寄存器中,将数拯加1,若结果小于10,则使用STR指令把结果写冋原地址(给变量赋值);若结果大于或等于10,则把0写回原地址(重置计算器)。Icount1OJ2.仿真调试,单步、全速运行程序,设置断点,打开寄存器窗口(ProcessorRegister)监视R0和R1的值,打开存储器观察窗口(Memory)监视0x40003100
3、上的值(COUNT变量)。三.方案设计1•根据算法画出程序流程图:2•实验步骤:(1)创建工程启动ADS1.2,使用ARMExecutableImage工程模板建立一个工程Project2。(2)添加源文件,编辑源代码建立汇编文件TEST2.S,输入源代码,参考源代码附后,然后添加到工程屮。(3)链接选项配置设置工程链接地址R0Base为0x40000000,RWBase为0x40003000。设置调试入口地址Imageentrypoint为0x40000000。(1)编译链接工程选择ProjectDebug,启动AXD进行仿真调试。(2)调试工程打开寄存
4、器窗口(ProcessorRegister),选择Current项监视R0和R1的值。打开存储器观察窗口(Memory)设置观察地址为0x40003100,显示方式Si^e为32Bit,监视0x40003100地址上的值。3•观测实验变量⑴查看Memory窗口CtrHDCtrHSJ^assemblySource.・・LowLevelSynfcolFAlt*ZQoodbkChannelCxrHHCoqeoIcCtrl*NFile$carch空刮21口Ctrlil•ry•r^cesscrViews團®as]I[BfnnfraailHI丄也@1『切£r
5、8^IT
6、DMI-D:ARMProjectProject2TES...r-WSystemViewsExecute咖KinECtr>FcomEOU0x43003100XPU£xgp:e2jCCDE'RLD0EL7DTOYC0DE32^TARTWRPlr-COUWTHOVOT.PD,(R1]AXDG*ARM7T0MILOOTLDRRb-SOnJCTLDRROZ(R1)AFF7TMT-TryS<«rt沖備101•Ikx•灵时■(以
7、Tih2-K«x-Hoprefix
8、IM・Kw・)bprtfix
9、:iM-Hex-Voprefix
10、A
11、ddcess01234567J.89ab」cdefASCIIOxOCOOCOOO1000FFE700E800EB1000F-E7CO£800E8OxOCOOCOlO1000ITE7OO28OOEB1000T?E?CO2800E8UX0CO0CO201000rvE700£8OOE81000rrr?OO1800OXOCOOC0301000FFE7OO18OOE31000F7E7COIS00E8OxOCOOCOlO1000FFE700E8OOE31000F-E7CO£800E8在程序的不同地方放置断点,单步运行或全速运行,观测寄存器和0x40003100地址上的
12、值。一.测试数据及运行结果1•正常测试数据及运行结果六.附录:源代码(电子版)COUNTEQU0x40003100:变量COUNT,地址为0x40003100AREAExample2,CODE,READONLYENTRYC0DE32STARTLDRRl,二COUNTMOVRO,#0STRRO,[Rl];加载COUNT变量的地址:RO=0:;COUNTSLOOPLDRRl,二COUNTLDRRO,[Rl]ADDRO,RO,#1CMPRO,#10MOVHSRO,#0STRRO,[Rl]:将Rl指向的地址单元(COUNT)值装入RO;R0加1保存到RO:R0和1
13、0比较,影响条件标,忐:若R0>=10,则此指令执行,R0=0,进