ΗΜΥ 213 Εργαστήριο Οργάνωσης Ηλεκτρονικών Υπολογιστών και Μικροεπεξεργαστών Διδάσκων: Δρ. Γιώργος Ζάγγουλος Email: zaggoulos.george@ucy.ac.cy www.ece.ucy.ac.cy/courses/ece213
Δηλώσεις Μεταβλητών 1..data 2. users:.byte1, 2, 3, 4, 5, 6 3. time:.word20, 30, 40, 50 4. results:.space 1000 5..text 6. main 2 Εργαστήριο Οργάνωσης Η.Υ. και Μικροεπεξεργαστών Γ. Ζ.
Μετάβαση υπό προϋποθέσεις Branch if equal beq rs, rt, label Branch if zero beqz rs, label Branch if not equal bne rs, rt, label Branch if greater bgt rs, rt, label Ο rt μπορεί να αντικατασταθεί με αριθμό! Ποια η διαφορά μεταξύ bgtκαι bgtu; Μετάβαση χωρίς προϋποθέσεις μπορεί να γίνει με τις εντολές Jump και Branch Ποια η διαφορά μεταξύ Jump και Branch; 3 Εργαστήριο Οργάνωσης Η.Υ. και Μικροεπεξεργαστών Γ. Ζ.
Τρόποι Διευθυνσιοδότησης A45 Η διεύθυνση μνήμης μπορεί να δηλωθεί με 6 τρόπους: 1. Περιεχόμενο καταχωρητή: lw $t1, ($t2) 2. Άμεση τιμή: lb $t1, 0x10abcdef 3. Άμεση τιμή + περιεχόμενο καταχωρητή: lw $t1, 28($t2) 4. Διεύθυνση που αντιστοιχεί σε ετικέτα users : lb $t2, users 5. Διεύθ. ετικέτας +/- άμεση τιμή: lb $t3, users+3 6. Διεύθυνση ετικέτας +/-(άμεση τιμή + περιεχόμενο καταχωρητή: lb $t4, spaces-2($t2) 4 Εργαστήριο Οργάνωσης Η.Υ. και Μικροεπεξεργαστών Γ. Ζ.
Χάρτης Μνήμης (Παράδειγμα) (Data) Περιεχόμενα Διεύθυνσης Μνήμης 0x1000001B (Data) Περιεχόμενα Διεύθυνσης Μνήμης 0x1000000Α ΑΒ Ε3 Β1 33 99 77 21 34 88 66 32 56 ΒΒ ΕΕ 55 ΑΑ 10 20 30 40 54 2Α 3Β 22 ΕΑ ΑΒ 23 11 ΔΙΕΥΘΥΝΣΗ 0x10000018 0x10000014 0x10000010 0x1000000C 0x10000008 0x10000004 0x10000000 5 Εργαστήριο Οργάνωσης Η.Υ. και Μικροεπεξεργαστών Γ. Ζ.
Εντολές Load..18..14..10..0C Έστω ότι $t6 =0x10000004, σκεφτείτε τί αλλάζει πιο κάτω: 1. lb $t1, 2($t6) 2. lw $t2, 0x1000000C 3. lw $t3, 4($t6) 4. lw $t4, 12($t6) 5. la $t5, 0x10000014 $t1=0x0000002a = 2A $t2=0xbbee55aa $t3=0x10203040 $t4=0x88663256 $t5=0x10000014..08..04..00 6 Εργαστήριο Οργάνωσης Η.Υ. και Μικροεπεξεργαστών Γ. Ζ.
Εντολές Store (συνέχεια από Load) Από Load: $t3=0x10203040, $t4=0x88663256, $t5=0x10000014, $t6 = 0x10000004 1. sw $t3, 0x10000004 2. sw $t4, 16($t6) 3. sb $t5, 0x10000003 0x10000004/5/6/7= 40 302010 0x10000014/5/6/7= 56 326688 0x10000003 = 14 Μνήμη: Πριν και Μετά από την εκτέλεση των 3 εντολών Store 88 66 32 56 10 20 30 40 14 ΔΙΕΥΘΥΝΣΗ 0x10000018 0x10000014 0x10000010 0x1000000C 0x10000008 0x10000004 0x10000000 7 Εργαστήριο Οργάνωσης Η.Υ. και Μικροεπεξεργαστών Γ. Ζ.
Άσκηση 1 Γράψτε ένα μικρό πρόγραμμα (1-3 εντολές) με το οποίο μπορείτε να ανιχνεύσετε την τιμή του δυαδικού ψηφίου στη θέση 7 της θέσης μνήμης 0Χ23450009 εάν το λιγότερο σημαντικό ψηφίο είναι αυτό που βρίσκεται στη θέση 0. lb $t1, 0x23450009 andi $t1, $t1, 0x80 # 0x80 = 1000 0000 beqz $t1, bit_was0 # if bit was 1 συνεχίζει εδώ το πρόγραμμα # if bit was 0 θα συνεχίσει στο bit_was0: 8 Εργαστήριο Οργάνωσης Η.Υ. και Μικροεπεξεργαστών Γ. Ζ.
Άσκηση 2 Γράψτε με 2 διαφορετικούς τρόπους (addressing modes) μικρά προγράμματα (1-3 εντολές το καθένα) που να φορτώνουν μόνοτο περιεχόμενο της θέσης μνήμης 0Χ18000081 στον καταχωρητή $t1. 1. lb $t1, 0Χ18000081 2. la $t2, 0Χ18000081 lb $t1, 0($t2) 3. la $t3, 0Χ1800007F lb $t1, 2($t3) Ίδιος τρόπος 9 Εργαστήριο Οργάνωσης Η.Υ. και Μικροεπεξεργαστών Γ. Ζ.
Άσκηση 3 Συμπληρώστε τις εντολές srl, και and, έτσι ώστε η κάθε εντολή να μηδενίζει τον καταχωρητή $t1. srl $t1 $t1, 31 srl $t1 $t1, 1 Χρειάζονται 2 εντολές and $t1, $t1, $zero A56 10 Εργαστήριο Οργάνωσης Η.Υ. και Μικροεπεξεργαστών Γ. Ζ.
Άσκηση 4 Εξηγήστε την εντολή srl$t5, $t4, 8 εάν τα περιεχόμενα των καταχωρητών πριν την εκτέλεση της είναι ως ακολούθως: $t4 = 00F0Α012 και $t5 = 03706 Β2Ε. Ποιο θα είναι το αποτέλεσμα; Κάνει δεξιά ολίσθηση κατά 8 μπιτς στο περιεχόμενο του $t4 και αποθηκεύει το αποτέλεσμα στον $t5. 00F0A012 >> 8 bits, άρα 2 ψηφία Hex: $t5 = 0000F0A0 11 Εργαστήριο Οργάνωσης Η.Υ. και Μικροεπεξεργαστών Γ. Ζ.
Άσκηση 5 Δίνονται τα περιεχόμενα των καταχωρητών ως ακολούθως: $t6 = 1200F0Α0 και $t7 = 0Β23706Ε Εξηγήστε την εντολή andi$t6, $t7, 0x17και υπολογίστε τα περιεχόμενα του καταχωρητή στον οποίο θα αποθηκευτεί το αποτέλεσμα. Λογική πράξη and μεταξύ του περιεχομένου του $t7 και της τιμής 0x17. Αποθήκευση του αποτελέσματος στον $t6. 0Β23706Ε 01101110 0000 0017 andόπου ΧΧ είναι: 00010111 and 000000ΧΧ 00000110 Άρα $t6 = 0x00000006 12 Εργαστήριο Οργάνωσης Η.Υ. και Μικροεπεξεργαστών Γ. Ζ.
Άσκηση 6 Εξηγήστε την εντολή xor$t3, $t4, $t5 και υπολογίστε τα περιεχόμενα του καταχωρητή στον οποίο θα αποθηκευτεί το αποτέλεσμααν αρχικά οι καταχωρητές: $t3 = 12F400Α0, $t4 = 7890Β800, $t5 = 00007800. Λογική πράξη xor ανα μπίτ. Αν μια είσοδος της xor είναι μηδέν, τότε η έξοδος = με την άλλη είσοδο. Άρα με xorμεταξύ $t4 και $t5, το αποτέλεσμα θα είναι: 7890??00, όπου??είναι οι έξοδοι 8 πυλών xorμε εισόδους Β8και 78 αντίστοιχα. Αυτές δίνουν C0, άρα ολόκληρο το αποτέλεσμα (32 μπιτς) που θα αποθηκευτεί στον $t3 θα είναι: 7890 C000 13 Εργαστήριο Οργάνωσης Η.Υ. και Μικροεπεξεργαστών Γ. Ζ.
Άσκηση 7 Εάν οι θέσεις μνήμης 0Χ34560000 έως 0Χ34560009 έχουν αποθηκευμένες τις τιμές (HEX)Α0, Α1, Α2, Α3, Α4, Α5, Β6, Β7, Β8 και Β9 αντίστοιχα, υπολογίστε τα περιεχόμενα των καταχωρητών μετά την εκτέλεση των εντολών: lb $t5, 0X34560007 lw $t7, 0X34560004 $t5 = 00 00 00 B7 $t7 = B7 B6 A5 A4 14 Εργαστήριο Οργάνωσης Η.Υ. και Μικροεπεξεργαστών Γ. Ζ.
Άσκηση 8 Ποιες διευθύνσεις μνήμης θα αλλάξουν περιεχόμενο μετά την εκτέλεση των πιο κάτω εντολών; 1. sb $t8, 0X20000004 2. sw$t8, 0X20000008 Καθορίστε επίσης το νέο τους περιεχόμενο σε δεκαεξαδική μορφή εάν: $t8 = 0Χa12bc34d 1. Η θέση μνήμης 0X20000004θα γίνει 4d 2.Οι θέσεις μνήμης 0X20000008, 0X20000009, 0X2000000Α, και 0X2000000Β, θα γίνουν 4d, c3, 2b, και a1 αντίστοιχα 15 Εργαστήριο Οργάνωσης Η.Υ. και Μικροεπεξεργαστών Γ. Ζ.