


实验三截图:
刚学这个,不会做作业,求正确答案并表明一下注释方便了解谢谢各位了!!
关注引自免费微信小程序-皆我百晓生,希望对题主有所帮助,如有帮助,还望采纳。
首先,我们需要将ARM指令转化为对应的二进制指令来执行这些操作。下面是对应的ARM指令以及其对应的二进制指令:
(1) 求和:
LDR r0, =0x1234
LDR r1, =0x5678
ADD r2, r0, r1
STR r2, [0x20002000]
(2) 求差:
LDR r0, =0x1234
LDR r1, =0x5678
SUB r2, r0, r1
STR r2, [0x20002004]
(3) 求积:
LDR r0, =0x1234
LDR r1, =0x5678
MUL r2, r0, r1
STR r2, [0x20002008]
(4) 求商:
LDR r0, =0x1234
LDR r1, =0x5678
UDIV r2, r0, r1
STR r2, [0x2000200c]
(5) 逻辑左移:
LDR r0, =0x1234
LSL r0, r0, #2
STR r0, [0x20002010]
(6) 逻辑右移:
LDR r0, =0x1234
LSR r0, r0, #2
STR r0, [0x20002014]
(7) 算数右移:
LDR r0, =0x1234
ASR r0, r0, #2
STR r0, [0x20002018]
(8) 循环右移:
LDR r0, =0x1234
ROR r0, r0, #2
STR r0, [0x2000201c]
(9) 按位与:
LDR r0, =0x1234
LDR r1, =0x5678
AND r2, r0, r1
STR r2, [0x20002020]
(10) 按位或:
LDR r0, =0x1234
LDR r1, =0x5678
ORR r2, r0, r1
STR r2, [0x20002024]
(11) 按位异或:
LDR r0, =0x1234
LDR r1, =0x5678
EOR r2, r0, r1
STR r2, [0x20002028]
(12) 清除bit[5:4]位:
LDR r0, =0x1234
MOV r1, #0xCF
AND r2, r0, r1
STR r2, [0x2000202c]
(13) 设置bit[7:6]位为1:
LDR r0, =0x1234
MOV r1, #0xC0
ORR r2, r0, r1
STR r2, [0x20002030]
(14) 翻转bit[9:8]位:
LDR r0, =0x1234
MOV r1, #0x300
EOR r2, r0, r1
STR r2, [0x20002034]
请注意,这些指令是按照ARM汇编语言编写的。在实际的程序中,你可能需要将这些指令转换为对应平台的机器码,并使用特定的开发环境或汇编器来运行它们。
以下是第2题的解答
根据你提供的代码,修改计算两个数求和并保存结果的部分,更新后的代码如下:
PRESERVE8
THUMB
AREA RESET,DATA,READONLY
DCD 0X20001000
DCD Reset_Handler
AREA HELLO,CODE,READONLY
Reset_Handler proc
LDR R0, =data1 ; 加载data1地址到R0寄存器
LDR R1, =data2 ; 加载data2地址到R1寄存器
LDR R0, [R0] ; 从data1地址读取数值到R0寄存器
LDR R1, [R1] ; 从data2地址读取数值到R1寄存器
ADD R2, R0, R1 ; 将R0和R1寄存器的值相加并保存到R2寄存器
LDR R0, =data3 ; 加载data3地址到R0寄存器
STR R2, [R0] ; 将R2寄存器中的结果保存到data3地址中
B HERE
ALIGN
data1
DCD 30 ; 将30保存到data1地址中
data2
DCD 50 ; 将50保存到data2地址中
AREA dd_data,DATA,READWRITE
data3
DCD 0 ; 将0保存到data3地址中
END
请将更新后的代码加载到ARM开发环境中编译、烧录到硬件上,并执行程序。然后,你可以使用调试器或者内存查看工具查看0x20000010地址空间中的内容,并截图提交给老师。请注意,在截图中能清晰看到0x20000010地址上所保存的结果。