汇编代码问题

时间:2011-03-22 17:09:01

标签: assembly mips

我希望有一个程序从用户接收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

2 个答案:

答案 0 :(得分:4)

您认为add $s0,$s0,$s0有什么作用?

它增加了一倍。如果迭代计数为6,那么它会将第一个值加倍六次。

这是家庭作业吗?如果是,请将该标记添加到问题中。

答案 1 :(得分:0)

每次都将值加倍,而不是根据需要添加初始值。这意味着它变成$ s0 = 6,$ s0 = 12,$ s0 = 24,$ s0 = 48,$ s0 = 96等。

使用临时寄存器来保存$ s0($ t0)的初始值,当你做你的添加时,就像添加$ s0 $ s0 $ t0(或者这样的效果),它会做你认为你的代码正在做