Jump to content
  • Advertisement
Sign in to follow this  
ashkash

Assembly Programming Help

This topic is 4057 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I need to write a programming using the MIPS ISA to compute the saddle point of a 4x4 matrix. The saddle point is a value that is the maximum value in a row and the minimum value in its column. There can be more than one saddle point in a matrix and all the saddle points need to be printed to the console. Also, if there is no saddle point then an appropriate message needs to be printed to the console. I do not how to get started with this program. Any help would be appreciated. Thanks.

Share this post


Link to post
Share on other sites
Advertisement
The forum has a strict policy on doing people's homework for them, so I can only give you advice:

Think hard about how you could store a 4x4 matrix in memory. Once you've decided and written out all the details, it shouldn't be too difficult to write functions to perform basic matrix arithmetic.

For this task you'll need to understand the mathematics behind, and be able to implement the code for;

1. Matrix scaling. Write a function that multiplies every element by a given constant. If you don't know how to start with this, then you're out of your depth with regards to the language.

2. Matrix addition.

3. Matrix trace and determinant.

4. Determination of eigenvalues. There are several ways to do this. The trade is between programming time and execution time.

This constitutes the guts of the problem. If you get this far then adding the glue and garnish should be relatively simple.

It would be a good idea to plan the whole project out before you start coding though. A common strategy, when overwhelmed like this, is to draw a flow-chart; recursively breaking the problem down into its constituent parts. Once you have visualised how the problem consists of smaller ones you know how to solve, it all comes a lot easier.

Good luck
Admiral

Share this post


Link to post
Share on other sites
I have written a solution to this program in C and am trying to convert the C code to MIPS assembly. Both my C and my assembly codes are below. I am using PCSpim to run the assembly and am getting a lot of errors. If anyone can see what I am doing wrong or help me out in anyway I would really appreciate it. I am new to assembly and can really use the help. Thanks.


#include<stdio.h>

int main()
{
int a[3][3],i,j,k,min,max,col,count=0;
printf("enter elements row-wise");

for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
scanf("%d",&a[j]);
}
}

for(i=0;i<4;i++)
{
min=a[0];
for(j=0;j<4;j++)
{
if(a[j]<=min)
{
min=a[j];
col=j;
}
}
max=a[0][col];
for(k=0;k<4;k++)
{
if(a[k][col]>=max)
{
max=a[k][col];
}
}
if(max==min)
{
printf("saddle pt.at (%d,%d)",i+1,col+1);
count++;
}
}
if(count==0)
printf("no saddle points");
}



.data
strA: .asciiz "Saddle Point Value:"
strB: .asciiz "There are no saddle points"
newline: .asciiz "\n"
space: .asciiz " "
.align 2

A0: .word 1, 2, 3, 4
A1: .word 5, 6, 7, 8
A2: .word 5, 6, 7, 8
A3: .word 1, 2, 3, 4


.text
main: li $t0, 4
la $t1, A0
li $t3, 4
li $t8, 4
li $s4, 0
loop1: lw $t2, 0($t1)
move $t4, $t1
loop2: lw $t5, 0($t4)
bgt $t5, $t2, Next
move $t2, $t5
move $t6, $t4
Next: addi $t4, $t4, 4
addi $t3, $t3, -1
bne $t3, $zero, loop2
lw $t7, 0($t6)
move $t9, $t7
loop3: lw $s0, 0($t9)
blt $s0, $t7, Skip
move $s1, $s0
Skip: addi $t9, $t9, 16
addi $t8, $t8, -1
bne $t8, $zero, loop3
bne $s1, $t2, No
la $a0, strA
li $v0, 4
syscall
move $a0, $s1
li $v0, 1
syscall
la $a0, newline
li $v0, 4
syscall
addi $s4, $s4, 1
No: addi $t1, $t1, 16
addi $t0, $t0, -1
bne $t0, $zero, loop1
beq $s4, $zero, Nos
j e
Nos: la $a0, strB
li $v0, 4
syscall
e: li $v0, 10
syscall

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!