因此,我的分配工作比仅从while循环中打印数字更为复杂,但是我什至无法使while循环正常工作,因此我现在就开始进行工作。我正在尝试获取一个小于10的用户输入,然后从那里开始并从输入输出每个数字,直到10。例如:输入为7,输出为7,8,9,10。 但是它陷入了无限循环。 r1确实会增加,但输出始终为1(即使原始数字不是1)。我到底做了什么?
.global main
main:
prompt:
ldr r0, =strInputPrompt @ Put the address of my string into the first parameter
bl printf @ Cal the C print to display input prompt
get_input:
ldr r0, =numInputPattern
sub sp, sp, #4 @ update stack pointer to new loc
mov r1, sp @ put address into r1 for read
bl scanf @ scan keyboard
ldr r1, [sp, #0] @ The character is on the stack
add sp, sp, #4 @ Reset the stack
cmp r1, #10 @ compares user num to 10 and 0,
bgt myexit @ and if it is not in between those,
cmp r1, #0 @ it terminates program
ble myexit
display:
ldr r0, =numsumstring @loads r0 with string
bl printf @prints r0
loop:
cmp r1, #10
bgt myexit @if value in r1 is > 10, exit
ldr r0, = printline
bl printf
add r1,r1,#1 @add 1 to r1
b loop
myexit:
mov r7, #0x01 @ returns control to OS
svc 0
.data
.balign 4
numsumstring: .asciz "Number \t Sum\n\n"
.balign 4
numInputPattern: .asciz "%d"
.balign 4
printline: .asciz "value is %d \n"
.balign 4
strInputPrompt: .asciz "Input the number: "
.global printf
.global scanf