【发布时间】:2021-11-30 20:08:49
【问题描述】:
我是 MIPS 新手,我被困在打印阵列中,而且功能也有点混乱 这是我的代码,它适用于我猜的获取输入,但在那之后,它们显示数组并出现错误。 这是问题:
-
提示用户使用控制台输入一个介于 1 和 10 之间的整数
-
编写一个函数,用用户输入的值初始化一个由 5 个元素组成的数组。该函数必须包含以下内容
一个循环
一个分支
-
编写一个函数,将上面初始化的数组的第三个元素乘以数字 4。
-
编写一个函数,将数组的所有元素打印到控制台。第三个元素必须是其他元素的 4 倍。该函数必须包含以下内容
一个循环
一个分支
您的代码必须具有三个独立的函数(除了主要部分)和函数调用
初始化数组的函数
函数将数组的第三个元素乘以用户输入的数字
将数组打印到屏幕的功能。
.data
array: .space 20
prompt: .asciiz "Input 5 integers\n"
.align 3
.text
main:
li $v0, 4
la $a0, prompt
syscall
loop:
beq $t0, 20, exit
li $v0, 5
syscall
sw $v0, array($t0)
add $t0, $t0, 4 #increase index
j loop
exit:
jr $ra
print_loop:
la $t1, array # get array address
li $t2, 0 # set loop counter
beq $t2, 5, exit_print_loop
lw $a0, ($t1) # print value at the array pointer
li $v0, 1
syscall
addi $t2, $t2, 1 # advance loop counter
addi $t1, $t1, 4 # advance array pointer
j print_loop # repeat the loop
exit_print_loop:
li $v0, 10
【问题讨论】:
-
“我猜它适用于获取输入”。你不必猜测。使用 MIPS 模拟器(如 SPIM 或 MARS)的调试功能来查看究竟发生了什么。 “并且有错误”。 什么错误?请更具体。
-
如果你应该有 3 个函数,你应该有 3 个调用,3 个返回,但是这段代码中没有调用,只有一个返回。
-
谢谢,我认为我的数组指针有问题,我重置它但它没有,所以我只是到另一个寄存器并且它工作。
标签: arrays loops assembly mips