首页 > 解决方案 > ARM 程序集问题输出正确的字符串(或任何东西)

问题描述

我正在尝试将用户输入的数字与 100 进行比较,如果大于或等于 100,则打印“数字大于或等于”,如果小于 100,则相应地打印。它接受输入部分就好了,但程序在输入后立即结束。我对组装很陌生,这是我使用它的第二天,所以放轻松。谢谢你的帮助!

.global main
main:

prompt: 
    ldr r0, = numPrompt
    bl printf   

get_input:
    ldr r0, =numInputPattern 
    sub sp, sp, #4
    mov r1, sp
    bl scanf
    ldr r1, [sp, #0]
    add sp, sp, #4

printinputasNum:
    cmp r0, #100    @compare num in r0 to 100
    bne Test1   @if not equal, jump to Test1
    ldr r0, = greaterorequalOutput 
    bl printf
    b   ExitAll
Test1:  blt Test2
    ldr r0, = lessthanOutput
    bl printf
    b   ExitAll
Test2:  ldr r0, = greaterorequalOutput
ExitAll:

myexit:
    mov r7, #0x01
    svc 0

.data

    .balign 4
    numPrompt: .asciz "Input a number: "

    .balign 4
    numInputPattern: .asciz "%d"

    .balign 4
    lessthanOutput: .asciz "The input number is less than 100 \n"

    .balign 4
    greaterorequalOutput: .asciz "The input number is greater than or equal to 100 \n"

.global printf
.global scanf

标签: assemblyarm

解决方案


推荐阅读