0
ARM 어셈블리에서 scanf를 사용하여 여러 값 (한 번에 하나씩)을 읽으려고합니다. 나는 scanf 부분을 작동 시키도록 관리하고 명백하게 값을 저장한다. 그러나 나는 그것들을 되찾고 싶을 때 나는 단지 마지막 숫자를 얻고 다른 것들은 다른 것을 얻는다.ARM 어셈블리 : scanf로 저장된 값이 올바르게 저장되지 않습니다.
Enter a number: 1
Enter a number: 2
You entered: 2129322344 and 2.
그것은 내 코드는 다음과 같습니다 You entered 1 and 2.
말을해야 :
이
은 저를주고 무엇을 왜 이.global main
.func main
main:
PUSH {LR}
LDR R0, =entryMessage
BL printf
SUB SP, SP, #8
LDR R0, =scanformat
MOV R1, SP
BL scanf @ Number is saved in SP - 8
LDR R0, =entryMessage
BL printf
ADD SP, SP, #4
LDR R0, =scanformat
MOV R1, SP
BL scanf @ Number is saved in SP - 4
ADD SP, SP, #4 @ Restore SP to original
SUB SP, SP, #8 @ Prepare to read SP - 8 for first number
LDR R1, [SP] @ Read first number
ADD SP, SP, #4 @ Prepare to read SP - 4 for second number
LDR R2, [SP] @ Read second number
ADD SP, SP, #4 @ Restore SP to original
LDR R0, =printMessage
BL printf
POP {PC}
_exit:
BX LR
.data
entryMessage: .asciz "Enter a number: "
scanformat: .asciz "%d"
printMessage: .asciz "You entered: %d and %d.\n"
누군가가 말해 줄 수 그것만이 마지막 값이 올바르게 읽습니까?