我刚开始编程MIPS assembly
,我对此有几个疑问。打印字符串(汇编)
首先,我的代码:
.data
word1: .ascii "Hello"
word2: .ascii " World"
word3: .ascii "!"
.text
main:
#lw $t0, word1
#lw $t1, word2
#lw $t2, word3
li $v0, 4
la $a0, word1
syscall
la $a0, word2
syscall
la $a0, word3
syscall
我想问为什么我的消息
Runtime exception at 0x0040000c: fetch address not aligned on word boundary 0x10010005
,而我试图加载第二个字词(字词)? (我知道我没有加载字符串。)
其次,此代码的输出将是“Hello World!World !!” - word1 word2 word3 word2 word3 word3。
如果我评论第10行和第11行代码(加载其他单词),输出将是Hello World!
而不是Hello
。
为什么会发生?我只想打印一个字,而不是一次打印三个字。
提前致谢!
附加一个“,0”给你的字符串,告诉操作系统停止字的位置 – Tommylee2k
在MIPS中,你不能读取未对齐的地址。这就是错误信息告诉你的。 – fuz