每次运行此程序时都无法获得分段错误。需要建议如何修复我的代码,任何帮助表示赞赏。问题可能在于我调用printf和scanf的方式,但我不确定
.data
/*strings for problem 3*/
.balign 4
prob3_prompt: .asciz "Input term number: "
.balign 4
prob3_output: .asciz "Output: "
/*scanner*/
.balign 4
scan_pattern_int: .asciz "%d"
.balign 4
scan_read: .word 0
.balign 4
return: .word 0
.text
.global main
main:
ldr r0, address_of_return
str lr, [r1]
ldr r0, address_of_prob3_prompt
bl printf
ldr r0, address_of_scan_pattern_int
ldr r1, address_of_scan_read
bl scanf
mov r5, #3
mov r6, #0
mov r7, #1
mov r8, #1
ldr r4, [r1]
cmp r4, #1
beq first_term
cmp r4, #2
beq second_term
bal n_term
first_term:
ldr r0, [r6]
bl printf
bal end
second_term:
ldr r0, [r7]
bl printf
bal end
n_term:
add r8, r6, r7
mov r6, r7
mov r7, r8
add r5, #1
cmp r5, r4
beq end
bal n_term
end:
ldr lr, address_of_return
ldr lr, [lr]
bx lr
address_of_prob3_prompt: .word prob3_prompt
address_of_prob3_output: .word prob3_output
address_of_scan_pattern_int: .word scan_pattern_int
address_of_scan_read: .word scan_read
address_of_return: .word return