teo
Πολύ δραστήριο μέλος
Ο Θοδωρής αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι 37 ετών και επαγγέλεται Φοιτητής/τρια. Έχει γράψει 1,573 μηνύματα.
30-03-08
14:47
Ας δωσουμε μερικες θεωρητικες εξηγησεις για αυτο το θεμα. Λοιπον θα προσπαθησω να εξηγησω την αρχιτεκτωνικη των επεξεργαστων 8086/88.
Οι καταχωρητες των 8086/88
Ο 8086/88 περιλαμβανει δεκατεσσερεις καταχωρητες των 16bits. Μερικοι απο αυτους ειναι αφιερωμενοι σε ειδικες χρησεις, ενω αλλοι εχουν γενικη χρηση. Τους διακρινουμε σε τεσσερεις διαφορετικες ομαδες οπως φαινεται παρακατω.
Α. Καταχωρητες Γενικης Χρησης
ΑΧ-Συσσωρευτης των 16bits(AH και AL των 8 bits ο καθενας δηλ. εχουμε εναν καταχωρητη των 16bits απο τον οποιο μπορουμε να χρησιμοποιησουμε αμα θελουμε εμεις τα 8 πρωτα bits(AL) ή τα υπολοιπα bits του καταχωρητη(AH))
ΒΧ-BH Και BL-16bits-Βάσης
CX-CH και CL-16Bits Μετρητης
DX-DH και DL-16bits δεδομενων
Θα εξηγησω τωρα με περισσοτερη λεπτομερια αυτους τους παραπανω καταχωρητες γενικης χρησης
-Ο καταχωρητης AX (Accumulator-συσσωρευτης) χρησιμοποιειται συχνα για την εκτελεση αριθμητικων πραξεων. Μερικες πραξεις εκτελουνται γρηγοροτερα αν χρησιμοποιειται ο AX , ενω αλλες, οπως ο πολλαπλασιασμος και η διαιρεση, πρεπει να γινονται στον ΑΧ.
-Ο καταχωρητης BX(Base-Βάσης) εκτός απο τη γενική χρηση του χρήση έχει και την ειδική. Οταν εμφανιζεται σε μια εκφραση της μορφης [BX], ο συμβολομεταφραστης μεταφραζει την τιμη του ΒΧ σε μια ενεργο διευθυνση και οχι σαν ενα δεδομενο. Αυτου του ειδους η χρηση ειναι η περιπτωση εμμεσου τροπου προσδιορισμου μιας διευθυνσης (indirect addressing). Πιο απλα ο ΒΧ δειχνει τη διευθυνση της αρχης (βασης) ενος πινακα δεδομενων.
-Ο καταχωρητης CX (Count-μετρησης) χρησιμοποιειται σαν μετρητης επαναληψεων για τον ελεγχο βροχων και για την επαναλαμβανομενη διακινηση δεδομενων. Φυσικα ειναι διαθεσιμος και για γενικοτερες χρησεις
- Ο καταχωρητης DX (Data-δεδομενων) χρησιμοποιειται για την αποθηκευση δεδομενων γενικοτερης χρησιμοτητας παρ΄ ολο που και αυτος εχει ορισμενες εξειδικευμενες χρησεις. Για παραδειγμα ο DX περιεχει το υπολοιπο των διαιρεσεων που εκτελουνται στον ΑΧ.
Β. Καταχωρητες τμηματων
Η μνημη του 8086/88 ειναι χωρισμενη σε τμηματα χωρητικότητας 64 Kbytes το καθενα. Η ΚΜΕ εχει αμεση προσπελαση σε τεσσερα τετοια τμηματα οταν εκτελει ενα προγραμμα . Αυτα ειναι:
-Το τμημα Κώδικα (Code segment-CS), που περιεχει τον εκτελεσιμο κωδικα. (π.χ εντολες mov)
-Το τμημα δεδομενων(data segment-DS), που περιεχει τα δεδομενα του προγραμματος (μεταβλητες)
-Το τμημα στοιβας (stack segmen-SS). Στοιβα ειναι μια περιοχη της μνημης που χρησιμοποιειται για προσωρινη αποθηκευση δεδομενων κατα τη διαρκεια εκτελεσης ενος προγραμματος
-Το επιπλεον τμημα (extra segment-ES), που περιεχει δεδομενα του προγραμματος που πιθανον να μη χωρουν στο τμημα δεδομενων
Καθενας απο αυτους τους καταχωρητες περιεχει μια τιμη των 16bits, η οποια αντιπροσωπευει τη διευθυνση (γνωστη και ως διευθυνση τμηματος) απο την οποια αρχιζει καποιο τμημα.
Γ. Καταχωρητες Δεικτων
- DI-16bits-Δεικτης προορισμου
-SI-16bits-Δεικτης προελευσης
-SP-16bits- Δεικτης στοιβας
-BP-16bits-Δεικτης βασης
Δ. Δεικτης Εντολων
Ο δεικτης εντολων-IP, δειχνει την επομενη εντολη που θα εκτελεστει απο το προγραμμα.
πηγή: σημειώσεις συγγράμματος του ΤΕΙ Αθηνών.
Τις επομενες ημερες θα εξηγησω αναλυτικα το προγραμμα Assembly που δημιουργησα. Αυτο γιατι δεν εχω τον απαιτουμενο ελευθερω χρονο για να τα κανω ολα μαζι.
Ευχαριστω για την κατανοηση.
Οι καταχωρητες των 8086/88
Ο 8086/88 περιλαμβανει δεκατεσσερεις καταχωρητες των 16bits. Μερικοι απο αυτους ειναι αφιερωμενοι σε ειδικες χρησεις, ενω αλλοι εχουν γενικη χρηση. Τους διακρινουμε σε τεσσερεις διαφορετικες ομαδες οπως φαινεται παρακατω.
Α. Καταχωρητες Γενικης Χρησης
ΑΧ-Συσσωρευτης των 16bits(AH και AL των 8 bits ο καθενας δηλ. εχουμε εναν καταχωρητη των 16bits απο τον οποιο μπορουμε να χρησιμοποιησουμε αμα θελουμε εμεις τα 8 πρωτα bits(AL) ή τα υπολοιπα bits του καταχωρητη(AH))
ΒΧ-BH Και BL-16bits-Βάσης
CX-CH και CL-16Bits Μετρητης
DX-DH και DL-16bits δεδομενων
Θα εξηγησω τωρα με περισσοτερη λεπτομερια αυτους τους παραπανω καταχωρητες γενικης χρησης
-Ο καταχωρητης AX (Accumulator-συσσωρευτης) χρησιμοποιειται συχνα για την εκτελεση αριθμητικων πραξεων. Μερικες πραξεις εκτελουνται γρηγοροτερα αν χρησιμοποιειται ο AX , ενω αλλες, οπως ο πολλαπλασιασμος και η διαιρεση, πρεπει να γινονται στον ΑΧ.
-Ο καταχωρητης BX(Base-Βάσης) εκτός απο τη γενική χρηση του χρήση έχει και την ειδική. Οταν εμφανιζεται σε μια εκφραση της μορφης [BX], ο συμβολομεταφραστης μεταφραζει την τιμη του ΒΧ σε μια ενεργο διευθυνση και οχι σαν ενα δεδομενο. Αυτου του ειδους η χρηση ειναι η περιπτωση εμμεσου τροπου προσδιορισμου μιας διευθυνσης (indirect addressing). Πιο απλα ο ΒΧ δειχνει τη διευθυνση της αρχης (βασης) ενος πινακα δεδομενων.
-Ο καταχωρητης CX (Count-μετρησης) χρησιμοποιειται σαν μετρητης επαναληψεων για τον ελεγχο βροχων και για την επαναλαμβανομενη διακινηση δεδομενων. Φυσικα ειναι διαθεσιμος και για γενικοτερες χρησεις
- Ο καταχωρητης DX (Data-δεδομενων) χρησιμοποιειται για την αποθηκευση δεδομενων γενικοτερης χρησιμοτητας παρ΄ ολο που και αυτος εχει ορισμενες εξειδικευμενες χρησεις. Για παραδειγμα ο DX περιεχει το υπολοιπο των διαιρεσεων που εκτελουνται στον ΑΧ.
Β. Καταχωρητες τμηματων
Η μνημη του 8086/88 ειναι χωρισμενη σε τμηματα χωρητικότητας 64 Kbytes το καθενα. Η ΚΜΕ εχει αμεση προσπελαση σε τεσσερα τετοια τμηματα οταν εκτελει ενα προγραμμα . Αυτα ειναι:
-Το τμημα Κώδικα (Code segment-CS), που περιεχει τον εκτελεσιμο κωδικα. (π.χ εντολες mov)
-Το τμημα δεδομενων(data segment-DS), που περιεχει τα δεδομενα του προγραμματος (μεταβλητες)
-Το τμημα στοιβας (stack segmen-SS). Στοιβα ειναι μια περιοχη της μνημης που χρησιμοποιειται για προσωρινη αποθηκευση δεδομενων κατα τη διαρκεια εκτελεσης ενος προγραμματος
-Το επιπλεον τμημα (extra segment-ES), που περιεχει δεδομενα του προγραμματος που πιθανον να μη χωρουν στο τμημα δεδομενων
Καθενας απο αυτους τους καταχωρητες περιεχει μια τιμη των 16bits, η οποια αντιπροσωπευει τη διευθυνση (γνωστη και ως διευθυνση τμηματος) απο την οποια αρχιζει καποιο τμημα.
Γ. Καταχωρητες Δεικτων
- DI-16bits-Δεικτης προορισμου
-SI-16bits-Δεικτης προελευσης
-SP-16bits- Δεικτης στοιβας
-BP-16bits-Δεικτης βασης
Δ. Δεικτης Εντολων
Ο δεικτης εντολων-IP, δειχνει την επομενη εντολη που θα εκτελεστει απο το προγραμμα.
πηγή: σημειώσεις συγγράμματος του ΤΕΙ Αθηνών.
Τις επομενες ημερες θα εξηγησω αναλυτικα το προγραμμα Assembly που δημιουργησα. Αυτο γιατι δεν εχω τον απαιτουμενο ελευθερω χρονο για να τα κανω ολα μαζι.
Ευχαριστω για την κατανοηση.
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.
teo
Πολύ δραστήριο μέλος
Ο Θοδωρής αυτή τη στιγμή δεν είναι συνδεδεμένος. Είναι 37 ετών και επαγγέλεται Φοιτητής/τρια. Έχει γράψει 1,573 μηνύματα.
29-03-08
19:11
Αυτες τις ημερες ασχολουμαι ερασιτεχνικα με τον προγραμματισμο σε γλωσσα assembly. Σε αυτο το post θα ασχοληθουμε με αυτην την γλωσσα βημα προς βημα . θα αναπτυξουμε καποια μικρα προγραμματα ωστε να εξικοιωθουμε με την γλωσσα αυτη (απλα προγραμματα-ακολουθιακη εκτελεση του προγραμματος,επαναληπτικες δομες, διαδικασιες , στοιβα,συμβολοσειρες και χαρακτηρες). Οτι αποριες εχετε να ρωτάτε και οτι αποριες εχω θα σας ρωτησω. Τωρα θα παρουσιασω ενα απλο προγραμμα για αρχη το οποιο θα διαβαζει εναν χαρακτηρα απο το πληκτρολογιο και θα τον εμφανιζει στην οθονη. στις απομενες ημερες θα παρουσιασω και αλλα προγραμματα για να τα σχολιασουμε-αναλυσουμε την λειτουργια τους ή κατι αλλο και επισης τον τροπο εκτελεσης εναν προγραμματος assembly. Για την συγγραφη προγραμματων σε assembly χρησιμοποιω το εργαλειο Environ.
Παρουσιαση 1ου προγραμματος σε Assmbly:
title pr2
dosseg
.model small
.stack 100h
.data
nl db 10,13,'$'
mes1 db "Dose enan xaraktira:$"
ch1 db ?
.code
start:
mov ax,@data
mov ds,ax
mov ah,09h
lea dx,mes1
int 21h
mov ah,1
int 21h
mov ch1,al
mov ah,9
lea dx,nl
int 21h
mov dl,ch1
mov ah,02h
int 21h
mov ah,4ch
int 21h
end start
Παρουσιαση 1ου προγραμματος σε Assmbly:
title pr2
dosseg
.model small
.stack 100h
.data
nl db 10,13,'$'
mes1 db "Dose enan xaraktira:$"
ch1 db ?
.code
start:
mov ax,@data
mov ds,ax
mov ah,09h
lea dx,mes1
int 21h
mov ah,1
int 21h
mov ch1,al
mov ah,9
lea dx,nl
int 21h
mov dl,ch1
mov ah,02h
int 21h
mov ah,4ch
int 21h
end start
Σημείωση: Το μήνυμα αυτό γράφτηκε 16 χρόνια πριν. Ο συντάκτης του πιθανόν να έχει αλλάξει απόψεις έκτοτε.