【问题标题】:MIPS Assembly: how to know if user inputted values are correctly stored into an arrayMIPS 程序集:如何知道用户输入的值是否正确存储到数组中
【发布时间】:2013-10-26 04:21:41
【问题描述】:
.data
      array: .word 0:5
      prompt1: .asciiz "enter number: "
      newline: .asciiz "\n"
.text

      add $t2,$zero,$zero       # initializes counter to 0
      la $s0, array     # stores the beginning of array into $s0

secretcode:

      li $v0, 4                 # prints "enter number: "   
      la $a0, prompt1
      syscall

      li $v0, 5                 # reads in user input
      syscall
      sw $v0, ($s0)     # saves user input into address at $s0
      addi $s0, $s0, 4          # increments address at $s0 by 4 bytes

      addi $t2, $t2, 1          # increments counter by 1
      bne $t2, 5, secretcode    # stops loop when loop executes 5 times 

printsecretcode:

      lw $a0, ($s0)         # print first element
      li $v0, 1
      syscall

      li $v0, 10                # system code halt
      syscall

该程序应该将 5 个用户输入的数字存储到一个数组中。我试图打印第一个值,但它以一个很大的数字出现,我认为它是一个地址。如何打印数字的实际值以便我知道它正确保存?

【问题讨论】:

    标签: arrays mips


    【解决方案1】:

    当您到达您的打印代码$s0 包含地址array + 4*5 时,您最终打印的是由"enter number: " 字符串的前四个字符组成的32 位数字。

    要解决此问题,请在尝试打印第一个元素之前添加 la $s0, array

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-13
      相关资源
      最近更新 更多