ARM数据处理指令
寄存器传送指令
移位指令
算术运算指令
逻辑运算指令
比较指令
乘法指令
1.
实验一:
根据提示信息完成程序并运行验证。(exp5_1_1.s)
AREA lab1,CODE,READONLY
START
STOP
思考题:
a)
SUBS R4,R0,R1
SUBS R4,R1,R0
后,程序状态寄存器CPSR的标志位各有何变化?为什么?
b)
SUB R4,R0,R1
SUB R4,R1,R0
后,程序状态寄存器CPSR的标志位各有何变化?为什么?
实验二:
编写ARM汇编程序。有两个128位数,第一个数0x00000004000000c3000000
2.
实验六:根据提示信息完成程序并运行验证。(exp5_1_6.s)
AREA lab3,CODE,READONLY
START
;32位无符号乘加计算R0*R1+R0,R5存结果
;32 位无符号乘法计算R2*R3,R6存结果
;64位无符号乘法计算R2*R3,R7存低32位,R8存高32位
STOP
思考题:
在上述程序中,执行语句
MUL R6,R2,R3
UMULL R7,R8,R2,R3
SMULL R9,R10,R2,R3
后,解析个寄存器的值。
3.
实验三:
根据提示信息完成程序并运行验证。(exp)
START
;测试寄存器R0中的第2位是否为1,并根据结果修改CPSR的标志位(若是,跳转到START)
实验四:
编写简单的汇编语言程序,功能是计算1+2+3+。。。。+n的值,并把累加的结果存储到寄存器中。 (exp3_1_1)
4.
实验五:
将0x3FC0的第4~11位用0xDD替换,变成0x3DD0。根据提示信息完成程序并运行验证。 (exp)
START
STOP
思考:
在上述程序中,如果将0x3FC0替换为0xCFC0,应该如何修改程序?
评论