Проблема сборки ARM при выводе правильной строки (или любой строки вообще) - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь сравнить введенное пользователем число с 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...