ARM汇编,无限while循环,但是是什么原因引起的?

时间:2018-10-23 02:49:30

标签: assembly arm

我接受用户输入,然后从1开始并打印数字,直到达到他们的数字。我已经检查过了,获取号码没有问题,它只有在存在问题的循环中。我认为问题可能与我如何与其他寄存器复制多个寄存器有关,但是我对此并不陌生,并不真正知道问题出在哪里。我试过使用调试器,但它不会让我一步步循环,它的执行就像文件的正常运行一样。另外,如果我错了,请纠正我,但是到目前为止,我收集到的是每次输出一个数字都会重置r1,这就是为什么我将r1复制到r2中以保存原始数字,对吗? / p>

    cpy r2,r1       @copy r1 into r2 so that when output happens, I dont lose r1
    mov r4,#0       @loop counter   
loop:
    cmp r4, r2
    bgt myexit      @if value in r1 is > 100, exit
    cpy r1,r4       @copy loop number into r1 for output
    ldr r0, = printline @print number
    bl printf   
    add r4,r4,#1        @increment counter
    b loop

myexit:
    mov r7, #0x01   @ returns control to OS
    svc 0   

.data

    .balign 4
    test:.asciz "%d\n"

    .balign 4
    numsumstring: .asciz "Number \t Sum\n\n"

    .balign 4
    numInputPattern: .asciz "%d"

    .balign 4
    printline: .asciz "value is %d\n"

0 个答案:

没有答案