Άσκηση 1 (α) Άσκηση 1 (γ) Άσκηση 1 (β) Παραδείγματα Assembly. Άρα με έλεγχο στον $t1 αποφασίζω αν είναι 0 ή 1.

Σχετικά έγγραφα
Τρόποι Διευθυνσιοδότησης

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

Παραδείγματα Assembly (Μέρος

Προτεινόμενες Λύσεις 1 ης Ενδιάμεσης Εξέτασης στο ΗΜΥ213 & Αποτελέσματα

Λύσεις 1 ης Ενδιάμεσης Εξέτασης στο ΗΜΥ213

ΗΜΥ 213. Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών. Διδάσκων: Δρ. Γιώργος Ζάγγουλος

Λύσεις 1 ης Ενδιάμεσης Εξέτασης στο ΗΜΥ213

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

Παραδείγματα Assembly Μέρος Γ

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

1 η Ενδιάμεση Εξέταση Απαντήσεις/Λύσεις

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. Τρίτη (3 η ) δίωρη διάλεξη. Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

ΗΜΥ 213 Εργαστήριο Οργάνωσης Υπολογιστών και Μικροεπεξεργαστών

Εντολές του MIPS (2)

ΗΥ 232 Οργάνωση και Σχεδίαση Υπολογιστών. Διάλεξη 3 Εντολές του MIPS (2)

Αρχιτεκτονική Μικροεπεξεργαστών MIPS-32. Αρχείο καταχωρητών και Χάρτης Μνήµης

Διαδικασίες ΙI. ΗΥ 134 Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι. Διάλεξη 5

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

Μετατροπή χαρακτήρων ASCII σε αριθμό (atoi) & διάβασμα, και αποθήκευση του περιεχομένου του στη μνήμη. (Διάλεξη. Πανεπιστήμιο Κύπρου

ΕΠΛ605 Εργασία 1 Ημερομηνία Παράδοσης 12/9/2018 στην αρχή του μαθήματος

Μετατροπή χαρακτήρων ASCII σε ακέραιο αριθµό (atoi) & Άνοιγµα αρχείου µέσα από τo QtSPIM, διάβασµα, και αποθήκευση του περιεχοµένου του στη µνήµη

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

Τελική Εξέταση, Απαντήσεις/Λύσεις

Λύσεις 2 ης Ενδιάμεσης Εξέτασης στο ΗΜΥ213

Δείγμα Τελικής Εξέτασης στο ΗΜΥ213. Διδάσκοντας: Γιώργος Ζάγγουλος

1 η Άσκηση Στην Αρχιτεκτονική Υπολογιστών

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 2 ο. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Αρχιτεκτονική Υπολογιστών

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Φροντιστήριο: MIPS assembly

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

Εργαστήριο Αρχιτεκτονική Υπολογιστών Ι ΤΡΑΠΕΖΑ ΘΕΜΑΤΩΝ. Άσκηση 2 Ποιες οι τιμές των καταχωρητών μετά την εκτέλεση του προγράμματος ;

add $t0,$zero, $zero I_LOOP: beq $t0,$s3, END add $t1, $zero,$zero J_LOOP: sub $t2, $s3, $t0 add $t2, $t2, $s1 int i, j, tmp; int *arr, n;

Αρχιτεκτονική Υπολογιστών Ι

ΗΜΥ 213. Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών LAB 1 ( )

ΤΙΤΛΟΣ ΕΡΓΑΣΤΗΡΙΑΚΗΣ ΑΣΚΗΣΗΣ ΟΙ ΚΑΤΑΧΩΡΗΤΕΣ ΚΑΙ Η ΥΛΟΠΟΙΗΣΗ ΤΟΥΣ ΜΕ FLIP-FLOP ΚΑΙ ΠΥΛΕΣ

Διαδικασίες Ι. ΗΥ 134 Εισαγωγή στην Οργάνωση και στον Σχεδιασμό Υπολογιστών Ι. Διάλεξη 4

Οργάνωση και Σχεδίαση Υπολογιστών Η ιασύνδεση Υλικού και Λογισµικού, 4 η έκδοση. Κεφάλαιο 2. Εντολές: η γλώσσα του υπολογιστή

ΘΕΜΑ : ΣΥΣΤΗΜΑΤΑ ΑΡΙΘΜΗΣΗΣ. ΔΙΑΡΚΕΙΑ: 1 περιόδους. 22/1/ :11 Όνομα: Λεκάκης Κωνσταντίνος καθ. Τεχνολογίας

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Οργάνωση και Σχεδίαση Υπολογιστών Η ιασύνδεση Υλικού και Λογισµικού, 4 η έκδοση. Κεφάλαιο 3. Αριθµητική για υπολογιστές

Αρχιτεκτονική Υπολογιστών

9. ΚΑΤΑΧΩΡΗΤΕΣ (REGISTERS)

Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών H/Y Department of Electrical and Computer Engineering. Εργαστήριο 1. Χειμερινό Εξάμηνο

Αρχιτεκτονική Υπολογιστών

Συναρτήσεις-Διαδικασίες

Ανασκόπηση στα ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ

Δρ. Παναγιώτης Μ. Παπάζογλου Επίκουρος Καθηγητής ΤΕΙ Λαμίας. Διδακτικό βοήθημα γρήγορης μελέτης για τον προγραμματισμό του μικροεπεξεργαστή MIPS 32bit

Αρχιτεκτονική Υπολογιστών. Data. Κείμενο. Βίντεο. Αριθμοί Εικόνες. Ήχοι

Σύγχρονες Αρχιτεκτονικές Υπολογιστών

Αριθμητική Υπολογιστών (Κεφάλαιο 3)

Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»

Οργάνωση Η/Υ. Ο Επεξεργαστής TRN. Τμήμα Εφαρμοσμένης Πληροφορικής Πανεπιστήμιο Μακεδονίας Α. Χατζηγεωργίου-Η. Σακελλαρίου

ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΛΑΜΙΑΣ. A. Μετατροπή αριθμών 1. Μετατροπή αριθμών από δεκαδικό σε δυαδικό σύστημα αρίθμησης

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L. Hennessy. Chapter 2. Εντολές : Η γλώσσα του υπολογιστή

Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας. Πληροφορική Ι. Μάθημα 4 ο Πράξεις με bits. Δρ.

Πρόχειρες Σημειώσεις. Θ. Ζαχαριάδης Αν. Καθηγητής. Λ. Σαράκης Καθ. Εφαρμογών

Αρχιτεκτονική Υπολογιστών

ΕΘΝΙKΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ. Ονοματεπώνυμο: ΑΜ:

Αρχιτεκτονικη υπολογιστων

1 η ΑΣΚΗΣΗ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ. Ακ. έτος , 5ο Εξάμηνο, Σχολή ΗΜ&ΜΥ

Εισαγωγή στον Προγραμματισμό

Αρχιτεκτονική υπολογιστών

Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας. Πληροφορική Ι. Αναπαράσταση αριθμών στο δυαδικό σύστημα. Δρ.

Chapter 5. Ο επεξεργαστής: διαδρομή δεδομένων και μονάδα ελέγχου. Ενδέκατη (11 η ) δίωρη διάλεξη.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ Η/Υ ΠΡΩΤΗ ΠΡΟΟΔΟΣ ΣΤΗΝ «ΟΡΓΑΝΩΣΗ ΚΑΙ ΣΧΕΔΙΑΣΗ Η/Y»

Πανεπιστήμιο Θεσσαλίας Τμήμα Μηχανικών Η/Υ, Τηλεπικοινωνιών και Δικτύων

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής

Εργαστήριο 2. Εαρινό Εξάμηνο Εντολές για είσοδο ακεραίων αριθμών από την κονσόλα:

Αριθμητικά Συστήματα

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

ΜΥΥ- 402 Αρχιτεκτονική Υπολογιστών Μεταγλώτιση, σύνδεση

Οργάνωση και Σχεδίαση Υπολογιστών Η Διασύνδεση Υλικού και Λογισμικού, 4 η έκδοση. Σύντομη Εισαγωγή στη χρήση του προσομοιωτή και συμβολομεταφραστή

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Οργάνωση Η/Υ. Γιώργος ηµητρίου. Μάθηµα 2 ο. Πανεπιστήµιο Θεσσαλίας - Τµήµα Μηχανικών Η/Υ, Τηλεπικοινωνιών και ικτύων

LANGUAGE OF THE MACHINE. TEI Κρήτης, Τμ. ΕΠΠ, Αρχιτεκτονική Υπολογιστών. Οργάνωση Υπολογιστή. Τυπική οργάνωση υπολογιστή

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Αρχιτεκτονική-Ι. Ενότητα 1: Εισαγωγή στην Αρχιτεκτονική -Ι

Προγραμματισμός Ι (ΗΥ120)

ΗΜΥ 213 Εργαστήριο Οργάνωσης Υπολογιστών και Μικροεπεξεργαστών

Πρόγραμμα Επικαιροποίησης Γνώσεων Αποφοίτων ΑΡΙΘΜΗΤΙΚΑ ΣΥΣΤΗΜΑΤΑ

ΗΜΥ 100 Εισαγωγή στην Τεχνολογία

Η γλώσσα προγραμματισμού C

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ. ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Μέρος Β (Οργάνωση Υπολογιστών)

Δυαδικό Σύστημα Αρίθμησης

AΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ (5 ο εξάμηνο) ΕΠΑΝΑΛΗΠΤΙΚΗ ΕΞΕΤΑΣΗ (ΦΘΙΝΟΠΩΡΟ 2007) ΔΙΑΡΚΕΙΑ ΕΞΕΤΑΣΗΣ: 2 ΩΡΕΣ 30 ΛΕΠΤΑ

Μελέτη και σχεδίαση µιας υποτυπώδους κεντρικής µονάδας επεξεργασίας στα 32 µπιτ.

Τέτοιες λειτουργίες γίνονται διαμέσου του

Αρχιτεκτονική Υπολογιστών

Οργάνωση Υπολογιστών

Εισαγωγή στην επιστήμη των υπολογιστών

Εισαγωγή στους Η/Υ. Γιώργος Δημητρίου. Μάθημα 3-4: Προγραμματισμός MIPS. Πανεπιστήμιο Θεσσαλίας - Τμήμα Πληροφορικής

Προγραμματισμός Υπολογιστών

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

Transcript:

(α) Παραδείγματα Assembly Εαρινό Εξάμηνο 2012 Γράψτε ένα μικρό πρόγραμμα (1-3 εντολές) με το οποίο μπορείτε να ανιχνεύσετε την τιμή του δυαδικού ψηφίου στη θέση 7 της θέσης μνήμης 0Χ23450009 εάν το λιγότερο σημαντικό ψηφίο είναι αυτό που βρίσκεται στη θέση 0. lb $t1, 0x23450009 andi $t1, $t1, 0x80 # 0x80 = 1000 0000 Άρα με έλεγχο στον $t1 αποφασίζω αν είναι 0 ή 1. 1 2 (β) (γ) Γράψτε με 2 διαφορετικούς τρόπους (addressing modes) μικρά προγράμματα (1-3 εντολές το καθένα) που να φορτώνουν μόνο το περιεχόμενο της θέσης μνήμης 0Χ18000081 στον καταχωρητή $t1. 1. lb $t1, 0Χ18000081 2. li $t2, 0Χ18000081 lb $t1, 0($t2) Συμπληρώστε τις εντολές srl, και and, έτσι ώστε ηκάθεεντολήνα μηδενίζει τον καταχωρητή $t1. srl $t1 $t1, 32 # ή 0x20 and $t1, $t1, $zero 3 4

Άσκηση 2 (α) Εξηγήστε την εντολή srl $t5, $t4, 8 εάν τα περιεχόμενα των καταχωρητών πριν την εκτέλεση της είναι ως ακολούθως: $t4 = 00F0Α012 και $t5 = 03706Β2Ε. Ποιο θα είναι το αποτέλεσμα; Κάνει δεξιά ολίσθηση κατά 8 μπιτς στο περιεχόμενο του $t4 και αποθηκεύει το αποτέλεσμα στον $t5. 00F0A012 >> 8 bits, άρα 2 ψηφία Hex: Άσκηση 2 (β) Δίνονται τα περιεχόμενα των καταχωρητών ως ακολούθως: $t6 = 1200F0Α0 και $t7 = 0Β23706Ε. Εξηγήστε την εντολή andi $t6, $t7, 0X17 και υπολογίστε τα περιεχόμενα του καταχωρητή στον οποίο θα αποθηκευτεί το αποτέλεσμα. Λογική πράξη and μεταξύ του περιεχομένου του $t7 και της τιμής 0X17. Αποθήκευση του αποτελέσματος στον $t6. 0Β23 706Ε 0110 1110 0000 0017 and όπου ΧΧ είναι: 0001 0111 and 0000 00ΧΧ 0000 0110 $t5 = 0000F0A0 5 Άρα $t6 = 0Χ00000006 6 Άσκηση 2 (γ) Δίνονται τα περιεχόμενα των καταχωρητών ως ακολούθως: $t3 = 12F400Α0, $t4 = 7890Β800, $t5 = 00007800. Εξηγήστε την εντολή xor $t3, $t4, $t5 και υπολογίστε τα περιεχόμενα του καταχωρητή στον οποίο θα αποθηκευτεί το αποτέλεσμα. Λογική πράξη xor ανα μπίτ. Αν το 1 μπιτ είναι μηδέν ηέξοδος= με το άλλο μπίτ. Άρα με xor μεταξύ $t4 και $t5, το αποτέλεσμα θα είναι: 7890ΧΧ00, όπου ΧΧ = xor μεταξύ Β8 και 78 που δίνει C0. Το αποτέλεσμα θα αποθηκευτεί στον $t3 και είναι: 7890 C0 00 Άσκηση 3 (α) Εάν οι θέσεις μνήμης 0Χ34560000 έως 0Χ34560009 έχουν αποθηκευμένες τις δεκαεξαδικές τιμές Α0, Α1, Α2, Α3, Α4, Α5, Β6, Β7, Β8 και Β9 αντίστοιχα, υπολογίστε τα περιεχόμενα των καταχωρητών μετά την εκτέλεση των εντολών: lb $t5, 0X34560007 $t5 = XX XX XX B7 lw $t7, 0X34560004 $t7 = B7 B6 A5 A4 7 8

Άσκηση 3 (β) Ποιες διευθύνσεις μνήμης θα αλλάξουν περιεχόμενο μετά την εκτέλεση των πιο κάτω εντολών; Καθορίστε επίσης το νέο τους περιεχόμενο σε δεκαεξαδική μορφή εάν $t8 = 0Χa12bc34d. 1. sb $t8, 0X20000004 2. sw $t8, 0X20000008 1. Ηθέσημνήμης 0X20000004 θα γίνει 4d 2. Οι θέσεις μνήμης 0X20000008, 0X20000009, 0X2000000Α, και 0X2000000Β, θα γίνουν 4d, c3, 2b, και a1 αντίστοιχα Άσκηση 3 (γ) Εξηγήστε την εντολή sll $t5, $t4, 0Χ10, εάν τα περιεχόμενα των καταχωρητών πριν την εκτέλεση της είναι ως ακολούθως: $t4 = 00F0Α012 και $t5 = 03706Β2Ε Αριστερή ολίσθηση του περιεχομένου του $t4 κατά 16 θέσεις και αποθήκευση του αποτελέσματος στον $t5. Λόγω του ότι το κάθε δεκαεξαδικό ψηφίο είναι 4 μπιτς, το περιεχόμενο του $t4 θα ολισθήσει αριστερά κατά 4 ψηφία και θα εισαχθούν από δεξιά 4 μηδενικά. $t5 = Α012 0000 9 10 Άσκηση 4 (α) Γράψτε ένα πρόγραμμα (με loop) που να πολλαπλασιάζει την τιμή του καταχωρητή $t5 3 φορές με το 2 και μετά από κάθε πολλαπλασιασμό να εκτυπώνει την τιμή του στην οθόνη (με κλήση συστήματος). Η αρχική τιμή του καταχωρητή $t5 να είναι 10. Το loop να εκτελεστεί μόνο 3 φορές, άρα στην οθόνη αναμένεται να εκτυπωθούν 3 αριθμοί (20, 40 και 80). Άσκηση 4 (α) 1. li $t5, 0xa ή li $t5, 10 2. li $t0, 0 3. li $t1, 3 4. loop: beq $t0, $t1, end_p 5. sll $t5, $t5, 1 6. li $v0, 1 7. move $a0, $t5 8. 9. addi $t0, $t0, 1 10. b loop 11. end_p: 11 12

Άσκηση 4 (β) Γράψτε ένα πρόγραμμα που να φορτώνει στον καταχωρητή $t1 την τιμή 0Χ50 και στην συνέχεια (με loop) να τον διαιρεί 2 φορές με το 2 και να εκτυπώνει το αποτέλεσμα της κάθε διαίρεσης στην οθόνη ως integers (άρα θα εκτυπωθούν 2 αριθμοί, ο 0Χ50/2 και ο 0Χ50/4). 13 Άσκηση 4 (β) 1. li $t1, 0x50 # ή li $t1, 80 2. li $t0, 0 3. li $t1, 2 4. loop: beq $t0, $t1, end_p 5. srl $t5, $t5, 1 6. li $v0, 1 7. move $a0, $t5 8. 9. addi $t0, $t0, 1 10. b loop 11. end_p: 14 Άσκηση 4 (γ) Γράψτε ένα πρόγραμμα που να φορτώνει στον καταχωρητή $t8 τα περιεχόμενα του $t7 και στην συνέχεια να πραγματοποιεί xor μεταξύ των 3 τελευταίων (λιγότερο σημαντικών) μπιτς του $t8 (με τη χρήση loop). Το αποτέλεσμα (1 ή 0) να αποθηκευτεί στη διεύθυνση μνήμης: 0ΧΑΒ123456. 15 Άσκηση 4 (γ) 1. move $t8, $t7 # addi $t8, $t7, 0 2. li $t0, 0 3. li $t1, 3 4. loop: beqz $t1, end_p 5. andi $t6, $t8, 1 6. xor $t0, $t0, $t6 7. srl $t8, $t8, 1 8. addi $t1, $t1, -1 9. b loop 10. end_p: sb $t0, 0ΧΑΒ123456 16

(Kωδικοποίηση Hamming) # Hamming Encoder (7,4) to (8,4) with extra parity bit.data input:.word 0xfedcba98 # 0x76543210 code_name:.asciiz"hamming Code Program\n" input_num:.asciiz"your Input Number: " encoded:.asciiz"gives a Hamming Encoded Num of :" text3:.asciiz Wrong Number!Number must be between 0-255\nTry again.\n" newline:.asciiz \n" 17.text main: move $s1, $zero # initialise $s1 with 0 move $t1, $zero # initialise $t1 with 0 move $t2, $zero # initialise $t2 with 0 move $t4, $zero # initialise $t4 with 0 move $t8, $zero # initialise $t8 with 0 lw $t0, input # load the 32-bit num into $t0 la $a0, code_name # print the name of the code 18 next_num: andi $t9, $t0, 15 # masking to separate the 4 least significant bits la $a0, input_num # print the first number to be encoded li $v0, 1 move $a0, $t9 # move the 4-bit number in $a0 to be printed # [p1, p2, d1, p3, d2, d3, d4, p4] transmited bits # [t1, t2, t3, t4, t5, t6, t7, t8] their registers 19 andi $t7, $t9, 1 xor $t1, $t7, $zero xor $t2, $t7, $zero xor $t4, $t7, $zero xor $t8, $t7, $zero srl $t6, $t9, 1 andi $t6, $t6, 1 xor $t2, $t2, $t6 xor $t4, $t4, $t6 xor $t8, $t8, $t6 # masking to check d4 # for p1 # for p2 # for p3 # for p4 # shift 1 bit to the right # the original number # masking to check d3 # for p2 # for p3 # for p4 20

srl $t5, $t9, 2 # shift 2 bit to the right the original num andi $t5, $t5, 1 # masking to check d2 xor $t1, $t1, $t5 # for p1 xor $t4, $t4, $t5 # for p3 xor $t8, $t8, $t5 # for p4 srl $t3, $t9, 3 # shift 3 bit to the right the original num andi $t3, $t3, 1 # masking to check d1 xor $t1, $t1, $t3 # for p1 xor $t2, $t2, $t3 # for p2 xor $t8, $t8, $t3 # for p4 xor $t8, $t8, $t1 # for P4 xor $t8, $t8, $t2 # for P4 xor $t8, $t8, $t4 # for P4 21 # constract the encoded number [p1, p2, d1, p3, d2, d3, d4, p4] # using the weight of each position [t1, t2, t3, t4, t5, t6, t7, t8] move $s0, $zero # initialise $s0 to keep the result beqz $t8, skip1 addi $s0, $s0, 1 # only if $t8=1, add 1 to the encoded num skip1: beqz $t7, skip2 addi $s0, $s0, 2 # only if $t7=1, add 2 to the encoded num skip2: beqz $t6, skip4 addi $s0, $s0, 4 # only if $t6=1, add 4 to the encoded num skip4: beqz $t5, skip8 addi $s0, $s0, 8 # only if $t5=1, add 8 to the encoded num skip8: beqz $t4, skip16 addi $s0, $s0, 16 # only if $t4=1, add 16 to the encoded num skip16: beqz $t3, skip32 addi $s0, $s0, 32 # only if $t3=1, add 32 to the encoded num skip32: beqz $t2, skip64 addi $s0, $s0, 64 # only if $t2=1, add 64 to the encoded num skip64: beqz $t1, skip_end addi $s0, $s0, 128 # only if $t1=1, add 128 to the encoded num 22 skip_end: la $a0, encoded li $v0, 1 move $a0, $s0 la $a0, newline # print the encoded number message # move the 4-bit number in $a0 to be printed # print an empty line srl $t0, $t0, 4 # shift 4bits to the right the 32-bit word addi $s1, $s1, 1 # increment counter of numbers to be encoded bne $s1, 8, next_num # branch to next_num until 8 numbers are encoded li $v0, 10 # exit programme 23