Disclaimer: I am very new to 32-bit ARM ASM code and this is my first program. When I try to run this program, the sum of the three integer values will be output wrong, however, the display of the three inputs is correctly printed, so I believe I am doing something wrong with my formatting for printf or using the wrong register, any help would be appreciated.
.section .data
prompt: .asciz "Hello, enter three integer values (Place a space in between each value): "
response: .asciz "You entered the numbers %d, %d, and %d and the sum is %d"
pattern: .asciz "%d %d %d"
input1: .word 0
input2: .word 0
input3: .word 0
.section .text
.global main
main:
push {lr}
ldr r4, =input1
ldr r5, =input2
ldr r6, =input3
ldr r0, =prompt
bl printf
ldr r0, =pattern
mov r1, r4
mov r2, r5
mov r3, r6
bl scanf
mov r1, r4
ldr r1, [r1]
mov r2, r5
ldr r2, [r2]
mov r3, r6
ldr r3, [r3]
add r7, r3, r1
add r7, r7, r2
ldr r0, =response
mov r4, r7
bl printf
mov r0, #0
pop {pc}
When I first got the error I attempted to change
add r7, r3, r1
add r7, r7, r2
ldr r0, =response
mov r4, r7
bl printf
as
add r7, r3, r1
add r7, r7, r2
mov r4, r7
ldr r4, [r4]
ldr r0, =response
bl printf
But that didn't seem to work, if anything I believe it caused a segmentation fault.