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写一个原型,然后你就可以翻译成汇编了。