Как правильно ввести строку и вывести?

#assembly #gcc #arm

#сборка #gcc #arm

Вопрос:

   .data
sformat: .string "%s"
save:  .string "0"
alpha: .string "0"
      .text
      .globl st
st: stmfd sp!,{lr}
    ldr r0,=sformat
    ldr r1,=alpha
    bl scanf

    ldr r1,=alpha
    ldr r1,[r1]
    ldr r2,=save
    str r1,[r2]

    ldr r0,=sformat
    ldr r1,=save
    ldr r1,[r1]
    bl printf
    ldmfd sp!,{lr}
 

ввод: A вывод: A

Я хочу ввести строку и вывести ее, теперь у меня ошибка.

Это показывает Segmentation fault

Я понятия не имею, как решить эту проблему.

Комментарии:

1. Конечно, последнее ldr r1,[r1] перед bl printf неверно, поскольку ваша строка формата содержит %s . Кроме того, выполнение загрузок и сохранений размером с слово из / в save и alpha кажется неправильным. Я не вижу, что вам вообще нужно save в этой программе.

2. @Michael Спасибо. Я удаляю некоторый save код about, и он может работать.