εργασια σε assembly, mips32

συζητήσεις για assembly

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
lifempn
Δημοσιεύσεις: 1
Εγγραφή: 16 Νοέμ 2015 17:36

εργασια σε assembly, mips32

Δημοσίευση από lifempn » 16 Νοέμ 2015 17:46

Καλησπέρα, μας εχουν βάλει την εξης εργασία :
Γράψτε ένα πρόγραμμα, στη συμβολική γλώσσα του επεξεργαστή MIPS32, που διαβάζει
τέσσερα 16-αδικά ψηφία που παριστούν έναν 16-αδικό μη προσημασμένο ακέραιο αριθμό,πυκνώνει τα ψηφία αυτά στον καταχωρητή $t1, υπολογίζει τον ισοδύναμο δεκαδικό ακέραιο αριθμό και τον εμφανίζει στην οθόνη.

μας εχει πει, οτι το καθε ψηφίο πρεπει να διαβαστει ξεχωριστα και ότι η πθκνωση γίνεται με sll και οr εντολες!

εχω κανει το κομματι οπου ζηταει απο το χρηστη να δωσει ενα ενα τα ψηφια ξεχωριστα όμως αντιμετωπίζω προβλημα με την πυκνωση! δεν ξερω αν αρχικα αποθηκευω σωστα σε εναν καταχωρητη αυτο που εισαγει ο χρήστης και δεν μπορω να καταλαβω τι κανω λάθος καθως αν το τρεξω το προγραμμα ειτε σε qtspim ειτε σε mars μου βγαζει δεκαδικο ή δυαδικο(αναλογα με το τι εντολλη εμφανισησ θα βαλω) ασχετο με αυτα που εχει βαλει ο χρηστης!
παρακατω ειναι το κομματι κωδικα που εχω φτιαξει εγω θα ηθελα πολυ τη βοηθεια σας!!


.data

msg1: .asciiz "Enter first: "
msg2: .asciiz "Enter second: "
msg3: .asciiz "Enter third: "
msg4: .asciiz "Enter fourth: "
userInput: .space 4
newLine: .asciiz "\n"




.text
.globl main

main:

#display msg1
li $v0, 4
la $a0, msg1
syscall

#get user's input
li $v0, 8
la, $a0, userInput
li $a1, 4
syscall

#save the input
move $a1, $a0

#print the saved number
li $v0, 4
addi $s1, $t0, 0
syscall

#print a new line
li $v0, 4
la $a0, newLine
syscall

#sll 12 theseis
sll $t2, $s1, 12
#print that number
li $v0, 1
addi $s3, $t2, 0
syscall

#print a new line
li $v0, 4
la $a0, newLine
syscall





#display msg2
li $v0, 4
la $a0, msg2
syscall

#get user's input
li $v0, 8
la, $a0, userInput
li $a1, 4
syscall

#save the input
move $a2, $a0

#print the saved number
li $v0, 4
addi $s2, $a2, 0
syscall

#print a new line
li $v0, 4
la $a0, newLine
syscall

#sll 12 theseis
sll $t2, $s1, 8




#display msg3
li $v0, 4
la $a0, msg3
syscall

#get user's input
li $v0, 8
la, $a0, userInput
li $a1, 4
syscall

#save the input
move $a3, $a0

#print the saved number
li $v0, 4
addi $s3, $a3, 0
syscall

#print a new line
li $v0, 4
la $a0, newLine
syscall

#sll 12 theseis
sll $t3, $s3, 4





#display msg4
li $v0, 4
la $a0, msg4
syscall

#get user's input
li $v0, 8
la, $a0, userInput
li $a1, 4
syscall

#save the input
move $a1, $a0

#print the saved number
li $v0, 4
addi $s4, $a1, 0
syscall

#print a new line
li $v0, 4
la $a0, newLine
syscall

#sll 12 theseis
sll $t4, $s4, 0









#piknwnw ta stoixeia se dio kataxwrites kai meta piknwnw tous dio kataxwrites se enan ?!

or $t5, $t0, $t2
or $t6, $t3, $t4
or $t1, $t5, $t6
move $a2, $t1

#display $t1
li $v0, 1
addi $a0, $a1, 0
syscall




#end of program
li $v0, 10
syscall

LightForce
WebDev Moderator
Δημοσιεύσεις: 3812
Εγγραφή: 13 Απρ 2003 23:49

εργασια σε assembly, mips32

Δημοσίευση από LightForce » 30 Νοέμ 2015 14:32

Γεια χαρά,

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

Απάντηση

Επιστροφή στο “Assembly”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες