L
lmka
Ребята, помогите, пожалуйста! Нужно объяснить функцию этого кода. Я в ассемблере хуже чайника...
Что конкретно происходит в каждой строчке и что будет стоять в регистре $ s0 после исполнения 28-ой строчки, если на запрос integer задать 7.
1. .data
2. msg: .asciiz "integer="
3.
4. .text
5. main: li $ vo, 4 # print_string msg
6. la $ a0, msg
7. syscall
8. li $ v0, 5 # read_int in $v0
9. syscall
10. move $ a0, $ vo
11.
12. # ------------------
13. bgtz $ a0, continue
14. sub $ a0, $ zero, $ a0
15.
16. continue: add $ t0, $ zero, $ zero
17. addi $ t1, $ zero, 1
18. addi $ t2, $ zero, 1
19.
20. loop: sub $ t9, $ a0, $ t1
21. bltz $ t9, end_loop
22.
23. add $ t0, $ t0, $ t2
24. addi $ t2, $ t2, 2
25. addi $ t1, $ t1, 1
26. j loop
27.
28. end_loop: move $ s0, $ t0
заранее всем благодарна!
Что конкретно происходит в каждой строчке и что будет стоять в регистре $ s0 после исполнения 28-ой строчки, если на запрос integer задать 7.
1. .data
2. msg: .asciiz "integer="
3.
4. .text
5. main: li $ vo, 4 # print_string msg
6. la $ a0, msg
7. syscall
8. li $ v0, 5 # read_int in $v0
9. syscall
10. move $ a0, $ vo
11.
12. # ------------------
13. bgtz $ a0, continue
14. sub $ a0, $ zero, $ a0
15.
16. continue: add $ t0, $ zero, $ zero
17. addi $ t1, $ zero, 1
18. addi $ t2, $ zero, 1
19.
20. loop: sub $ t9, $ a0, $ t1
21. bltz $ t9, end_loop
22.
23. add $ t0, $ t0, $ t2
24. addi $ t2, $ t2, 2
25. addi $ t1, $ t1, 1
26. j loop
27.
28. end_loop: move $ s0, $ t0
заранее всем благодарна!