我正在尝试回答作业问题,不确定我是否正确。
问题是:
简要说明第3、4、7、8、9、10、11行的说明的目的 12和13。
我的答案:
3-将var A的(地址/值?)加载到R1中。
4-将常数MAX移至R2。
-
7-比较R2的内容与常数0。
8-如果R2 = 0,则结束分支(循环)
9-将R1的内容加载到R4
10-用R4在R3中添加数据,结果保存在R3中。
11-将R4中的数据添加为常数4,结果保存在R1中。
12-用常数1减去R2中的数据,结果保存在R2中。
13-循环回到loop1的开始
1. .global _start
2. _start:
3. LDR R1, =A
4. MOV R2, #MAX
5. MOV R3, #0
6. loop:
7. CMP R2, #0
8. BEQ end
9. LDR R4, [R1]
10. ADD R3, R4
11. ADD R1, #4
12. SUB R2, #1
13. B loop
14. end: ...
15. .data
16. .equ MAX, 5
17. A: .rept MAX
18. .word 0x00
19. .endr
答案 0 :(得分:1)
我认为,除以下内容外,您提供的所有答案都是正确的。
a)
3-将var A的(地址/值?)加载到R1中。
第3行会将第17行的内存位置放入R1。
b)
8-如果R2 = 0,则结束分支(循环)
如果R2 == 0,则执行将跳至第14行
c)
9-将R1的内容加载到R4
将R1保留的内存地址的内容加载到R4中。 例如如果R1 = 0x01234567并且内存地址0x01234567的值为0x89abcdef 然后在执行第9行后,R4将保持值0x89abcdef