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