Προτεινόμενες Λύσεις 1ης
Ενδιάμεσης Εξέτασης στο ΗΜΥ213
&
Αποτελέσματα
1
0
20
40
60
80
100
120
0 10 20 30 40 50 60 70 80 90 100
Series1
Μέσος όρος: 53.9/100
24 x (70-97)
28 x (50-70)
16 x (35-50)
18 x (06-35)
Αποτελέσματα 1ης Ενδιάμεσης
2
Άσκηση srl/sll
Ποιο θα είναι το περιεχόµενο του καταχωρητή αποτελέσµατος µετά την εκτέλεση της εντολής sll $t5, $t4, 2 εάν τα περιεχό-µενα στους καταχωρητές πριν την εκτέλεση είναι: $t4 = 0x3010200F και $t5 = 0x00F0Α012;
O $t4 >> 2 µπιτς αριστερά και το αποτέλεσµα θα πάει στον $t5.
0011 0000 0001 0000 0010 0000 0000 11111100 0000 0100 0000 1000 0000 0011 1100
$t5= C0 40 80 3C
3
Αποτελέσματα srl/sll
5
0 0 0
5
0 0 0 0
1
0 0 0 0
5 5
0 0 0 0 0
5
4
0
5
0
5
0 0 0 0 0 0
5
0
5
0 0 0 0 0 0 0
5 5
2
5
0 0 0
5 5
0
5 5
4
0 0
5
0 0
4
0 0 0 0 0 0 0
5
4
5
0 0 0
5
0
5
0 0 0
5
0
1
0 00
1
2
3
4
5
6
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85
Series1
Μέσος όρος: 1.51/54
Άσκηση ori
∆ίνονται τα περιεχόµενα των καταχωρητών ως ακολούθως:$t6 = 0x1Β00F0Α1, $t7 = 0x0Β23706Ε.Εξηγήστε την εντολή ori $t7, $t6, 50 και υπολογίστε τα περιεχόµενα του καταχωρητή στον οποίο θα αποθηκευτεί το αποτέλεσµα.
Το περιεχόµενο του $t6 θα γίνει OR µε την τιµή 50 (=0x32)και το αποτέλεσµα θα πάει στον $t7.1B 00 F0 A1 1010 000100 00 00 32 OR 0011 0010 OR--------------- ---------------1B 00 F0 ?? 1011 0011
$t7 = 0x1B 00 F0 B3
5
Αποτελέσματα ori
5
2
3
5 5
3
4
2
0
5
3
5 5 5 5 5
2
0
3 3
2
5 5
0
5
2
5
3
2
4
1 1
5 5
2
5
3
5
2
5 5 5
0
1
5
0
5
2 2
5
0
5
0
5 5 5 5
0
5 5
4
0
5 5
0 0
1
5 5 5
3
5 5
4
5 5 5 5 5
0
5
4
1
2
5
4
0
1
2
3
4
5
6
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85
Series1
Μέσος όρος: 3.43/56
Άσκηση xor
Εξηγήστε την εντολή xor $t3, $t4, $t5 και υπολογίστε τα περιεχόµενατου καταχωρητή στον οποίο θα αποθηκευτεί το αποτέλεσµα.∆ίνονται τα αρχικά περιεχόµενα των καταχωρητών ως ακολούθως:$t3 = 0x00F600Α0, $t4 = 0x7897Β800, $t5 = 0xC000780Α
Το περιεχόµενο του $t4 θα γίνει XOR µε τo περιεχόµενο του $t5 και το αποτέλεσµα θα πάει στον $t3.78 97 B8 00 0111 1011 1000C0 00 78 0A XOR 1100 0111 1000 XOR--------------- -------------------------?8 97 ?? 0A 1011 1100 0000
$t5 = 0xB8 97 C0 0A
7
Αποτελέσματα xor
5 5 5 5 5 5
3
2
5 5
0
5 5
0
5 5 5
1
5 5 5
1
5
3
5
0
4
2
1 1
5 5 5 5 5 5 5 5 5
4
2
4
5 5 5 5 5 5 5
3
5 5 5 5 5 5 5 5 5 5 5
0
5
0
2
0
5 5 5 5
4
5 5
2
5 5 5 5 5
3
4
5
0
5 5 5
0
1
2
3
4
5
6
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85
Series1
Μέσος όρος: 4.08/58
Άσκηση μηδενισμού $t7
Αν τα περιεχόµενα του καταχωρητή $t7 είναι0x00046ΑΒ5 , µηδενίστε τον καταχωρητή $t7 µε 3διαφορετικούς τρόπους (χρησιµοποιώντας διαφορετικέςεντολές κάθε φορά)1. move $t7, $zero2. li $t7, 0 3. and $t7, $t7, $zero4. srl $t7, $t7, 19
9
Αποτελέσματα μηδενισμού $t7
4
2
5 5 5
4 4 4
5 5
2
5 5
4
5 5 5
1
5
4 4
5
4
5
4
0
3 3
4
2 2
4
2 2
5 5
4
5
3
0
3
1
5 5
4
5 5
2
5 5 5 5
4
5 5
4
5
4
5 5 5
4
2
5
3
2
3 3
4 4
5
2
4 4
5 5
3
4 4 4
0 0
2
5 5 5
0
1
2
3
4
5
6
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85
Series1
Μέσος όρος: 3.83/510
Άσκηση φόρτωσης από λίστα
∆ίνονται οι ακόλουθες εντολές: .datainput: .word 720, 250, 130, 49, 513, 519.textmain: li $t3, 0x3
lw $t6, input +1($t3)srl $t3, $t6, 1
∆ώστε το περιεχόµενο του $t6 (ως 32 µπιτ) µετά την εκτέλεση των πιο πάνω εντολών.(5 µονάδες)
$t6 = input+(3+1) = input(5) = 513 = 0x201 = 0000 0000 0000 0000 0000 0010 0000 0001
11
Αποτελέσματα φόρτωσης από λίστα
5
2
5 5
2
5
2 2
5
2
0
5 5
2 2
0
2 2 2 2
0 0
2 2
5
0 0
2
0
2
0 0 0
2
1
2
0
2 2
0 0
2 2
5
0
2 2
0
1
4
0
2
1
2 2
0
1
0
1
2
3
0 0
2
0 0
2
0
5
0 0
2 2
0
5 5 5 5
2
1
0
2
0
2
0
5
0
1
2
3
4
5
6
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85
Series1
Μέσος όρος: 1.81/512
Άσκηση χρήσης $PC
Δώστε δύο εντολές με τις οποίες το πρόγραμμα δεν θα συνεχίσει στην διεύθυνση $pc+4 μετά την εκτέλεσή τους και περιγράψτε τις τιμές που θα πάρει ο $pc μετά από την κάθε εντολή.
b exit_now
O PC θα πάρει τη διεύθυνση όπου είναι αποθηκευμένο το 1ο byte της εντολής μετά από το label “exit_now:”
j skip
O PC θα πάρει τη διεύθυνση όπου είναι αποθηκευμένο το 1ο byte της εντολής μετά από το label “skip:”
13
Αποτελέσματα χρήσης $PC
4
5
1
0
3
4
1
5
1
4
2
4
1
3
5
4
5
0
4
1
4
0 0 0
4
0
1
0 0 0 0
2 2
0 0
4 4 4 4
0
4
2
1
4
2 2
4 4 4 4
0
4
0
4 4
3
1
3
4 4
2
0
1
3 3
1 1
5
0
4 4
2
4
0 0
4
2
4
2
4
2
0 0
2
5 5
0
1
2
3
4
5
6
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85
Series1
Μέσος όρος: 2.37/514
Άσκηση Set Run Parameters
Εάν στο πεδίο “set run parameters”του QtSPIMπληκτρολογήσουµε “9 4 3 5 6 8” εξηγήστε πόσαορίσµατα έχει πάρει το πρόγραµµα και πως θα τοεπιβεβαιώσουµε αυτό.
To πρόγραµµα έχει πάρει 7 ορίσµατα (όνοµα αρχείου + 6 από χρήστη). Ο έλεγχος µπορεί να γίνει διαβάζοντας τον $α0 στην αρχή του προγράµµατος.
[π.χ. bne $a0, 7 error_arg]
15
Αποτελέσματα Set Run Parameters
5 5 5 5 5
3
5 5
3
5
2
5 5
4
5 5 5
0
5 5
3
5 5
0
5
2
5
0 0
1
4
3
5 5 5 5
0
2
5
3
5
0
5 5 5
3
5
2
5 5 5 5
3
5
4 4
0
5
3
4
5
0
2 2
5
0
3
5
4
0
5 5
2
3
5 5 5
3 3
5
4
0
3
4
5 5
0
1
2
3
4
5
6
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85
Series1
Μέσος όρος: 3.67/516
Άσκηση ελέγχου σε 2 bits
Γράψτε τις εντολές µε τις οποίες µπορείτε αρχικά να ανιχνεύσετε τηντιµή των δυαδικών ψηφίων στις θέσεις 3 και 4 της θέσης µνήµης0xf123456A (εάν το λιγότερο σηµαντικό ψηφίο βρίσκεται στη θέση 0)και στη συνέχεια για κάθε πιθανό αποτέλεσµα το πρόγραµµα νατυπώνει κάποιο διαφορετικό αριθµό.
1. lb $t4, 0xf123456A ή lb $t4, 0xf123456A2. andi $t1, $t4, 0x18 andi $t1, $t4, 0x183. li $v0, 1 beq $t1, 0x18 print244. move $a0, $t1 beq $t1, 0x10 print165. syscall beq $t1, 0x08 print86. beqz $t1, print0
17
Αποτελέσματα ελέγχου σε 2 bits
4
2
4
0
8
0
6
0
2
3
0
10
4
6
8
5
7
0
3
1
0
3
7
0
1
0
6
3
0
1
4
3
1010
2
4
0
2
3
1
0
1
9
4 4
2
6
2
4
10
3
8
0
10
8
4
0
3
8
4 4
1
2 2 2
0
3
1
7 7
2
8
6
1
4
10
6
0
2 2 2
3
1
4
3
6
0
2
4
6
8
10
12
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85
Series1
Μέσος όρος: 3.63/518
Άσκηση εντολών load/store
∆ίνονται τα περιεχόµενα των καταχωρητών και της µνήµης ως ακολούθως:$t0 = 0x50000000 $t1=0x012345ΑΒ $t2=0x821D5FΑΕ
0x50000000:0xA2 0x50000001:0x4A 0x50000002:0x12 0x50000003:0x87
∆είξτε τι θα αλλάξει µετά από κάθε εντολή αν η κάθε εντολή είναι ανεξάρτητη:
• lw $t4, ($t0) $t4 = 0x87 12 4A A2• sb $t2, 6($t1) Memory Address [0x0123456B1] = AE • sw $t1, 0x50000000 Memory Address [0x50000000/1/2/3] = AB 45 23 01• la $t6, 0x50000000 $t6 = 0x50 00 00 00• li $t2, 0x50000001 $t2 = 0x50 00 00 01
19
Αποτελέσματα εντολών load/store
10
8
2
9
10
2 2
10
8
6
4
9 9
10101010
0
7
8
6
8 8
2
4
2
8
5
3
4
6
7
4
6
8 8
4
6
7
0
9
4
1010
8
6
10
2
4
6
7
6
8 8
6
7 7
8 8
6
10
8
9
2
4 4
8 8 8
4
8
6
7
8
9
10
6
2
8 8
6
4
8 8
9
10
0
2
4
6
8
10
12
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85
Series1
Μέσος όρος: 6.65/1020
Άσκηση ελέγχου χαρακτήρα
∆ώστε τις απαραίτητες εντολές µε τις οποίες ο προγραµµατιστής µπορεί ναελέγξει αν ο αριθµός ορισµάτων είναι 6, και στη συνέχεια να φορτώσει τοτέταρτο όρισµα (που καταχώρησε ο χρήστης στο set run parameters)στον$t7 και να ελέγξει αν είναι άρτιος (ζυγός) αριθµητικός χαρακτήρας.Βοήθεια: Το κάθε όρισµα που δίνει ο χρήστης αποτελείται από 1χαρακτήρα.1. bne $a0, 6 error_arg2. lw $t1, 16($a1)3. lb $t7 ($t1)4. bgt $t7, 0x39 not_arithmetic5. blt $t7, 0x30, not_arithmetic6. andi $t6, $t7, 17. beqz $t6 number_is_artios8. not_arithmetic:
21
Αποτελέσματα ελέγχου χαρακτήρα
Μέσος όρος: 5.13/10
5
2
8
5
10
4
5
7
8
7
6 6
5 5
8
10
6
0
7
2
1
7
10
5
7
0
7
0 0 0
3
5
6
8
4
8
0
4
8
2
7
3
10
6
8
4
7
0
7
6
5
7
2
4
6
8
7
6
7
5
9
2
4
7
0 0
2
4
5
3
2
5
7
5
7
10
8
6
2
5
7
0
6
7
6 6
0
2
4
6
8
10
12
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85
Series1
22
Άσκηση ελέγχου byte προς byte
Γράψτε ένα µικρό πρόγραµµα µε το οποίο µπορείτε να συγκρίνετε byte προς byteτα περιεχόµενα που βρίσκονται σε 2 λίστες των 14 bytesκαι να βρείτε πόσα από ταbytes τους ∆ΕΝ είναι ίδια. Οι συγκρίσεις που θα γίνουν αφορούν ΜΟΝΟ ταστοιχεία που βρίσκονται στην ίδια θέση του κάθε πίνακα. (π.χ. 1η µε 1η θέση, 2η µε2η θέση κλπ). Ο αριθµός των διαφορετικών bytesθα αποθηκευτεί στον $t5 και στηθέση µνήµης 0x50000002.1. li $t5, 02. li $t6, 03. loop : beq $t6, 14, exit_loop4. lb $t2, lista_A+0($t6)5. lb $t3, lista_B+0($t6)6. addi $t6, 17. bne $t2, $t3 dif_numbers8. b loop9. dif_numbers: addi $t5, 110.b loop11.exit_loop : sb $t5, 0x50000002
23
Αποτελέσματα ελέγχου byte προς byte
σε 2 λίστες
13
1010
13
15
9
11
10
11
14
8
12
9 9
14
1515
2
6
8
12
15
8
12
13
0
15
8
11
3
0
8
13
11
7 7
0
10
3 3
9
2
1515
12
7
13
0
15
13
12
14
7
11
9
13
15
5
14
12
15
3
4
5
2 2
3
10
4
7
4
1212
0
5
15
13
11
12
10
8
0
10
13
11
13
0
2
4
6
8
10
12
14
16
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85
Series1
Μέσος όρος: 9.19/1524
Άσκηση μετατροπής 2-2 ascii
χαρακτήρων σε δεκαδικούς αριθμούς
Ένα έτοιµο πρόγραµµα αρχικά ανοίγει κάποιο αρχείο (textfile) µε συγκεκριµένο περιεχόµενο 550646548011 καιαποθηκεύει το περιεχόµενο του στη µνήµη αρχίζοντας απότην διεύθυνση µε ετικέτα my_buffer (προς τα πάνω µε +1).Μετά την αποθήκευση του στη µνήµη το αρχείο κλείνει µετην κατάλληλη κλήση συστήµατος.
Συµπληρώστε το πιο πάνω πρόγραµµα µε χρήση επαναληπτικού βρόχου, ο οποίος να χωρίζει την ακολουθία αριθµών σε διψήφιους αριθµούς, να τους µετατρέπει σε διψήφιους δεκαδικούς αριθµούς (1 byte) και στη συνέχεια να τους αποθηκεύει σε µια λίστα µε όνοµα my_numbers.
25
1. .data2. my_numbers : .byte 0, 0, 0, 0, 0, 03. .text4. main : li $t7, 05. li $t8, 16. li $t6, 107. loop : lb $t1, my_buffer+0($t7)8. sub $t1, $t1, 0x309. mul $t1, $t1, $t610. lb $t2, my_buffer+1($t7)11. sub $t2, $t2, 0x3012. add $t1, $t1, $t213. sb $t1, my_numbers+0($t8)14. addi $t7, $t7, 215. addi $t8, $t8, 116. bne $t8, 6, loop
26
Αποτελέσματα μετατροπής 2-2 ascii
χαρακτήρων σε δεκαδικούς αριθμούς
17
7
6
20
17
6
13
4
1515
13
12
6
2020
1818
0
3
4
0
18
12
4 4
0
15
4
6
5
8
4
16
17
1
0
2 2
0 0
18
0
16
18
10
0
18
0
16
14
5
3
12
13
4
13
4 4
16
5
14
0
6
12
2 2 2
10
0
12
2
18
10
6
10
18
2
10
13
8
2
5
3 3
16
10
0
5
10
15
20
25
1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85
Series1
Μέσος όρος: 8.57/2027
• Η 2η ενδιάμεση εξέταση περιλαμβάνει όλη
την ύλη που έχουμε καλύψει μέχρι και
σήμερα.
• Θα περιλαμβάνει ασκήσεις όπως αυτές που
είχατε στην 1η ενδιάμεση καθώς και κάποιες
ειδικά προσαρμοσμένες στα διάφορα στάδια
που πρέπει να υλοποιήσετε στο πρότζεκτ σας.
• Η παράδοση του Πρότζεκτ και της αναφοράς
σας έχει μετακινηθεί μέχρι και την Τρίτη
19/03/13 στις 5:30μμ.
28