资源描述:
《算数逻辑指令(双字加法)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、算数逻辑指令(双字加法)1.实验目的(1)了解ADS1.2集成开发环境及ARMulator软件仿真;(2)熟悉ARM的数据处理指令和逻辑指令;(3)掌握算数逻辑运算指令ADD、SUB等的程序设计。2.实验设备硬件:PC机一台软件:Windows98/XP/2000系统,ADS1.2集成开发环境3.实验内容(1)建立一个新的工程;(2)建立一个汇编文件,并添加到工程中;(3)使用ADD等指令及相关的其他指令,编程实现2个64位数据的加法运算。4.实验步期(1)启动ADS1.2IDE集成开发环境,使用ARMExecutable
2、Image工程模板建立一个工程instructionlo(2)建立汇编源文件tcstl.s,编写实验程序,然后添加到丄程instruction2屮。(3)设置工程链接地址ROBase为0x40000000,RWBase为0x40003000o设置调试入口地址Imageentrypoint为0x40000000。(4)编译链接工程,选择[project]->[debug],启动AXD进行软件仿真调试。(5)打开寄存器窗口(ProcessorRegisters),选择Current项监视相关寄存器的值。打开存储器观察窗口(Me
3、mory)设置观察地址为0x40003000,显示方式Size为32Bit,监视0x40003000地址上的值。说明:使用鼠标左键选择某一个寄存器,然后点击鼠标右键,Format项中选择显示格式Hex、Decimal等,如图2.1所示。在Memory窗口中点击鼠标右键,Size项中可以选择显示格式为8Bit、16Bit或32Bit,如图2.2所示。图2.1设置寄存器显示格式图2.2Memory窗口显示格式设置5.实验参考程序说明:假设R0和R1存放了一个64位数据,R0中存放数据的低32位;R2和R3中存放了另一个64位数
4、据,R2中存放了低32位数据。下面的程序实现了俩个64位数据的假发运算,结果仍保存在R0和R1中。;Addtwo(64-Bit)numbersTTLCh4Ex3-add-p.59AREAProgram2,CODE,READONLYENTRYMainLDRR1,Value1LDRR2,Value2LDRR3,Value3LDRR4,Value4;载入第一个加数的低32位;载入第一个加数的高32位;载入笫二个加数的低32位;载入第二个加数的高32位ADCR2,R2,R4;高32位的带位相加ADDSR1,R1,R3;两数的低32
5、位相加,同时设置CPSR中的C位标志STRR2,Result2SWI&11Value1DCD&E7E3C123Valuc2DCD&367402AAValue3DCD&3212C442Value4DCD&265802ABResult1DCDOResult2DCD0STRRl,Result1;存储运算结果的低32位;存储运篦结果的高32位;第一个加数的低32位;第一个加数的高32位;笫二个加数的低32位;第二个加数的高32位;存储运算结果的低32位;存储运算结果的高32位END6.程序运行结果:可以单步运行程序,可以设置/取消
6、断点,或者全速运行程序,停止程序运行,调试吋观察寄存器和0x40000000地址上的值,运行结果见图2.3。OAXD-[ARI7TDII-D:IyARIinstructionltest1.s]FileSearchProcessorViewsSystemViewsExecuteOptionsWindowHelpD1X闻陷Q
7、I«P
8、
9、鋼屉ARM7TDMI-RegistersRegisterBCurrentValueM・"••Ml(...)0x000000000X19F68565r2r3•r40X5CCC05560x32
10、12C4420X265802ABLiLSLa•r5r60x000000000x000000000x000000000x000000000x000000000x00000000brilrrl2krl30x000000000x000000000x00000000r!4亍“pcpcpsr--spsrOxOOOOOOOC0x00000004nzCvqIFt_UndefnzCvqIFt_SVC1;Addtwo(64-Bit)numbers2TTLCh4Ex3-add・p.593AREAProgram2,CODE,READONLY4E
11、NTRY5Main6LDRRlzValuel;戟入第一个加数的低32位7LDRR2,Value2;戟入第一个加数的£32位8LDRR3,Value3;载入第二个加数的低32位9LDRR4ZValue4;兹入第二个加数的高32谊10ADDSRlzRl,R3;两数的低32位相加.同时设SCPSF11ADCR