Title: [Συστ. Μικροϋπολογιστών] Απορίες στις ασκησεις 2016-2017 Post by: Μπιγκόνια on October 02, 2016, 20:50:47 pm Topic που αφορά τις ασκήσεις του μαθήματος. Stay on topic!
Title: Re: [Συστ. Μικροϋπολογιστών] Απορίες στις ασκησεις 2016-2017 Post by: TheoProt on January 24, 2017, 01:14:31 am Για να προσθέσω δύο αριθμούς 64-bit (ο κάθε αριθμός 64-bit) πρέπει συνολικά να χρησιμοποιήσω 8 καταχωρητές για να φορτώσω και τους δύο αριθμούς ;
Title: Re: [Συστ. Μικροϋπολογιστών] Απορίες στις ασκησεις 2016-2017 Post by: princess_of_the_dawn on May 11, 2017, 16:57:04 pm Από τις ασκήσεις που έχει ο Πέτρου ανεβασμένες στο ετημμυ έχω χαωθεί στη Β1:
1)Κάθε διεύθυνση του πίνακα σε πόσα bytes αντιστοιχεί; Δηλαδή έστω ότι ξεκινάει από τη διεύθυνση $00FB η διεύθυνση αυτή θα περιέχει ένα ή δύο bytes;(μάλλον ένα) Γιατί στο i) κάνει add ZL, byte point;Έτσι δε θα δείχνει σε ένα byte παραπάνω από αυτό που θέλουμε; Να δώσω ένα παράδειγμα: Έστω ότι ξεκινάει από τη διεύθυνση $00FB και το determine εχει τιμή 0b00010100 αυτό σημαίνει ότι θέτουμε το bit νο4 του 2ο byte του πίνακα ίσο με 0. Εφ'όσον έχουμε κάνει το swap κλπ θα έχουμε byte_point=00000010 άρα από την εντολή add ZL, byte_point θα πάρουμε ΖL=FD αυτό όμως δε θα μας δείχνει το 3ο byte; Ή το 0010 του determine αντιστοιχεί στο byte νο2, δηλ το 3ο byte; 2) Μπορεί κάποιος να εξηγήσει έτσι απλά γιατί όταν δείχνουμε σε θέσεις μνήμης προγράμματος πολλαπλασιάζουμε επί δύο; 3) Οι μάσκες που χρησιμοποιεί είναι έτοιμες ή τις χρησιμοποιεί με τη λογική του bit_point; Title: Re: [Συστ. Μικροϋπολογιστών] Απορίες στις ασκησεις 2016-2017 Post by: Andromedas on May 11, 2017, 18:40:35 pm 1)Κάθε διεύθυνση του πίνακα σε πόσα bytes αντιστοιχεί; Δηλαδή έστω ότι ξεκινάει από τη διεύθυνση $00FB η διεύθυνση αυτή θα περιέχει ένα ή δύο bytes;(μάλλον ένα) Μια διεύθυνση στην memory ή flash είναι 16 bit δηλαδή δείχνει δύο byte. 2) Μπορεί κάποιος να εξηγήσει έτσι απλά γιατί όταν δείχνουμε σε θέσεις μνήμης προγράμματος πολλαπλασιάζουμε επί δύο; 2) Αυτό πρακτικά που κάνει με την LPM χρησιμοποιείς μια διεύθυνση μνήμης (το label mask_table στην παραπάνω περίπτωση) για να διαβάσεις την μνήμη προγράμματος. Όποτε έχεις μια θέση μνήμης (το label) να δείχνει σε δύο θέσεις στο high και το low. Για να αντιστοιχίσεις χρειάζεσαι το lsb του Z για να διαλέξεις είτε το high είτε το low. http://www.avrfreaks.net/forum/program-memory-and-lpm. Από τις ασκήσεις που έχει ο Πέτρου ανεβασμένες στο ετημμυ έχω χαωθεί στη Β1: 3) τις μάσκες τις φτιάχνει ο pre-assembler ;όταν σαρώνει πρώτη φορά το source-code, η εντολή είναι στο i) Αρά θα πω είναι έτοιμες :).Γιατί στο i) κάνει add ZL, byte point;Έτσι δε θα δείχνει σε ένα byte παραπάνω από αυτό που θέλουμε; Να δώσω ένα παράδειγμα: Έστω ότι ξεκινάει από τη διεύθυνση $00FB και το determine εχει τιμή 0b00010100 αυτό σημαίνει ότι θέτουμε το bit νο4 του 2ο byte του πίνακα ίσο με 0. Εφ'όσον έχουμε κάνει το swap κλπ θα έχουμε byte_point=00000010 άρα από την εντολή add ZL, byte_point θα πάρουμε ΖL=FD αυτό όμως δε θα μας δείχνει το 3ο byte; Ή το 0010 του determine αντιστοιχεί στο byte νο2, δηλ το 3ο byte; 3) Οι μάσκες που χρησιμοποιεί είναι έτοιμες ή τις χρησιμοποιεί με τη λογική του bit_point; Λοιπόν αυτό που κάνει στο i) είναι το εξής : αποθηκεύει τις μάσκες στην θέση της lpm ; mask_table (low) -> $01 ,mask_table (high)-> $02 mask_table+1 (low)-> $04 ,mask_table+1 (high)-> $08 ... mask_table+3 (low) -> $40 ,mask_table+3 (high)-> $80 (το high low μπορεί να και ανάποδα έλεγξε το στο avr) οπότε όταν πάρει τα 3 lsb του determine δείχνουν στο bit που θα ελέγξεις άρα και την μάσκα που χρειάζεσαι: πχ θες να ελέγξεις το τελευταίο bit (το 0 από τα 7-0) άρα χρειάζεσαι την πρώτη μάσκα οπότε ο Z προστίθεται με το μηδέν έστω ότι χρειάζεσαι να ελέγξεις το το πρώτο bit (το 7 από 7-0) χρειάζεσαι την μάσκα που βρίσκεται στην θέση mask_table+3 (high). Αναλύοντας την εντολή : add ZL, bit_point mask_table+3 είναι το άθροισμα: bit(7-1) του ZL + bit(2-1) του bit_point mask_table+3 (high) = ZL+bit_point (προφανώς τσεκάρεις και το carry γιατί κάνεις πρόσθεση 16bit) Ελπίζω να βοήθησα αν χρειαστείς κάτι παραπάνω πες. Title: Re: [Συστ. Μικροϋπολογιστών] Απορίες στις ασκησεις 2016-2017 Post by: princess_of_the_dawn on May 13, 2017, 10:43:50 am Χμμμ σ ευχαριστώ πολύ! :) :) Θα μελετήσω την απάντησή σου και θα γρα΄ψω αν εχω απορίες
|