danielp_27 Posted October 6, 2009 Share Posted October 6, 2009 I have the following C code I am trying to convert to MIPS assembly code. I am having a problem getting it to work. Can someone help? I have attached my MIPS code. void array_comp (int num) { int array[10]; int i; for (i=0; i<10;i++) { array = comp_num(num, i); } } int comp_num (int a, int b) { if (sub(a, b) >= 0) return 1; else return 0; } int sub (int a, int b) { return a-b; } MIPS Code # Data declaration section .data enter0: .asciiz "\nEnter a number between 1 & 10: " space0: .asciiz "\n" valid0: .asciiz "Please enter a valid number between 1 & 10" array0: .space 10 # Text segment .text .globl main # Start of code section main: la $a0, enter0 # Load base address of string into $a0 li $v0, 4 # Set $v0 to 4, this tells syscall to print # text string specified by $a0 syscall # Now print the text string to console li $v0, 5 # Set $v0 to 5, this tells syscall to read # integer inputted from console syscall # Now read the integer from the console add $a0, $v0, $zero # Loads register $a0 with input from user add $a1, $zero, $zero # Initializes counter, $a1 = 0 la $a2, array0 # Load base address of array0 into $a2 array_comp: addi $sp, $sp, -8 # Making room on stack for num and i sw $a0, 4($sp) # Push num onto stack sw $a1, 0($sp) # Push i onto stack jal comp_num # Call function comp_num lw $t0, 0($sp) # Load result of array into $t0 lw $a0, 4($sp) # Load i to $a0 lw $a1, 8($sp) # Load num to $a1 addi $sp, $sp, 12 # Restore stack sw $t0, 0($a2) # Store array element addi $t0, $t0, 4 # Move pointer to next element of array addi $a0, $a0, 1 # Increment counter slt $t2, $a0, $a1 # Set $t2 = 1 if i < input value from user bne $t2, $zero, array_comp # Go to comp_num if i < input value from user li $v0, 10 #Set $v0 to 10, this tells syscall to end syscall #execution of this program comp_num: addi $sp, $sp, -4 # Making room on stack to store $ra sw $ra, 0($sp) # Push $ra onto stack jal subtract # Call function sub lw $t0, 0($sp) # Load return of sub function into $t0 lw $ra, 4($sp) # Load return address of array_comp call addi $sp, $sp, 8 # Restore stack slt $t1, $t0, $zero # $t1 = 1 if $t0 < 0 nor $v1, $t1, $zero # Set $v1 = 1 if $t1 = 0 and # $v1 = 0 if $t1 = 1 addi $sp, $sp, -4 # Make room on stack for result sw $v1, 0($sp) # Push result onto stack jr $ra # Jump back to $ra of array_comp subtract: sub $v0, $a0, $a1 # Find num-count addi $sp, $sp, -4 # Making room on stack for result sw $v0, 0($sp) # Push result onto stack jr $ra # Go to return address Quote Link to comment https://forums.phpfreaks.com/topic/176632-help-needed-with-mips/ Share on other sites More sharing options...
denniss Posted October 23, 2009 Share Posted October 23, 2009 man... im doing a project in MIPS right now... it's so painful... Quote Link to comment https://forums.phpfreaks.com/topic/176632-help-needed-with-mips/#findComment-942636 Share on other sites More sharing options...
trq Posted October 23, 2009 Share Posted October 23, 2009 I am having a problem getting it to work. No wonder. If you can't form a question in English how could you ever be expected to program a computer to do a task? Do you have an actual question? Quote Link to comment https://forums.phpfreaks.com/topic/176632-help-needed-with-mips/#findComment-942771 Share on other sites More sharing options...
denniss Posted October 23, 2009 Share Posted October 23, 2009 which compiler are you using? if you are using MARS what does the error say? Quote Link to comment https://forums.phpfreaks.com/topic/176632-help-needed-with-mips/#findComment-942971 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.