3. Τι είναι η διεύθυνση;
16bits 8bits Η μνήμη ενός μικροϋπολογιστικού
0000h 20h συστήματος χωρίζεται σε μικρά
τμήματα του ενός byte
0001h 32h
0002h 30h Κάθε byte έχει μια ξεχωριστή
ταυτότητα που ονομάζεται διεύθυνση
216=65,536 bytes
Οι διευθύνσεις είναι αριθμητικές τιμές
FFFEh 30h μήκους σε bit όσο το address bus
(δίαυλος διευθύνσεων)
FFFFh 36h
Χάρτης μνήμης ενός τυπικού 8bit
μικροϋπολογιστικού συστήματος με
16bit address bus
4. Πρόσβαση στη μνήμη
Για να έχουμε πρόσβαση σε ένα ή
0018 h 32h
περισσότερα bytes, πρέπει να
0019 h 30h γνωρίζουμε τις διευθύνσεις τους στο
χάρτη μνήμης
001 Ah 31 h
Στον 80x86 τηρείται η Little Endian
001 Bh 30 h
μορφή αποθήκευσης δεδομένων. Τα
χαμηλά bytes αποθηκεύονται σε
Αποθήκευση κειμένου
χαμηλές (αριθμητικά) διευθύνσεις.
«2010 » στη μνήμη
001 Ch 10 h
001 Dh 20h
Αποθήκευση αριθμού
2010 h στη μνήμη
5. Διαχείριση μνήμης στον 80x86
Ο 80x86 είναι επεξεργαστής των 16bits με address bus μήκους 20bits
Διευθυνσιοδοτεί 1Mbyte μνήμης (220bytes)
Πρόβλημα:
Ο καταχωρητής διεύθυνσης επόμενης εντολής (IP) έχει μήκος 16bits και δεν
μπορεί να δει ολόκληρη τη μνήμη που προσφέρει το address bus
Λύση:
Η μνήμη διασπάται σε πολλαπλά λογικά τμήματα (segments) των 64kBytes
Κάθε τμήμα μπορεί να ξεκινά (βάση τμήματος) ανά 16 θέσεις στη φυσική
διεύθυνση της μνήμης (20bit) και να επιτρέπει στον επεξεργαστή να δει τις
επόμενες 64k θέσεις που ακολουθούν
6.
7. Διαχείριση μνήμης στον 80x86
Ο προγραμματιστής χρειάζεται να ξέρει μόνο την 16bit λογική
διεύθυνση που δείχνει μέσα στο τμήμα, χωρίς να χρειάζεται συνήθως
να γνωρίζει την 20bit φυσική διεύθυνση
Το λειτουργικό σύστημα βρίσκει ελεύθερο χώρο στη μνήμη και εκεί
τοποθετεί τα τμήματα ενός προγράμματος όταν το φορτώνει προς
εκτέλεση, κατόπιν ορίζει τους καταχωρητές τμημάτων, IP και SP