【发布时间】:2020-02-14 23:35:05
【问题描述】:
我已经参加了 CS-250 计算机组织和体系结构课程几周了,我们目前正在学习 MIPS 汇编语言。我正在尝试获取用户输入的数组并找到该数组中的最大数。我不太明白如何在这种情况下使用 slt 关键字,因为这是我们的教授希望我们做的。
这是我当前的代码。如果您有任何建议,我非常愿意接受这些想法。我目前唯一的空白点是查找数组最大值的函数。
.globl main
.data
array: .space 2000
prompt: .asciiz "Enter the number of integers you would like to input: "
input: .asciiz "Enter an intger: "
Max: .asciiz "Maxiumum Value is: "
.text
main:
#Loading array into $t5
la $t5, array
li $s0, 0
li $v0, 4
la $a0, prompt
syscall
li $v0, 5
syscall
move $s1, $v0
Loop:
#Asking the user for input
li $v0, 4
la $a0, input
syscall
#Storing user input in array address in $t5
li $v0, 5
syscall
sw $v0, 0($t5)
#Counting iterations for the loop as well as the array address
addi $s0, $s0, 1
addi $t5, $t5, 4
#Loop Exit
beq $s0, $s1, Maximum
j Loop
Maximum:
Exit:
li $v0, 10
syscall
【问题讨论】:
-
我假设您已经拥有MIPS32™ 程序员架构第二卷:MIPS32™ 指令集。如果没有,您应该做的第一件事就是下载它。
SLT rd,rs,rt的描述为"将GPR rs和GPR rt的内容作为有符号整数进行比较,并将比较的布尔结果记录在GPR rd中。如果GPR rs小于GPR rt,则结果为1(真);否则为 0 (false)"。可以想象,可以将SLT与BEQ或BNE组合起来创建if (rs < rt)或if (rs >= rt)。如果您想将输入视为无符号,还有一个SLTU。