Προς το περιεχόμενο

Assembly MIPS prob


marsel

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλημέρα,

έχω ένα πρόβλημα με μια άσκηση σε 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

 

αλλά δεν μπορώ να βρω το λάθος που έχω κάνει.

Δημοσ.

ο κωδικας εκτελειται σειριακα αρα μετα το ΕΧΙΤ δεν πρεπει να βαλεις αλλες εντολες....

συνηθως μετα το ΕΧΙΤ βαζουμε τις συναρτησεις μας....

στο

ΕΧΙΤ:

li $v0,10

syscall

----------------------

η συναρτηση σου ποια ειναι??

πρεπει να κανεις μια συναρτηση την οποια θα την καλεις με jal και το ονομα της...

και η συναρτηση αυτη θα περιεχει αυτα που ζηταει η εκφωνηση και στο τελος την εντολη jr $ra η οποια σε πηγαινει στο σημειο π καλεσες την συναρτηση και συνεχιζει να εκτελει μετα κανονικα το προγραμμα...

Δημοσ.

Εκεί κολλάω και το βιβλίο δεν με βοηθάει πολύ. Δεν θέλω έτοιμη την λύση αλλά μπορείς να μου δείξεις πως θα βάλω την συνάρτηση? Δηλαδή πως θα την ορίζω και πως θα την καλώ, μαζί με το loop. Δείξε μου κάτι άσχετο, όχι απαραίτητα την άσκηση, γιατί θέλω να καταλάβω πιο πολύ.

Δημοσ.

>
.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 #επιστρέφει στην επόμενη εντολή από αυτήν που κάλεσε την συνάρτηση αυτή

 

 

δες τον κώδικα και τα σχόλια.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...