OlveraeUNSW
返回题目列表
COMP1521

COMP1521 2020T2 Q7 · MIPS数组

COMP1521 2020T2 Q7 · 10 marks · MIPS
知识点: MIPS数组(MASM-A) · 次: 循环/逆序 · 难度: 中等
Topic: MIPS arrays · Source: https://cgi.cse.unsw.edu.au/~cs1521/26T1/resources/practice_exams.html

一句话 / Summary: 读入数组直到和≥42逆序输出


You have been given practice_q7.s ,
a MIPS assembler program that reads 1 number and then prints it.

Add code to practice_q7.s to make it equivalent to this C program:

// Read numbers into an array until their sum is >= 42
// then print the numbers in reverse order

#include <stdio.h>

int numbers [ 1000 ];

int main ( void ) {
int i = 0 ;
int sum = 0 ;
while ( sum < 42 ) {
int x ;
scanf ( "%d" , & x );
numbers [ i ] = x ;
i ++ ;
sum += x ;
}

while ( i > 0 ) {
i -- ;
printf ( "%d \n " , numbers [ i ]);
}
}

In other words,
it should read numbers until their sum is ≥ 42,
and then print the numbers read in reverse order.

For example:

1521 mipsy practice_q7.s
11
17
3
19
19
3
17
11
1521 mipsy practice_q7.s
10
20
30
30
20
10
1521 mipsy practice_q7.s
42
42

No error checking is required.

Your program can assume its input contains only integers.

Your program can assume these integers sum to ≥ 42.

Your program can assume that it will have to read no more than 1000 integers before their sum is ≥ 42.

You can assume the value of the expression can be represented as a signed 32 bit value.
In other words, you can assume overflow/underflow does not occur.

Your solution must be in MIPS assembler only.


🤖 Write MIPS (mipsy). Read integers until their running sum ≥ 42, then print the numbers read in reverse order, one per line.

Verified on the sandbox AND cross-checked against an independent oracle (official examples included).

样例

stdin
11
17
3
19
期望输出
19
3
17
11
stdin
50
期望输出
50
mipsy
14