Εργαστήριο Αρχιτεκτονική Υπολογιστών Ι ΤΡΑΠΕΖΑ ΘΕΜΑΤΩΝ Άσκηση 1 Πόσους αστερίσκους θα τυπώσει το πρόγραμμα ; li $t2,2 li $t1,1 Εμφάνισε div $t1,$t2 mfhi $t3 add $t3,$t3,1 add $t1,$t1,$t3 ble $t1,10,start Πλήθος αστερίσκων Άσκηση 2 Ποιες οι τιμές των καταχωρητών μετά την εκτέλεση του προγράμματος ; li $t1,2 div $t1,$t1,1 add $t1,$t1,3 mul $t1,$t1,$t1 div $t1,$t1 mflo $t0 sub $t0,$t1,$t0 $t0= $t1= Άσκηση 3 Πόσοι αστερίσκοι θα τυπωθούν ; li $t1,1 Εμφάνισε add $t1,$t1,1 ble $t1,10,start ble $t1,5,start (α) 9 (β) 10 (γ) 15 (δ) τίποτα από αυτά
Άσκηση 4 Τι θα τυπώσει το πρόγραμμα ; la $a0,mes add $a0,$a0,4 la $a0,mes li $v0,4.data mes:.asciiz TEI Lamias Άσκηση 5 Τι θα τυπώσει το πρόγραμμα; li $t0,1 li $t1,3 start2: Εμφάνισε add $t1,$t1,-1 bgtz $t1,start2 Αλλαγή γραμμής add $t0,$t0,1 ble $t0,5,start (α) (β) (γ) (δ) άλλο, σχεδιάστε Άσκηση 6 Τι θα τυπώσει το πρόγραμμα ; li $t2,2 start1: Εμφάνισε add $t2,$t2,1 start2: Εμφάνισε & add $t2,$t2,2 ble $t2,5,start1 ble $t2,9,start2 (α) &&&& (β) &&&& (γ) &&& (δ) άλλο, σχεδιάστε
Άσκηση 7 Βρείτε το λάθος και διορθώστε το ώστε να εμφανίζεται το μήνυμα hello 1: move $v0,4 2: la $a0,mes 3: 4:.data 5: mes:.asciiz hello Γραμμές λάθους : διόρθωση : Άσκηση 8 Βρείτε το λάθος και διορθώστε το ώστε να εμφανίζεται το μήνυμα 10 φορές 1: L1: 2: li $t1,10 3: #print message 4: addi $t1,$t1,1 5: ble $t1,10,l1 Γραμμές λάθους : διόρθωση : Άσκηση 9 Τι θα εμφανίσει το πρόγραμμα αν αρχικά $t1=1, $t2=2, $t0=4 ; add $t0,$t1,$t2 mul $t0,$t0,$t2 sub $t0,$t1,$t0 bgtz $t2,l2 blt $t1,-1,l3 L1: #print AAA L2: #print BBB j exodos L3: #print CCC exodos: li $v0,10 Θεωρήστε ότι όπου υπάρχει σχόλιο #print γίνεται εμφάνιση του αντίστοιχου μηνύματος.
Άσκηση 10 Το ακόλουθο πρόγραμμα : li $t1,2 li $t2,1 L1: div $t1,$t2 mfhi $t1 add $t1,$t1,$t2 bnez $t1,l1 (α) θα κάνει ατέρμονο loop (β) Θα σταματήσει επειδή το $t1 γίνεται μηδέν (γ) Θα σταματήσει επειδή το $t2 γίνεται μηδέν (δ) τίποτα από τα παραπάνω Άσκηση 11 Τι θα εμφανίσει το ακόλουθο πρόγραμμα ; la $a0,mes li $v0,1.data mes:.asciiz hello Άσκηση 12 Γράψτε τις αντίστοιχες εντολές assembly (MIPS) P=1; I=1; do { printf( hello ); I=I+1; P=PI; } while (I<=5) #print hello Άσκηση 13 Πόσους αστερίσκους () θα εμφανίσει το ακόλουθο πρόγραμμα ; li $t1,3 again: move $t2,$t1 again2: #print addi $t2,$t2,-1 bnez $t2,again2 addi $t1,$t1,-1 bnez $t1,again (α) 7 (β) 15 (γ) 6 (δ) 1 (ε) 3
Άσκηση 14 Πότε πρέπει να καταφεύγουμε σε χρήση θέσεων μνήμης ; (α) ποτέ (β) πάντα (γ) σε περίπτωση ομαδοποιημένων υπολογισμών που απαιτούν περισσότερους καταχωρητές από τους διαθέσιμους (δ) τίποτα από τα παραπάνω Άσκηση 15 Για να εμφανίσουμε παραμετρικά το ((A+B)C/D)-E θα πρέπει να χρησιμοποιήσουμε (βέλτιστη περίπτωση): (α) 5 εμφανίσεις αριθμών, 5 εμφανίσεις αλφαριθμητικών (β) 4 εμφανίσεις αριθμών, 8 εμφανίσεις αλφαριθμητικών (γ) 7 εμφανίσεις αλφαριθμητικών (δ) 5 εμφανίσεις αριθμών, 4 εμφανίσεις αλφαριθμητικών Άσκηση 16 Τι θα εμφανίσει ο ακόλουθος κώδικας αν δώσουμε για είσοδο τo hello./after ; la $t0,lexi again: lb $t1($t0) beqz $t1,cc blt $t1,'b',bb bgt $t1,'c',bb addi $t1,$t1,-32 bb: sb $t1($t0) addi $t0,$t0,1 j again cc: #print lexi Άσκηση 17 Έστω πίνακας Α. Σημειώστε τα νέα περιεχόμενα του πίνακα μετά την εκτέλεση του ακόλουθου προγράμματος: Πίνακας Α Πρόγραμμα Πίνακας Α 2 li $t1,1 li $s0,0 1 lw $t4,pinax($s0) 33 addi $s0,$s0,4 maria: 35 lw $t3,pinax($s0) 12 blt $t3,$t4,syn sw $t4,pinax($s0) syn: addi $s0,$s0,4 addi $t1,$t1,1 ble $t1,5,maria
Άσκηση 18 Έστω ότι $t1=am Πόσους αστερίσκους θα τυπώσει το πρόγραμμα ; move $t3,$t1 li $t2,2 div $t1,$t2 mfhi $t1 Εμφάνισε add $t1,$t1,1 ble $t1,$t3,start Πλήθος αστερίσκων Άσκηση 19 Ποιες οι τιμές των καταχωρητών μετά την εκτέλεση του προγράμματος ; li $t1,2 div $t1,$t1,1 div $t1,$t1,2 mul $t1,$t1,$t1 div $t1,$t1 mfhi $t0 sub $t0,$t1,$t0 $t0= $t1= Άσκηση 20 Πόσοι αστερίσκοι θα τυπωθούν ; li $t1,1 Εμφάνισε add $t1,$t1,1 ble $t1,10,start bgt $t1,10,start (α) 9 (β) 10 (γ) 11 (δ) τίποτα από αυτά
Άσκηση 21 Τι θα τυπώσει το πρόγραμμα ; li $a0,mes li $v0,1.data mes:.asciiz Hello Άσκηση 22 Τι θα τυπώσει το πρόγραμμα; li $t0,1 li $t1,1 start2: Εμφάνισε add $t1,$t1,1 ble $t1,5,start2 Αλλαγή γραμμής add $t0,$t0,1 ble $t0,5,start (α) (β) (γ) (δ) άλλο, σχεδιάστε Άσκηση 23 Τι θα τυπώσει το πρόγραμμα ; li $t2,1 start1: Εμφάνισε add $t2,$t2,1 start2: Εμφάνισε & add $t2,$t2,1 ble $t2,5,start1 ble $t2,10,start2 (α) &&&& (β) &&&& (γ) &&& (δ) άλλο, σχεδιάστε
Άσκηση 24 Να υλοποιηθεί σε γλώσσα MIPS Assembly ο ακόλουθος ψευδοκώδικας: if (a>0) then εκτύπωσε hello1 else if (a<0) then εκτύπωσε hello2 (α) θεωρήστε ότι η μεταβλητή a υλοποιείται με τον καταχωρητή $t1 και (β) να μην χρησιμοποιηθεί κανονική συνάρτηση για την εκτύπωση αλλά απλά ένα σχόλιο του τύπου #εκτύπωσε hello1 Άσκηση 25 Γράψτε τις αντίστοιχες εντολές assembly (MIPS) P=1; I=1; while (I<=10) { printf( hello ); P=P+I; I=I+1; } Άσκηση 26 Ποια συνάρτηση υπολογίζει ο ακόλουθος κώδικας ; (θεωρήστε ότι $t1=x) mul $t2,$t1,$t1 sub $t3,$t2,$t1 add $t2,$t1,2 div $t3,$t2 mflo $t0 Άσκηση 27 Ποια συνάρτηση υπολογίζει ο ακόλουθος κώδικας ; (θεωρήστε ότι $t1=x) mul $t3,$t2,$t2 mul $t3,$t3,$t1 sub $t3,$t3,1 sub $t2,$t1,2 li $t4,2 div $t2,$t4 mfhi $t2 div $t0,$t2,$t3
Άσκηση 28 Να συμπληρωθεί ο ακόλουθος κώδικας ώστε να γεμίζει ένας λογικός πίνακας Ν θέσεων (Ν=τελευταίο ψηφίο ΑΜ+10). Κάθε αριθμός αποτυπώνεται από δύο μόνο byte. li $t2,1... li $v0,5 move $t0,$v0.data..., pinakasa (...) add $t2,..., 1 ble $t2,...,... pinakasa:.space... Άσκηση 29 Ποια η λειτουργία του ακόλουθου προγράμματος; blt $t1,10,term bgt $t1,20,term #Εμφάνιση hello term: #Έξοδος από το πρόγραμμα Άσκηση 30 Υλοποιείστε σε Assembly τον έλεγχο ΙF ((A=1) ΚΑΙ (B ανήκει στο [2,8]) then εκτύπωσε hello. Θεωρήστε ότι A=$t1, B=$t2. Η εμφάνιση του μηνύματος γίνεται απλά με την αναγραφή σχόλιου του τύπου #εκτύπωσε hello.
Άσκηση 31 Έστω πίνακας Ν θέσεων (Ν=τελευταίο ψηφίο ΑΜ+10) με συμβολικό όνομα pinakasa. Να συμπληρωθεί ο ακόλουθος κώδικας ώστε να γεμίζει ο πίνακας ξεκινώντας από την τελευταία θέση. Κάθε αριθμός αποτυπώνεται από τέσσερα byte. li $t2,1... li $v0,5 move $t0,$v0.data..., pinakasa (...)...... $t2,...,... pinakasa:.space... Άσκηση 32 Να γραφεί πρόγραμμα Assembly που να υπολογίζει τη συνάρτηση: f (x)= (x3 )modx ( x 2 )mod2 Θεωρήστε ότι $t1=x Άσκηση 33 Έστω ότι $t1 = 02 88 FA 22 $t2 = 00 29 AD 66 έστω ότι το περιεχόμενο των δύο παραπάνω καταχωρητών αποθηκεύεται σε ένα πίνακα που ξεκινά από τη διεύθυνση (AM+10) 16. Σχεδιάστε τα περιεχόμενα του φυσικού πίνακα στη μνήμη (διεύθυνση και περιεχόμενο θέσης).
Άσκηση 34 Να υλοποιηθεί σε MIPS Assembly ο ακόλουθος ψευδοκώδικας: Διάβασε Χ Επανέλαβε Π=πηλίκο (Χ/2) Υ=υπόλοιπο (Χ/2) #Εκτύπωσε Υ Χ=Π Όσο Π<>0 Θεωρήστε ότι $t1=x. Η εκτύπωση γίνεται απλά με την εκτέλεση της εντολής #Εκτύπωσε συνοδευόμενη από την κατάλληλη παράμετρο Άσκηση 35 Σε ένα πρόγραμμα Assembly έχει δηλωθεί ένας λογικός πίνακας 10 θέσεων που ξεκινά από τη διεύθυνση ΑΜ 16. Γράψτε τις απόλυτες αλλά και τις σχετικές αρχικές διευθύνσεις κάθε αποθηκευμένου καταχωρητή στο φυσικό πίνακα. Απόλυτη αρχική διεύθυνση Σχετική αρχική διεύθυνση Περιεχόμενο
Άσκηση 36 Έστω ότι ένα πρόγραμμα διαβάζει από το πληκτρολόγιο τους ακόλουθους ακέραιους αριθμούς: 34, 259, 321, 800 Οι αριθμοί αυτοί αποθηκεύονται σύμφωνα με το πρόγραμμα στους καταχωρητές $t1,$t2,$t3,$t4. Γράψτε αναλυτικά τα περιεχόμενα κάθε καταχωρητή (στο δεκαεξαδικό σύστημα). Καταχωρητής $t1 Καταχωρητής $t2 Καταχωρητής $t3 Καταχωρητής $t4 Άσκηση 37 Τι θα εμφανίσει το πρόγραμμα αν αρχικά $t1=1, $t2=28, $t0= -1 ; add $t0,$t1,$t2 mul $t0,$t0,$t2 sub $t0,$t1,$t0 bltz $t2,l2 bgt $t1,-1,l3 L1: #print AAA L2: #print DDD j exodos L3: #print CCC exodos: li $v0,10 Θεωρήστε ότι όπου υπάρχει σχόλιο #print γίνεται εμφάνιση του αντίστοιχου μηνύματος. Άσκηση 38 Για να εμφανίσουμε παραμετρικά το (((A+B)C/D)-E)+A θα πρέπει να χρησιμοποιήσουμε (βέλτιστη περίπτωση): (α) 5 εμφανίσεις αριθμών, 5 εμφανίσεις αλφαριθμητικών (β) 4 εμφανίσεις αριθμών, 8 εμφανίσεις αλφαριθμητικών (γ) 7 εμφανίσεις αλφαριθμητικών (δ) τίποτα από τα παραπάνω
Άσκηση 39 Ποιες οι τιμές των καταχωρητών μετά την εκτέλεση του προγράμματος ; li $t1,2 div $t1,$t1,1 mul $t1,$t1,3 mul $t1,$t1,$t1 div $t1,$t1 mflo $t0 mul $t0,$t1,$t0 $t0= $t1= Άσκηση 40 Έστω το ακόλουθο πρόγραμμα Assembly li $v0,4 la $a0,mes add $a0,$a0,n.data mes:.asciiz TEIofLamia Τι θα εμφανίσει το παραπάνω πρόγραμμα; (Ν = τελευταίο ψηφίο του ΑΜ)