使用printf / scanf进行分段错误

时间:2014-10-27 03:39:18

标签: assembly arm

每次运行此程序时都无法获得分段错误。需要建议如何修复我的代码,任何帮助表示赞赏。问题可能在于我调用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

0 个答案:

没有答案