资源描述:
《实验2_多字节整数加减法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验二ARM的多字节整数加减法一、实验目的:•掌握ARM汇编语言程序设计和调试方法;•熟悉EmbestIDE集成开发环境的操作方法。二、实验原理:ARM处理器具有很强的算术逻辑运算功能,算术指令可以实现32位有符号数和无符号数的加法和减法操作。其语法为:{}{S}Rd,Rn,NADC32位带进位加法Rd=Rn+N+carryADD32位加法Rd=Rn+NSBC带借位的减法Rd=Rn—N—!(carryflag)SUB32位减法Rd=Rn-NRSB32位逆向减法Rd=N-RnRSC带借位的32位逆向减法Rd=N—
2、Rn—!(carryflag)注:N是桶形移位器操作的结果从上表可以看出,ADD和SUB是最简单的加减运算。ADC和SBC是带进位标志的加减运算,对于SBC,若进位标志为0,则结果减1。RSB是反减,即用第2操作数减去源操作数,由于第2操作数可选的范围宽,故这条指令很有用。RSC是带进位标志反减,若进位标志为0,则结果减1。在ARM指令集中,通过设置S位(第20位),可以直接控制指令的执行是否影响条件码。当S位为0时,条件码不改变;当S位为1时(HRd不是R15(PC)),条件码改变。另外,在算术指令和逻辑指令中广泛使用的第2操作数移位功
3、能,是ARM指令集的一个非常显著的特征。这样可以在操作数进入ALU之前,对操作数进行指定位数的左移或右移(即乘“2”或除“2”)。这种功能明显增强了许多数据处理操作的灵活性。三、实验内容:•完成两个128位无符号整数加法程序。•观察寄存器屮的内容,检验实验结果是否正确。•改变两个128位加数和被加数的值,观察CPSR中标志位的变化。四、实验步骤:1.在EmbestIDE环境中新建工程,编写程序;2.编译成功后,连接下载进行调试。3.观察程序运行结果。五、实验参考程序•global_start.text•arm_start:MOVRO,#0
4、x10MOVRl,#0xl000000AMOVR2,#0x00MOVR3,#0x6000000DMOVR5,#0xl000000AMOVR6,#0x00MOVR7,#0x6000000DADCSR0,RO,R4ADCSR1,R1,R5ADCSR2,R2,R6ADCSR3,R3,R7stop:Bstop.end实验结果截图:EmbestIDEPro-[Disassembly]FileEditViewProjectBuidDebugToolsWindowHelp丄回凶,
5、g
6、x
7、II□G工10回刑w宿爲牡I$釦£2刊帀{卩巳2他轴目囱Q冏卫辰
8、is方中丽阳F瑁Workspace'exercise?1:1pnBIpexercise7filesBCJProjectSourceFiles因EmbestTxfl.s□ProjectHeaderFilesq
9、I出0x00008000mourfl,«160X00008004nour1,#2684354668XQOQ08OO8mour2f1100x0000800cmour3,#16106127490x00008010mourS,H2684354660x00008014mour6fttO0x00008018nour7,#16106127490x
10、0000801caddsr0fr0»r40X00008020adcsr1,r1,r50x0000802>4adcsr2,r2,r60x00008028adcsr3,r3,r7stop:0x0000802cb0x802c0X00008030swinu0x00FFffff0x00008034swinu0x0OFfffff0x00008038swinu0x00FfFFff0x0000803cswinu0xO0ffffff0x00008040suinu0x00Ffffff0X00008044swinu0x00FFFFFf0x00008048swi
11、nuOxOOFfffff0X0000804Cswinu0X00ffffff0x00008050sinnuOxOOfFffff0x00008054swinu0x00FFffff0x00008058swinu0x00fffFFF0x0000805cswinuOxOOFFFFFF◊R1:0x20000014R2:8x00000000R3:OxcOOOOOIaR4:0X00000000RS:0x1000000aR6:0x00000008R7:6x6000000dR8:0x00000000R9:0x00000008R10:0X00000000R11
12、:0x00000000R12:6x00000000R13:0X00008000R14:0x00000000R15:Ox0000802cSP:8X00000000LR:0x00000000PC: