gpt4 book ai didi

math - MIPS 程序,用于确定测试等级的通过/失败

转载 作者:行者123 更新时间:2023-12-04 07:08:06 31 4
gpt4 key购买 nike

我正在编写一个 MiPS 程序,它将检查 15 个测试分数的列表。它将从终端输入。通过标准是 50 分。终端的输出将包括每个类别的分数以及通过和不及格的学生人数。我应该使用输入提示和输出语句。请我需要一些帮助,只需要一些建议如何去做。

main:
li $t1,15 #load 15 into $t1

la $a1,array #load a pointer to array into $a1

我有一个循环:
addi $t1,$t1,-1

li $v0,4

la $a0,prompt

syscall

最佳答案

我不想放弃它,所以我会抛出一些指导方针。

您应该阅读 Assemblers, linkers and the Spim simulator .这是很多帮助。

所以就到这里了。

创建两个 15 字数组。

 .data
fail_vector: .word -1,-1,-1 ... #15 invalid words
passed_vector: .word -1,-1,-1 ... #15 invalid words

在某些寄存器上加载循环控制变量。
 li $t1,15
beq $t1,$zero,END
addiu $t1,$t1,-1

现在在这个循环中读取值
 syscall...     #SYS_READ

然后读取这个值(假设你在寄存器 t4 中有它)并决定是将它存储在失败向量中还是通过向量中。
     addiu t4,t4,-50     #subtract 50 from input value. 
blez t4,FAILED #If its lower than 0, then read value is lower than 50 ->FAIL
PASSED:
#STORE VALUE INTO passed_vector

FAILED:
#STORE VALUE INTO failed_vector

完成所有 15 个值后,打印出向量。这有点棘手。
在使用你的程序之前,你应该用一些无效的值填充两个向量,比如 -1。
因此,当您将矢量打印到屏幕时,您应该在发现此无效值之一时停止。当你在做的时候,保持一个计数器来显示有多少通过/失败。

在伪代码中
for both arrays
for (i in (0,15) and array[i] not -1)
print array[i]
add 1 to scores count //to count passed - failed test scores.

组装(填空)
END:
li $t4,15
li $t1,0
beq $t1,$t4,EXIT #condition. While ( i < 15) kind of thing.
addiu $t1,$t1,-1

#print out vectors and keep count on other registers
#then print them out.

syscall... #SYS_WRITE

EXIT: #exit syscall here.

另一个棘手的问题是这些向量的索引。由于它们是字数组,因此您应该将循环控制变量(C 中的经典 i 变量)乘以 4(假设为 32 位字)以索引向量。如果它们是字节数组,则不需要乘法。如果它们是短数组......(好吧,你明白我的意思)

例如:
passed_vector[i] #(C style sintax)

并让变量 i 存储在寄存器 $t1 中
会变成:
  sll $t2,$t1,2             #i * sizeof(word)
la $a0,passed_vector #$a0 points to passed_vector
add $a0,$a0,$t2 #$a0 now points to passed_vector + i

所以现在你可以加载/存储到passed_vector[i]
  sw  $t3,0($a0)            #0($a0) is passed_vector[0]
lw $t3,0($a0)

解决这类问题的一种方法(即用汇编语言编写)是用 C(或您知道的其他语言)编写程序,然后将其翻译成汇编,逐条指令。

关于math - MIPS 程序,用于确定测试等级的通过/失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/804315/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com