Arrays MIPS汇编:如何知道用户输入的值是否正确存储到数组中
该程序应该将5个用户输入的数字存储到一个数组中。我试图打印第一个值,但它显示为一个大数字,我假设它是一个地址。如何打印数字的实际值以便正确保存?当您到达打印代码时,Arrays MIPS汇编:如何知道用户输入的值是否正确存储到数组中,arrays,mips,Arrays,Mips,该程序应该将5个用户输入的数字存储到一个数组中。我试图打印第一个值,但它显示为一个大数字,我假设它是一个地址。如何打印数字的实际值以便正确保存?当您到达打印代码时,$s0包含地址数组+4*5,因此您最终打印的是由输入数字:字符串的前四个字符组成的32位数字 要解决此问题,请在尝试打印第一个元素之前添加一个la$s0,数组。当您到达打印代码时,$s0包含地址数组+4*5,因此您最终打印的是由输入数字:字符串的前四个字符组成的32位数字 要解决此问题,请在尝试打印第一个元素之前添加la$s0数组 .
$s0
包含地址数组+4*5
,因此您最终打印的是由输入数字:
字符串的前四个字符组成的32位数字
要解决此问题,请在尝试打印第一个元素之前添加一个
la$s0,数组。当您到达打印代码时,$s0
包含地址数组+4*5
,因此您最终打印的是由输入数字:
字符串的前四个字符组成的32位数字
要解决此问题,请在尝试打印第一个元素之前添加la$s0数组
.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