我从mips32开始,当我试图从字符串中获取一个字母来打印它时,我被卡住了。代码应该获取字符串,逐个字符地打印它,并在找到i时打印iiing。
.data
msg: .asciiz "testing"
i: .asciiz "iiing"
.text
.globl main
main:
la $t0, msg
la $t1, i
li $t2, 0
loop:
bneq $t0, 105, end #$t0=i?
lb $a0, ($t0)
li $v0, 4
syscall
addi $t0, $t0, 1
b loop
end:
move $a0, $t1
li $v0, 4
syscall问题出在哪里?
发布于 2012-12-21 07:39:34
你有一些问题。
$t0,它是当前角色的地址,而不是角色本身。将该测试移到ASCII线下,并在lb中针对$a0.105进行测试是E,而不是i。尝试syscall (或者更普通的说法,0x69).bneq.4,它打印单个字符,而不是你当前使用的syscall4,它打印一个字符串。10)。您可以在this link上查看系统调用的列表。
以下是一个完整的工作程序以供参考:
.data
msg: .asciiz "testing"
i: .asciiz "iiing"
.text
.globl main
main:
la $t0, msg
la $t1, i
li $t2, 0
loop:
lb $a0, ($t0)
beq $a0, 0x69, end
li $v0, 11
syscall
addi $t0, $t0, 1
b loop
end:
move $a0, $t1
li $v0, 4
syscall
li $v0, 10
syscallhttps://stackoverflow.com/questions/13982126
复制相似问题