在Mips Assembley中实现两个查找单词长度的函数

在Mips Assembley中实现两个查找单词长度的函数,mips,Mips,我需要帮助创建两个函数。第一个函数需要查找单词的长度。对于输入,函数获取单词第一个字符的地址并返回单词的长度(单词在数组中) 第二个函数需要删除数组中字符数大于平均数的单词(从数组中的所有字符中计算),因此假设一个单词的平均数为4个字符,则需要删除所有字符数大于4个的单词 更新:prntscr.com/ezjylq我给你两个示例代码,希望对你有所帮助 此代码用于查找任意ASCII字符串的长度 给定字符串: “你好\n” 输出: 六, 这是一个打印“Hello World”的函数 你自己尝试了多长

我需要帮助创建两个函数。第一个函数需要查找单词的长度。对于输入,函数获取单词第一个字符的地址并返回单词的长度(单词在数组中)

第二个函数需要删除数组中字符数大于平均数的单词(从数组中的所有字符中计算),因此假设一个单词的平均数为4个字符,则需要删除所有字符数大于4个的单词


更新:prntscr.com/ezjylq

我给你两个示例代码,希望对你有所帮助

此代码用于查找任意ASCII字符串的长度

给定字符串:

“你好\n”

输出:

六,

这是一个打印“Hello World”的函数


你自己尝试了多长时间?你能添加一些代码吗?我不知道如何设置函数的入口(每个单词的第一个字符)。它确实有点帮助,但我有一个想法,告诉我它是对的还是错的,或者我需要更改smth:创建一个while循环,该循环将遍历整个数组,直到它达到“0”(或null)数组的末尾。现在在循环中,我需要调用计算单词和字符数的函数,然后返回平均字符数,然后我需要一个新的while循环,它将再次遍历整个数组,以删除超过平均字符数的单词。第一个循环也会遍历数组,直到它达到“0”或null是可能的,而且很容易,如果您更仔细地看我的第一个示例代码,它实际上正是您想要的。你描述的另一部分你应该试试,我认为也可以实现。是的,它更容易阅读,现在我可以在beqz(下面)中为单词/字符计数器添加函数吗?你可以试试。。这也许有帮助
.data
    message: .asciiz "Hello\n"
.text

main:
    li $t1,0
    la $t0,message         #load message to t0

loop:
    lb   $a0,0($t0)        #load one byte of t0 to a0
    beqz $a0,done          #branch if a0 = 0
    addi $t0,$t0,1         #increament t0
    addi $t1,$t1,1         #increament the counter t1
    j     loop
done:

    li   $v0,1            #print an integer
    add  $a0, $0,$t1      #add the counter to a0
    syscall

    li   $v0,10           #exit program
    syscall
.data
message: .asciiz "Hello World.\n"

.text
main:

jal displayMessage

li $v0,10       #exit function
syscall


displayMessage:
li $v0,4        #printing string 
la $a0,message  #save the message to argument $a0
syscall

jr $ra