MIPS 打印字符串

MIPS printing string

下面是练习题:

给定下面的数据段,编写代码打印字符串“Hello”

.data
     .asciiz    “A”
     .asciiz    “Hello”
.globl main
main:

我在main下写的:

main:
lui $a0, 0x1001
addi $v0, [=11=], 4
syscall

我收到的输出是"A",显然是因为lui地址错误。我的问题是,如何打印 "Hello"。我要增加 lui 地址吗?如果是,通过什么?

我搜索了类似的答案,不幸的是人们很聪明并且使用伪指令,我无法使用。

提前感谢您的帮助。

最好定义标签并避免在代码中使用未知常量作为地址。您的代码可以重写为

.data
     str1: .asciiz    “A”
     str2: .asciiz    “Hello”
.globl main
main:
    lui $a0, $str2
    addi $v0, [=10=], 4
    syscall

但是为了回答你的问题,ASCII A (0x41) 占用一个字节,以空字符结尾的第一个字符串占用另一个字节,因此 Hello 应该 A 高两个字节。这里的问题是您的编译器可能会尝试对齐您的数据。最好检查您的编译器选项以完全确定。