Hi All!

I have a programming assignment that ive been trying to work on. Recently, ive successfully wrote it in java, but im trying to use that as psuedocode so that i can transcribe it into mips - but i dont understand this stuff! ive been reading this book but it honestly doesnt help!

the assignment reads:

1. In the data segment, allocate static space for a long vector of integers.
2. Assign values from x1 to x2 (increment for the next value through the entire vector), where x1 and x2 must be obtained through a dialog with a user. Check for errors in the input (such as x2 greater or equal to x1; Too long vector; etc.)
3. Ask the user to input a number, which will indicate the number of rows of a matrix the stored vector will be converted into.
4. Find out, through a division operation, the number of columns of this matrix.
5. Print the matrix
6. Transpose this matrix – use indexed addressing mode.
7. Print the transposed matrix.
8. Terminate the program.

also, i do not understand the compiler used - im using PCSpim - any clues would help..

any help would be greatly apprciated! Thanks in advance

9 Years
Discussion Span
Last Post by ithelp

Here's some desperate help:

If I understand your problem correctly, you must get two numbers from the user, x1 and x2, then make an array (or vector) of values from x1 to x2 inclusive?

PCSpim is neither a compiler nor a proper assembler. It is a simulator for a virtual machine.

Write your tal program using your favorite plain-text editor (like emacs or notepad or whatever), load it into spim, and run it with the "Go" button. The only caveat to using Spim is that your program must begin with the label "main" instead of "__start".

Try typing in some simple examples from your textbook. Then try creating some simple examples of your own design.

Here's a simple example designed to help you in your project:

# Example program to print a friendly
# message five times, then quit.


# This is static data.
# Its size does not change.

# This is the string to print
str_hello:	.asciiz "Hello world!\n"

# These are syscall argument values
# (I like to name them for easy use)
print_string:	.word 4   # $a0 : address of string to print
exit:		.word 10


		# print_n_times( str_hello, 5 )
main:		la	$a0, str_hello
		li	$a1, 5
		jal	print_n_times

		# quit
		lw	$2, exit

# subroutine
# arguments:
#   $a0 : address of string to print
#   $a1 : number of times to print it
		# preserve return address on stack
print_n_times:	sub	$sp, 4
		sw	$ra, 4($sp)

		# can't print < 0 times...
		bltz	$a1, pnt_end

		# done if no more to print
loop:		beq	$a1, $0, pnt_end

		# print the string at m[$a0]
		lw	$2, print_string

		# number of times to print -= 1
		sub	$a1, $a1, 1

		# next
		b	loop

		# pop return address and return
pnt_end:	lw	$ra, 4($sp)
		add	$sp, 4
		jr	$ra

The WikiPedia article has a section on MIPS Assembly Language that lists all the syscall arguments and return values and all the opcodes you'll need.

Hope this helps.


You can first write in c/c++ and decompile it to assembly and get some idea how to code it

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.