marsel Δημοσ. 21 Μαρτίου 2010 Δημοσ. 21 Μαρτίου 2010 Καλημέρα, έχω ένα πρόβλημα με μια άσκηση σε Assembly MIPS.Η εκφώνηση είναι η εξής: Να ετοιμαστεί συνάρτηση που δέχεται ως παραμέτρους δύο θετικούς ακεραίους και επιστρέφει το γινόμενό τους. Για την εξέταση θα πρέπει να δημιουργηθεί main που καλεί τη συνάρτηση. Οι ακέραιοι που θα πολλαπλασιαστούν θα οριστούν την ώρα της εξέτασης. Δηλαδή ζητάει την mult με χρήση add και loop.Έχω γράψει τον εξής κώδικα: .data var1: .word 3 var2: .word 4 .text main: lw $s0, var1 lw $s1, var2 Loop: beq $s1, 0, Exit lw $s2, 0 lw $s3, 1 add $s2, $s2, $s0 sub $s1, $s1, $s3 j Loop Exit: li $v0, 1 #load syscall for printing integer move $a0, $s2 #move result that is goning to be printed in $a0 syscall αλλά δεν μπορώ να βρω το λάθος που έχω κάνει.
vraxoulis Δημοσ. 21 Μαρτίου 2010 Δημοσ. 21 Μαρτίου 2010 ο κωδικας εκτελειται σειριακα αρα μετα το ΕΧΙΤ δεν πρεπει να βαλεις αλλες εντολες.... συνηθως μετα το ΕΧΙΤ βαζουμε τις συναρτησεις μας.... στο ΕΧΙΤ: li $v0,10 syscall ---------------------- η συναρτηση σου ποια ειναι?? πρεπει να κανεις μια συναρτηση την οποια θα την καλεις με jal και το ονομα της... και η συναρτηση αυτη θα περιεχει αυτα που ζηταει η εκφωνηση και στο τελος την εντολη jr $ra η οποια σε πηγαινει στο σημειο π καλεσες την συναρτηση και συνεχιζει να εκτελει μετα κανονικα το προγραμμα...
marsel Δημοσ. 21 Μαρτίου 2010 Μέλος Δημοσ. 21 Μαρτίου 2010 Εκεί κολλάω και το βιβλίο δεν με βοηθάει πολύ. Δεν θέλω έτοιμη την λύση αλλά μπορείς να μου δείξεις πως θα βάλω την συνάρτηση? Δηλαδή πως θα την ορίζω και πως θα την καλώ, μαζί με το loop. Δείξε μου κάτι άσχετο, όχι απαραίτητα την άσκηση, γιατί θέλω να καταλάβω πιο πολύ.
virxen75 Δημοσ. 21 Μαρτίου 2010 Δημοσ. 21 Μαρτίου 2010 > .data str: .asciiz "Hello!.\n" .text .globl main main: jal message #εδώ καλώ την συνάρτηση που θέλω.Μόλις τελειώσει αυτή,εκτελείται η επόμενη εντολή jal message li $v0,10 syscall #exit εδώ τελειώνει το πρόγραμμα μας.Από εδώ και κάτψ γράφω τις συναρτήσεις που θέλω message: #μία συνάρτηση που τυπώνει το μήνυμα μας στην οθόνη,όταν καλείται la $a0,str li $v0,4 syscall jr $ra #επιστρέφει στην επόμενη εντολή από αυτήν που κάλεσε την συνάρτηση αυτή δες τον κώδικα και τα σχόλια.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.