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

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

Δημοσ.

Καταρχην καλησπερα και καλως σας βρηκα

λοιπον εχω αυτην την ασκηση και θελω βοηθεια

 

Να γραφτει συναρτηση που θα υπολογιζει το γινομενο δυο ακεραιων .

 

το θεμα ειναι οτι δεν μπορω να χρησιμοποιησω την εντολη του πολαπλασιασμου διοτι δεν την εχουμε μαθει ακομη

 

εγω μεχρι στιγμης εω γραψει αυτο αν και πιστευω οτι ειναι τελειως λαθος ...

 

.text
main:

addi $t0, $zero, 5
sw $t0, 0($gp)
addi $t1, $zero, 6
sw $t1, 4($gp)
addi $t2,$zero,0
sw $t2 ,8($gp)


jal ff
li $v0,10
syscall


ff:
addi $sp,$sp,-12
sw $ra, 4($sp)
sw $a0, 0($sp)
bne $t2,$t1,Exit
addi $t0, $t1, $t0
sw $t0, 0($gp)
addi $t2, $t2,1
sw $t2, 8($gp)

Δημοσ.

εχω  γραψει και αυτο

 

.text
main:
    li  $t0, 0              
    li  $t1, 0             
    li  $t2,3
    li  $t3,4
jal ff


ff:
 
   add     $t1, $t2, $t3       
    bne     $t0,3,Exit      

 

exit:
    li      $v0, 10             
    syscall            

Δημοσ.

Αν θες να κανείς πολλαπλασιασμό χωρίς την εντολή mul (ή παρόμοιες της), πρέπει να τον κανείς δημιουργώντας ένα loop στο οποίο θα κανείς τον αλγόριθμο του πολλαπλασιασμού με διαδοχικές προσθέσεις και ολισθησεις.

Δες και το βιβλίο του Patterson, δεύτερο ή τρίτο κεφάλαιο είναι. Τα εξηγεί πολύ αναλυτικά και κατανοητά και για πολλαπλασιασμό και για διαίρεση.

 

Επίσης αν θες μπορείς να εφαρμόσεις και τον αλγόριθμο του booth

Δημοσ.

Μάλλον για πέταμα είναι... (εκτός κι αν βάζεις κομμάτι του κώδικα κι όχι όλον).

Λοιπόν, θα σ δώσω ψευδοκώδικα με τον αλγόριθμο του πολλαπλασιασμού που κάνουμε στο δημοτικό και προσπάθησε να το υλοποιήσεις σε mips.

Είσοδος: 
    $a0 ο πολλαπλασιαστεος
    $a1 ο πολλαπλασιαστής
Έξοδος: $v0 το γινόμενο

Βήμα 1: $v0 = 0, $t9 = 0, $t0 = 0
Βήμα 2: βάλε στον $t0 το λιγότερο σημαντικό bit του $a1
Βήμα 3: Αν $t0 > 0 τότε $v0 = $v0 + $a0
Βήμα 4: Δεξιά ολίσθηση του $a1 κατά 1 bit
Βήμα 5: Αριστερή ολίσθηση του $a0 κατά 1 bit
Βήμα 6: $t9 = $t9 + 1
Βήμα 7: Αν $t9 < 32 τότε πήγαινε στο Βήμα 2

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...