0
/*menu_prompt*/
.balign 4
menu_prompt: .asciz "Choose which problem.\nType 1 for Problem 1\nType 2 for Pr$
/*scanner*/
.balign 4
scan_pattern_int: .asciz "%d"
scan_read: .word 0
.balign 4
return: .word 0
.global main
main:
ldr r0, address_of_return
str lr, [r1]
ldr r0, address_of_menu_prompt
bl printf
ldr r0, address_of_scan_pattern_int
ldr r1, address_of_scan_read
bl scanf
ldr r1, [r1]
str lr, [r1]
ldr r0, address_of_menu_prompt
bl printf
ldr r0, address_of_scan_pattern_int
ldr r1, address_of_scan_read
bl scanf
ldr r1, [r1]
cmp r1, #1
beq in_prob_1
cmp r1, #2
beq in_prob_2
cmp r1, #3
beq in_prob_3
in_prob_1:
mov r0, #100
bal end
in_prob_2:
mov r0, #200
bal end
in_prob_3:
mov r0, #300
bal end
end:
ldr lr, address_of_return
ldr lr, [lr]
bx lr
address_of_menu_prompt: .word menu_prompt
address_of_scan_pattern_int: .word scan_pattern_int
address_of_scan_read: .word scan_read
address_of_return: .word return
運行程序後,無論我選擇哪種輸入(1,2或3)echo $?總是表明r0擁有139,我不知道爲什麼。如果我選擇1 r0應該保持100,2 r0應該保持200,3和r0應該保持300.ARM彙編語言菜單不工作