首页 > 解决方案 > 为什么我的寄存器 (R0) 没有指向 ARM 程序集中的新地址?

问题描述

    
    ldr R0, =str1       @ str1 = "-400"
    bl putstring        @ putstring displays the number

    ldr R0, =newline    @ Load R0 with address of newline (newline: .byte 10)
    bl  putch           @ Function call to ext. func. call putch (putch outputs a character)

我希望代码的第二部分输出换行符。但是,尽管有指令,但 R0 并未指向换行符的地址。

$r0  : 0x0002064c  →  "-400"
$r1  : 0x0002064c  →  "-400"

@ After 2nd ldr instruction
$r0  : 0x0002064f  →  0x30340030 ("0"?)
$r1  : 0x0002064c  →  "-400"

难道我做错了什么?R0 不应该指向换行地址,以便可以使用 putch 输出吗?为什么它指向“-400”中的“0”?

R0 的值应该是:

$r0  : 0x0002064f  →  <newline+0> lsrs r0,  r0,  #8

在第二条 ldr 指令之后。

声明:

str1:       .asciz ""

newline:        .byte  10

标签: assemblyarm

解决方案


推荐阅读