ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΕΣ ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΦΕΒ 2014 Καθηγητής: Νικολαΐδης Νικ. Ημ/νία εξέτασης: 10-2-2014 ΘΕΜΑ 1 α) Τι διαφέρει μία ROM από μία PAL; Οι ROM έχουν σταθερό αποκωδικοποιητή ο οποίος σχηματίζει όλα τα γινόμενα των εισόδων διεύθυνσης. Στις ROM προγραμματίζεται ο κωδικοποιητής ανάλογα με την πληροφορία που εγγράφεται. Τα εξαρτήµατα PAL έχουν προγραµµατιζόµενο αποκωδικοποιητή και σταθερό κωδικοποιητή. Είναι υποσύνολα των PROM µια και δεν σχηµατίζουν όλα τα δυνατά λογικά γινόµενα. β) Να συνδεθούν τρία ολοκληρωμένα 6116 (RAM 16 Kbits) σε συνδεσμολογία αύξησης μεγέθους. WR RD 2 1 ΘΕΜΑ 2 α) Τι είναι ένας αποκωδικοποιητής διευθύνσεων τριών επιπέδων; Ένας αποκωδικοποιητής ο οποίος έχει εισόδους ν γραμμές διεύθυνσης χωρίζει το χώρο διευθύνσεων σε 2 ν ίσα μέρη. Λέμε ότι εργάζεται σε ένα επίπεδο. Αν, με μία πύλη AND, ενοποιήσουμε δύο ή περισσότερα από τα παραπάνω μέρη, τότε δημιουργούμε μία αποκωδικοποίηση ανωτέρου επιπέδου. Αν, με μία έξοδο του παραπάνω αποκωδικοποιητή ενεργοποιήσουμε έναν ακόμη αποκωδικοποιητή που παίρνει από γραμμές διεύθυνσης χαμηλότερης τάξης, τότε δημιουργούμε αποκωδικοποίηση κατωτέρου επιπέδου. Ένας Λύσεις θεμάτων Μικροϋπολογιστών - 1 - Τμ.Αυτομ/σμού ΑΤΕΙΘ Νικολαΐδης Νικ.
αποκωδικοποιητής που χρησιμοποιεί και τις δύο παραπάνω τεχνικές λέγεται αποκωδικοποιητής τριών επιπέδων. 0 0 P1 Επίπεδο 1 0 P2 0 P3 3 to 8 100 (4) P4 Επίπεδο 2 101 (5) P5 110 (6) P6 111 (7) Επίπεδο 3 5 4 3 CS P7 P8 P9 P10 2 1 1 P1 0-1 (0) 2-3 (1) 4-5 (2) 6-7 (3) 8-9 (4) Α-Β (5) C-D (6) E-F (7) 2 P2 P3 P4 P5 P6 E0 (0) E8 (1) F0 (2) F8 (3) 3 P7 P8 P9 P10 Αποκωδικοποιητή τριών επιπέδων έχουμε και όταν από μία έξοδο ενός αποκωδικοποιητή ενεργοποιούμε ένα δεύτερο που παίρνει ως εισόδους γραμμές διεύθυνσης χαμηλότερης τάξης και από μία έξοδο του δεύτερου ενεργοποιούμε έναν τρίτο αποκωδικοποιητή που παίρνει ως εισόδους γραμμές διεύθυνσης ακόμη χαμηλότερης τάξης. β) Να σχεδιαστεί ένας αποκωδικοποιητής διευθύνσεων για μία ROM 8 ΚΒ στις δ/νσεις από 1000h και μετά, μία RAM1 16 ΚΒ από 4000h και μετά και ένα περιφερειακό εισόδου / εξόδου 1 ΚΒ στις δ/νσεις από F000 και μετά. Επίσης, μία RAM2 16 ΚΒ στις δ/νσεις από 9000h και μετά και τρία περιφερειακά όμοια με το πρώτο. Το σύστημα δεν θα πρέπει να έχει εικόνες διευθύνσεων. Ο χωρισμός των διευθύνσεων, όπως δίνεται, υλοποιείται εύκολα με έναν αποκωδικοποιητή τριών επιπέδων, όπως αυτός του ερωτήματος (α). Θα χρειαστούμε έναν αποκωδικοποιητή από 4 σε 16 με εισόδους τις Α12, Α13, Α14 και Α15, μία πύλη AND δύο εισόδων για τη ROM, μία πύλη AND τεσσάρων εισόδων για τη RAM1, άλλη μία ίδια για τη RAM2 και έναν Λύσεις θεμάτων Μικροϋπολογιστών - 2 - Τμ.Αυτομ/σμού ΑΤΕΙΘ Νικολαΐδης Νικ.
αποκωδικοποιητή από 2 σε 4 για τα 4 περιφερειακά με εισόδους από τις γραμμές διεύθυνσης Α10 και Α11. 00 00 00 ROM 00 0100 (4) 0101 (5) 0110 (6) RAM1 4 to 16 0111 (7) 1000 (8) 1001 (9) 1010 (10) 1011 (11) RAM2 1100 (12) 1101 (13) P1 1110 (14) P2 1111 (15) P3 5 4 3 2 CS P4 1 ΘΕΜΑ 3 α) Εξηγήστε τις εντολές MOV A,R0 MOV A,@R0 MOVX A,@DPTR και MOVC A,@DPTR. MOV A,R0: Αντιγράφει το περιεχόμενο του R0 της ενεργής ομάδας καταχωρητών στον Α. MOV A,@R0: Αντιγράφει στον Α το περιεχόμενο της μνήμης με διεύθυνση που περιέχεται στον καταχωρητή δείκτη R0. MOVX A,@DPTR: Αντιγράφει στον Α το περιεχόμενο της εξωτερικής μνήμης με διεύθυνση που περιέχεται στον 16μπιτο καταχωρητή δείκτη DPTR. MOVC A,@DPTR: Η εντολή είναι λάθος. Η σωστή εντολή είναι MOVC A,@A+DPTR και αντιγράφει στο συσσωρευτή από τη μνήμη προγράμματος από τη διεύθυνση που σχηματίζεται από την πρόσθεση του Α με τον DPTR. Λύσεις θεμάτων Μικροϋπολογιστών - 3 - Τμ.Αυτομ/σμού ΑΤΕΙΘ Νικολαΐδης Νικ.
β) Στον καταχωρητή R7 περιέχεται ένας απροσήμαστος αριθμός ν. Η εξωτερική μνήμη περιέχει απροσήμαστους αριθμούς του 1 byte. Να γραφεί πρόγραμμα που να ελέγχει ν θέσεις εξωτερικής μνήμης από Χ:1000h και μετά και να μετράει στον καταχωρητή R6 το πλήθος των αριθμών που είναι μικρότεροι ή ίσοι από 127. Ο καταχωρητής R7 θα είναι προφανώς ο μετρητής του βρόχου. Θα χρειαστεί ο DPTR για να δείχνει την εξωτερική μνήμη με αρχικοποίηση το 1000h. Οι αριθμοί που είναι μικρότεροι ή ίσοι του 127 είναι αυτοί που το high bit είναι 0. MOV DPTR,#1000h MOV R6,#0 LOOP: MOVX A,@DPTR INC DPTR JNB ACC.7,OXI INC R6 OXI: DJNZ R7,LOOP JMP $ ΘΕΜΑ 4 α) Περιγράψτε ένα πρόγραμμα διαίρεσης ενός απροσήμαστου αριθμού των 16 bits διά έναν προσημασμένο αριθμό των 8 bits. Το πρόσημο του αποτελέσματος θα είναι ίδιο με το πρόσημο του δεύτερου αριθμού. Θα φυλαχτεί, λοιπόν, σε μία σημαία, έστω F0, και θα χρησιμοποιηθεί στο τέλος. Θα πάρουμε την απόλυτη τιμή του δεύτερου αριθμού και θα δουλέψουμε με αυτήν. Επειδή ο δεύτερος αριθμός είναι του ενός byte, μπορεί να χρησιμοποιηθεί η τμηματική διαίρεση. Έστω a ο πρώτος με a h και a l τα high και low bytes αντίστοιχα και b ο δεύτερος αριθμός. Η διαίρεση που ζητείται να γίνει είναι η (a h *256+a l )/b = 256*a h /b+a l /b. Θα χρησιμοποιηθούν τρεις θέσεις μνήμης για το αποτέλεσμα, έστω οι r h, r m και r l. Το αποτέλεσμα της διαίρεσης a l /b θα γραφεί στις θέσεις r m και r l. Το αποτέλεσμα της διαίρεσης a h /b θα προστεθεί στις θέσεις r h και r m, δηλαδή μετατοπισμένο αριστερά κατά μία θέση μνήμης για να γίνει και ο πολλαπλασιασμός επί 256. Αφού τελειώσει η διαίρεση, αν το πρόσημο είναι αρνητικό, θα αφαιρέσουμε από το 0 το αποτέλεσμα για να του αλλάξουμε το πρόσημο. β) Να γραφεί πρόγραμμα που να μετράει στον R7 της ομάδας καταχωρητών 2 το πλήθος των άσσων που περιέχονται στον αριθμό των 16 bits των θέσεων μνήμης 30h (high) και 31h (low). Για να κάνουμε τον έλεγχο θα πρέπει να μεταφέρουμε ένα προς ένα τα 16 bits στο κρατούμενο. Για κάθε bit θα χρειαστούμε δύο εντολές RLC, πρώτα για το low και μετά για το high byte. C 30h C 31h 5 4 3 2 1 0 D9 D8 Λύσεις θεμάτων Μικροϋπολογιστών - 4 - Τμ.Αυτομ/σμού ΑΤΕΙΘ Νικολαΐδης Νικ.
MOV 23,#0 ;R7 της οκ 2 MOV R6,#16 ;16 bits LOOP: MOV A,31h RLC A ;το low byte πρώτα MOV 31h,A MOV A,30h RLC A ;και το high byte MOV 30h,A JNC OXI ;αν το bit είναι 0, μην αυξάνεις τον μετρητή INC 23 ;αλλιώς, αύξησέ τον OXI: DJNZ R6,LOOP Αν θέλουμε να επαναφέρουμε τα περιεχόμενα των θέσεων μνήμης 30h και 31h στις αρχικές τιμές, θα πρέπει να προσθέσουμε στο τέλος άλλη μία περιστροφή αριστερά. MOV A,31h RLC A MOV 31h,A MOV A,30h RLC A MOV 30h,A JMP $ Λύσεις θεμάτων Μικροϋπολογιστών - 5 - Τμ.Αυτομ/σμού ΑΤΕΙΘ Νικολαΐδης Νικ.