我希望有一个程序从用户接收2个输入并使用加法相互相乘(例如3 * 2加3次)但我不知道它有什么问题。 提前致谢
.text
.globl main
main:
li $v0, 5 # Code for read int.
syscall # Ask the system for service.
move $s0, $v0 # Copy to safer location.
# Ask for another number.
li $v0, 5 # Code for read int.
syscall # Ask the system for service.
loop:
add $s0,$s0,$s0
addi $v0,$v0,-1
bne $v0,$zero,loop
li $v0, 1
syscall # print out actual sum
li $v0, 10 # Code for program exit.
syscall
答案 0 :(得分:4)
您认为add $s0,$s0,$s0
有什么作用?
它增加了一倍。如果迭代计数为6,那么它会将第一个值加倍六次。
这是家庭作业吗?如果是,请将该标记添加到问题中。
答案 1 :(得分:0)
每次都将值加倍,而不是根据需要添加初始值。这意味着它变成$ s0 = 6,$ s0 = 12,$ s0 = 24,$ s0 = 48,$ s0 = 96等。
使用临时寄存器来保存$ s0($ t0)的初始值,当你做你的添加时,就像添加$ s0 $ s0 $ t0(或者这样的效果),它会做你认为你的代码正在做