0
.data
prompt1: .asciiz "\n\n Enter an integer please:"

array: .space 24
linefeed: .asciiz "\n"
enterkey: .asciiz "Press any key to end program."


.text

main:



li $s0, 0

  for:

  bge $s0, 6, end_for

  li $v0, 4 #syscall to print string

  la $a0, prompt1  #address of string to print

  syscall

  li $v0, 5 #syscall to read an integer

  syscall

  move $t1,$v0

  sw $t1,array($t0) #save the number to read into array 

  addi $t0,$t0,4

  addi $s0,$s0,1

  j for

end_for:


# print out a line feed

li $v0,4 # code for print_string

la $a0,linefeed # point $a0 to linefeed string

syscall # print linefeed

# wait for the enter key to be pressed to end program

li $v0,4 # code for print_string

la $a0,enterkey # point $a0 to enterkey string

syscall # print enterkey

# wait for input by getting an integer from the user (integer is ignored)

li $v0,5 # code for read_int

syscall #get int from user --> returned in $v0

# All done, thank you!

li $v0,10 # code for exit

syscall # exit program

这是我的代码。我试图将 6 个整数存储在一个数组中,然后再次读取整数数组并对它们求和,然后打印总和。我为我的英语不好道歉

4

1 回答 1

1

它基本上与您刚刚编写的循环相同,但是您不必将数字写入数组,而是必须从数组中读取它并对值求和。

例如:

  li $s0, 0
  li $a0, 0
  li $t0, 0
forsum:    
  bge $s0, 6, end_forsum    
  lw $t1,array($t0)  # Load the number from array 
  addu $a0, $a0, $t1 # Compute the sum

  addi $t0,$t0,4    
  addi $s0,$s0,1      
  j forsum
end_forsum:

  li $v0,1 
  syscall   # Print sum

您还可以在从用户输入中读取值时计算总和...

于 2015-03-11T20:27:41.277 回答