Assembly 返回MIPS中已删除字符的字符串
我有一段代码,其中,给定一个输入字符串,我试图返回一个已删除字符的输出字符串。Assembly 返回MIPS中已删除字符的字符串,assembly,mips,mips32,Assembly,Mips,Mips32,我有一段代码,其中,给定一个输入字符串,我试图返回一个已删除字符的输出字符串。 输入字符串必须以句号结束,输出字符串也必须以句号结束。我真正需要解决的是如何解析输入字符串中的单个字符并在循环中处理它们。 我不断收到与边界和超出范围的地址相关的各种错误。任何帮助都将不胜感激,因为我对这门语言还比较陌生。谢谢 .data string: .asciiz "COMP30080." stop: .word 46 three: .word 51 output: .asc
输入字符串必须以句号结束,输出字符串也必须以句号结束。我真正需要解决的是如何解析输入字符串中的单个字符并在循环中处理它们。
我不断收到与边界和超出范围的地址相关的各种错误。任何帮助都将不胜感激,因为我对这门语言还比较陌生。谢谢
.data
string: .asciiz "COMP30080."
stop: .word 46
three: .word 51
output: .asciiz ""
digit_found: .asciiz "Digit found!"
.text
.globl main
main:
la $t0, string
lw $a0, 0($t0)
la $t3, stop
jal numberExtract
sw $v0, output
li $v0, 10
syscall
.globl numberExtract
numberExtract:
beq $t3, $t0, numberExtractEnd
lb $t0, 0($a0)
li $t1, 53
beq $t0, $t1, digit
sw $t0, ($v0)
addi $v0, $v0, 4
addi $a0, $a0, 1
j numberExtract
digit:
li $v0, 4
syscall
la $a0, digit_found
li $v0, 4
syscall
jr $ra
numberExtractEnd:
jr $ra
lw$a0,0($t0)
sw$t0,($v0)
是的,所以他们应该将字符串的第一个值加载到$a0中,并将循环的当前值加载到$v0中,分别由字节元素而不是单词组成lw
加载4个字节,lbu
加载1个字节。而sw
的地址寄存器甚至还没有设置好,它不会做任何你想做的事情。你需要一个算法。试着用C写一个原型,然后你就可以翻译成汇编了。