我刚开始学习arm汇编语言,写了一个程序,发现一个很奇怪的错误,请大家告诉我是为什么这么写是错的。
    程序功能:读取用户输入的2个数,比较其大小,并计算它们的差与和。
         .global main
main:
    mov    ip,sp
    stmfd    sp!,{fp,ip,lr,pc}
    sub     fp,ip,#4
    
    adr    r0,.N1
    bl     printf

    adr    r0,.LC1
    ldr    r1,in
    bl    scanf

    adr    r0,.N2
    bl    printf
    
    adr    r0,.LC1
    ldr    r1,in
    add    r1,r1,#4
    bl    scanf

    ldr    r3,in
    ldr    r1,[r3]
    ldr    r2,[r3,#4]
    add    r1,r1,r2
    
    adr    r0,.LC2
    bl    printf
    
    ldr    r3,in
    ldr    r1,[r3]
    ldr    r2,[r3,#4]
    sub    r1,r1,r2
    
    adr    r0,.LC3
    bl    printf
    
    ldr    r3,in
    ldr    r1,[r3]
    ldr    r2,[r3,#4]
    
    cmp    r2,r1
    beq    o3
    blt    o2
    ldr    r1,[r3,#4]
    adr    r0,.LC4
    bl    printf
    
    mov r0,#0
    ldmea    fp,{fp,sp,pc}

o2:    
    
    adr    r0,.LC4    
    bl    printf
    mov    r0,#0
    ldmea    fp,{fp,sp,pc}
    
o3:    adr    r0,.LC5
    bl    printf
    mov    r0,#0
    ldmea    fp,{fp,sp,pc}

            
.N1:    .asciz    "key in the first number"
.N2:    .asciz     "\n key in the second number"

.LC1:    .ascii    "%d\000"
.LC2:    .asciz    "sum= %d\n"
.LC3:    .asciz     "difference = %d\n"
.LC4:    .asciz     "greater = %d"
.LC5:    .asciz    " they have the same value "    /*问题就在这里*/

in:    .word    inarea
    
    .bss
    .align 2
inarea:    .space 4

     原本.LC5我写的是"same vlaue",出现的错误是:
# ./example
key in the first number 5
pc : [<4006c728>]    lr : [<bffffe20>]    Not tainted
sp : bffff8e8  ip : 00000000  fp : bffffe0c
r10: 4012cce0  r9 : 00000000  r8 : 0000000a
r7 : 4012b01c  r6 : 000084b1  r5 : 00000064  r4 : 00000000
r3 : 00206558  r2 : 00000005  r1 : 00000000  r0 : 00000005
Flags: nZCv  IRQs on  FIQs on  Mode USER_32  Segment user
Control: 397F  Table: A0D58000  DAC: 00000015
Segmentation fault
      无意间修改,将LC5的内容加长后,变为“ they have the same value ”之后,就能正确执行了。--特别的是,“和字母t之间、字母e和”之间,必须有空格,(我试过“ same value ”和“they have the same value”,都是错误的)
     恳请知道原因的人告诉我这是为什么!谢谢