Professional Documents
Culture Documents
Αρχιτεκτονική ΗΥ Ι Ιωάννης Έλληνας ΤΕΙ Πειραιά
Αρχιτεκτονική ΗΥ Ι Ιωάννης Έλληνας ΤΕΙ Πειραιά
Αρχιτεκτονική-Ι
Ιωάννης Έλληνας
Τμήμα Η/ΥΣ
Περιεχόμενα ενότητας
• Ορισμοί Αριθμοί BCD
• Αριθμητικά Συστήματα Αριθμητικές πράξεις
• Δεκαδικό σύστημα Λογικές πράξεις
• Δυαδικό σύστημα Ολίσθηση-Περιστροφή
• Μετατροπή ακέραιου δεκαδικού Μετατροπές αριθμών BCD
σε δυαδικό Μετατροπές αριθμητικών
• Μετατροπή κλασματικού συστημάτων (BIN to DEC)
δεκαδικού σε δυαδικό Μετατροπές αριθμητικών
• Δεκαεξαδικό σύστημα συστημάτων (DEC to BIN)
• Μετατροπή ακέραιου δεκαδικού Μετατροπές αριθμητικών
σε δεκαεξαδικό συστημάτων (BIN to ASCII)
• Κώδικες Μετατροπές αριθμητικών
• Κώδικας ASCII συστημάτων (ASCII to BIN)
5
Ορισμοί (1)
•Ένας δυαδικός αριθμός των 4 bits καλείται nibble.
Ορισμοί (2)
• Το πιο αριστερό bit
ενός δυαδικού
αριθμού καλείται
«περισσότερο
σημαντικό» ή MSB
(Most Significant Bit).
• Το πιο δεξιό bit ενός
δυαδικού αριθμού
καλείται «λιγότερο
σημαντικό» ή LSB
(Least Significant Bit).
7
Αριθμητικά Συστήματα
Δεκαδικό – Δυαδικό - Δεκαεξαδικό
BINary (b) HEXadecimal (h) DECimal (d)
0000 0 0
0001 1 1
0010 2 2
0011 3 3
0100 4 4
0101 5 5
0110 6 6
0111 7 7
1000 8 8
1001 9 9
1010 Α 10
1011 Β 11
1100 C 12
1101 D 13
1110 E 14
1111 F 15
8
Δεκαδικό Σύστημα
• Η παράσταση ενός αριθμού D στο δεκαδικό σύστημα δίνεται
από τη σχέση:
D={…d3 d2 d1 d0 .d-1 d-2 d-3…} και η τιμή του D= Σi (di x 10 ͥ).
9
Δυαδικό Σύστημα
• To δυαδικό σύστημα μοιάζει με το δεκαδικό με τη διαφορά
ότι αποτελείται από 2 ψηφία και η δυαδική αναπαράσταση
ενός αριθμού πραγματοποιείται με δυνάμεις του δυο ως
εξής:
11
Μετατροπή Ακέραιου Δεκαδικού
σε Δυαδικό (2)
δυνάμεις του 2 25 24 23 22 21
20
δεκαδικό ισοδύναμο 32 16 8 4 2 1
Αποτέλεσμα 0 1 0 0 0 1
= 17
12
Μετατροπή Κλασματικού
Δεκαδικού σε Δυαδικό
Ο αριθμός που προκύπτει είναι
ο 0.11101 ο οποίος έχει
ισοδύναμο το δεκαδικό
αριθμό:
1*2-1+1*2-2+1*2-3+0*2-4+1*2-
5=0,90625 που είναι μια
13
Δεκαεξαδικό Σύστημα
• Οι υπολογιστές βασίζουν τη λειτουργία τους στο δυαδικό
σύστημα, όμως οι δυαδικοί αριθμοί αναπαρίστανται στο
δεκαεξαδικό για να αποφεύγονται πολύ μεγάλοι δυαδικοί. Το
δεκαεξαδικό επιτρέπει την ομαδοποίηση των δυαδικών
ψηφίων ανά τέσσερα.
14
Αποτέλεσμα 0 2 0 13 =
2*256+13*1=525
15
Κώδικες (1)
• Ο αριθμός που περιέχεται σε ένα byte μπορεί να ερμηνευθεί
με πολλούς τρόπους.
16
Κώδικες (2)
• Δύο από τους πιο συχνά χρησιμοποιούμενους τύπους ή
κώδικες είναι η δεκαδική παράσταση ενός δυαδικού αριθμού
(BCD – Binary Coded Decimal) και ο Αμερικανικός Κώδικας
Αντιστοιχιών (American Standard Code for Information
Interchange) > ASCII.
17
Κώδικας ASCII (1)
• Κάθε κομμάτι κειμένου που αποθηκεύεται σε έναν
υπολογιστή αναπαριστά τους χαρακτήρες που εμφανίζονται
σε αυτό ως αριθμούς από μια τυποποιημένη λίστα,
ονομαζόμενη ASCII.
18
37h -
37h
20
21
Αριθμοί BCD (3)
• Packed BCD: Συνεπτυγμένοι
είναι οι αριθμοί BCD οι οποίοι
περιέχουν δυο δυαδικά ψηφία
0 1 1 0 1 0 0 1 69 h – BCD
σε ένα byte. Οι αριθμοί 29h (packed)
(byte), 3629h (word), 17243629h
(double word) είναι BCD σε 0000 0110 0000 1001
0609 h
23
Αριθμητικές Πράξεις (2)
Συμπλήρωμα ως Προς 2
• Η παράσταση με
συμπλήρωμα ως προς 2
επιβάλει το χειρισμό του πιο
σημαντικού bit ως
πολλαπλασιαστή τιμής -1 επί
το βάρος που αντιστοιχεί στη
θέση του ψηφίου πρόσημου,
για 8bit αριθμό -2⁷= -128.
• Τα υπόλοιπα bits
προστίθενται με το βάρος
που τους αντιστοιχεί στο
αρνητικό βάρος του πιο
σημαντικού ψηφίου.
• Δεν υπάρχει το πρόβλημα της
διπλής αναπαράστασης του
μηδενός. 24
25
Αριθμητικές Πράξεις (4)
Επέκταση Προσήμου
26
27
Αριθμητικές Πράξεις (6)
Πρόσθεση Δυαδικών
282
ή
-230
+ Προσημασμένοι
-128
+
Μη 256 -230
προσημασμένοι 282
28
29
Αριθμητικές Πράξεις (8)
Πράξεις Δεκαεξαδικών
30
0 1 2 3 4 5 6 7 8 9 A B C D E F
31
Αριθμητικές Πράξεις (10)
Πράξεις Αριθμών pBCD
0100 1000 48 h
+ 1000 1001 89 h Επιθυμητό αποτέλεσμα=01h 37
1100 1 0001 Αριθμός > 9, άρα προσθέτω 6
+ 0110
1100 1 0111 Auxilliary Flag (AF
+ 1
1101 0111 Αριθμός > 9, άρα προσθέτω 6
+ 0110
CF=1 0011 0111 CF=1 και 37h 01h 37h
32
• Αλγόριθμος:
– Αν AL>9 ή AF=1
AL = AL+6- - AF=1
– Αν AL>9F ή CF=1
AL=AL +60h - - CF=1
33
Αριθμητικές Πράξεις (12)
Πράξεις Αριθμών pBCD
• Αλγόριθμος:
– Αν AL>9 ή AF=1
AL = AL-6- - AF=1
– Αν AL>9F ή CF=1
AL=AL -60h - - CF=1
34
35
Αριθμητικές Πράξεις (14)
Πράξεις Αριθμών uBCD
• AAA: Διορθώνει το
αποτέλεσμα μετά από
πρόσθεση δύο uBCD
αριθμών
• Παράδειγμα: 09 08 + 02 09
= 01 02 07
08 + 09 = 01 και AF=1 01
+ 06 = 07
09 + 02 + AF = 0C 0C + 06
= 02 και CF=1 01 02 07
36
37
Λογικές Πράξεις
• Οι λογικές πράξεις AND, OR, NOT, XOR εκτελούνται bit προς bit μεταξύ
δυο δυαδικών αριθμών ίδιου μήκους (Bitwise).
– H AND χρησιμοποιείται για το μηδενισμό (λογικό 0) ενός ή
περισσότερων bits.
– H OR χρησιμοποιείται για την τοποθέτηση (λογικό 1) ενός ή
περισσότερων bits.
– H NOT χρησιμοποιείται για την αντιστροφή της λογικής κατάστασης
του αριθμού.
– Η XOR χρησιμοποιείται για την αντιστροφή της λογικής κατάστασης
μερικών bits.
38
40
Μετατροπές
Αριθμητικών Συστημάτων - BIN DEC
• Ένας δυαδικός αριθμός μήκους
ενός byte (packed BCD), έχει
εκατοντάδες, δεκάδες και
μονάδες.
• Η μετατροπή γίνεται με τη
μέθοδο των διαδοχικών
διαιρέσεων με το 100d=64h και
10d= 0Ah, προκειμένου να
διαχωριστούν τα ψηφία με το
αντίστοιχο βάρος.
41
Μετατροπές
Αριθμητικών Συστημάτων - DEC BIN
• Ένας δεκαδικός αριθμός μήκους
ενός byte (packed BCD), έχει
δεκάδες και μονάδες.
• Η μετατροπή γίνεται αν οι δεκάδες
πολλαπλασιαστούν με 10d=0Ah
και στο αποτέλεσμα προστεθούν
μονάδες.
42
Μετατροπές
Αριθμητικών Συστημάτων -BIN ASCII
• Ένας δυαδικός αριθμός
μήκους ενός byte έχει
δύο ψηφία σε hex.
• Αρχικά διαχωρίζονται τα
ψηφία και στη συνέχεια
ελέγχεται αν κάποιο
ψηφίο είναι γράμμα ή
αριθμός ώστε να του
προστεθεί το 30h ή 37 h
αντίστοιχα.
43
Μετατροπές
Αριθμητικών Συστημάτων - ASCII BIN
• Για να μετατρέψουμε
δυο χαρακτήρες ASCII σε
δυαδικό αριθμό ενός
byte, ελέγχουμε αν
καθένας από αυτούς
είναι αριθμός ή όχι, ώστε
να του αφαιρεθεί το 30h
ή 37h αντίστοιχα και
μετά να κάνουμε
σύμπτυξη.
44
Βιβλιογραφία
1. “ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΥΠΟΛΟΓΙΣΤΩΝ-Ο επεξεργαστής
8086”, Ι. Ν. Έλληνας, Π. Δ. Κεντερλής, ISBN: 978-
960-930663-8, Αθήνα 2008.
2. Γ. Δ. Κόγιας, “Αρχιτεκτονική, Οργάνωση και
Προγραμματισμός μικροϋπολογιστών”, Σύγχρονη
Εκδοτική.
3. Κ. Ζ. Πεκμεστζή, “Συστήματα μικροϋπολογιστών”,
Εκδόσεις Συμμετρία.
45
Ενότητα 2: Αριθμητικά Συστήματα
Σκοποί ενότητας
• Στην ενότητα αυτή γίνεται μια εισαγωγή στην
οργάνωση δεδομένων ενός
μικροεπεξεργαστή και στις βασικές έννοιες
των αριθμητικών συστημάτων.
4
Περιεχόμενα ενότητας
Ορισμοί
Οργάνωση δεδομένων
Αριθμητικά συστήματα
Λογικές πράξεις
Κώδικας ASCII
Κώδικας BCD
Ολίσθηση & Περιστροφή
INTEL 4004
Ο πρώτος μΕ της Intel:
1971
2300 transistors
μέγεθος 12 mm2
ρολόι 108 kΗz, 0.06 MIPS
data bus 4 bits
μνήμη 640 bytes
6
INTEL PENTIUM 4
Πρόσφατος μΕ:
2000
42.000.000 transistors
μέγεθος 224 mm2
ρολόι >1.5 GHz
data bus 64 bits
μνήμη 64 GB
Ορισμοί
• Ένας δυαδικός αριθμός των 4 bits καλείται nibble.
Byte 9
Word
10
Αριθμητικά Συστήματα
Δεκαδικό – Δυαδικό - Δεκαεξαδικό
BINary (b) HEXadecimal (h) DECimal (d)
0000 0 0
0001 1 1
0010 2 2
0011 3 3
0100 4 4
0101 5 5
0110 6 6
0111 7 7
1000 8 8
1001 9 9
1010 Α 10
1011 Β 11
1100 C 12
1101 D 13
1110 E 14
1111 F 15 11
Λογικές Πράξεις
• Οι μΕ μπορούν να κάνουν αριθμητικές ή λογικές πράξεις ΜΟΝΟ με δυαδικούς
αριθμούς.
• 3*163+15*162+2*161+10*160=16170 d 3F2A h 0011 1111 0010 1010 b
• Λογική πράξη AND: 3F2A h AND 00FF h 002A h 0011 1111 0010 1010 b
0000 0000 1111 1111 b
• Λογική πράξη OR: 3F2A h OR 00FF h 3FFF h
• Λογική πράξη XOR: 3F2A h XOR 00FF h 3FD5 h
• Ιδιότητες λογικών πράξεων:
AND Bit Reset
OR Bit Set
XOR Bit Toggle
12
Κώδικας ASCII
• Κώδικας ASCII:
07h 20h
13
Κώδικας BCD
• Κώδικας BCD:
0 1 1 0 1 0 0 1 69 h – BCD (packed)
0609 h
0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1
BCD (unpacked)
14
Ολίσθηση & Περιστροφή
• Ολίσθηση & Περιστροφή
Λογική ολίσθηση
Αριστερά Δεξιά
Περιστροφή
Αριστερά Δεξιά
15
Ενότητα 3: Μικροϋπολογιστές
Σκοποί ενότητας
• Σκοπός της ενότητας είναι η εισαγωγή στα
μικροϋπολογιστικά συστήματα, τη δομή τους
και τη σύνδεση του μικροεπεξεργαστή με τα
περιφερειακά του.
Περιεχόμενα ενότητας
• Μικροϋπολογιστικό σύστημα
• Αποκωδικοποίηση
• Μνήμες
• Χαρακτηριστικά μνημών
• Πόρτες
• Αρχή λειτουργίας μικροϋπολογιστικού
συστήματος
• Γλώσσα προγραμματισμού Assembly
• Ορολογία εντολών Assembly
5
Μικροϋπολογιστικό σύστημα (1)
• Κύκλοι Μηχανής (ΚΜ) ή κύκλοι διαδρόμου 4Τ για τον 8086
Data Bus
Input Output
CPU ROM RAM
Port Port
Ρολόϊ
Control Bus
Address Bus
Απεικόνιση
7
Αποκωδικοποίηση
Μνήμες
9
Χαρακτηριστικά μνημών
• tACC=Χρόνος προσπέλασης
Μέγιστος χρόνος ανάγνωσης
10
Πόρτες
• Πόρτα εισόδου (Input
Port-I/P)
11
Μικροϋπολογιστικό σύστημα (3)
Απεικόνιση
12
Αρχή λειτουργίας
μικροϋπολογιστικού συστήματος
Data Bus
IP= 0101
0100
0102 h 0100 h B0 B0 h MOV AL,55h
0101 h 55 55 h
Instruction decoder
Address Bus
AL=
ROM
CPU
13
Γλώσσα προγραμματισμού Assembly
14
B0 MOV AL, 55 H
Κώδικας μηχανής
55
Machine Code
Object code
Προορισμός Αφετηρία
Destination Source
15
Ενότητα 4: Το Προγραμματιστικό Μοντέλο του 8086
Σκοποί ενότητας
• Στην ενότητα αυτή εξετάζεται το
προγραμματιστικό μοντέλο του
μικροεπεξεργαστή 8086 της Intel, η
εσωτερική του αρχιτεκτονική και οι βασικές
λειτουργίες του επεξεργαστή.
4
Περιεχόμενα ενότητας
• Επεξεργαστής 8086 • Εσωτερική οργάνωση
• Οργάνωση συστήματος • Εσωτερική οργάνωση του
• Τι είναι η διεύθυνση 8086
• Πρόσβαση στη μνήμη • Λειτουργία καταχωρητών
• Οργάνωση μνήμης τμημάτων
• Διαχείριση μνήμης • Μονάδα εκτέλεσης
• Κατάτμηση μνήμης • Καταχωρητής σημαιών
• Διευθυνσιοδότηση • Λειτουργίες CPU
• Τι είναι ο σωρός • Παράδειγμα
• Λογική και Φυσική Διεύθυνση • Ερωτήσεις & Απαντήσεις
• Υπολογισμός Φυσικής
Διεύθυνσης
• Παραδείγματα
Ο Επεξεργαστής 8086
6
8086 Επεξεργαστής των 16 bits/
2 bytes (Ρ1) (1)
Χαρακτηριστικά
• Εμφάνιση το 1978.
• Τροφοδοσία 5V.
• Ρολόϊ έως 4÷10 MHz.
8086
• Data bus 16 bits/2 bytes.
• Address bus 20 bits. Μνήμη μέχρι 1 ΜΒ. Μνήμη άρτιων και
περιττών διευθύνσεων (2 Χ 512 ΚΒ). Χρόνος προσπέλασης
λέξης (2 bytes) σε ένα κύκλο μνήμης (μηχανής) εφ’ όσον η
λέξη είναι σε άρτια διεύθυνση ή σε δυο κύκλους εφ’ όσον
είναι σε περιττή διεύθυνση (ελάττωση της ταχύτητας).
• Κύκλος διαδρόμου (bus cycle) ίσος με 4 περιόδους ρολογιού.
DIP-40 pins • Ταχύτητα διαμεταγωγής (10ΜΗz/4)X2=5MB/s (40 Mbps).
8
8086 Ακροδέκτες (1)
Πολυπλεγμένες γραμμές διεύθυνσης/δεδομένων
GND
(Time multiplexed address/data lines)
AD14
Αποπλέκονται με τη βοήθεια του σήματος ελέγχου ALE AD13
10
8086 Ακροδέκτες (3)
Vcc
AD15
A16/S3
A17/S4
A18/S5
A19/S6
BHE/S7
MN/MX=1 MN/MX=0
MN/MX
RD HOLD RQ/GT0
HLDA RQ/GT1
8086
WR LOCK
M/IO S2
DT/R S1
DEN S0
ALE QS0
INTA QS1
TEST Εισάγεται περίοδος αναμονής εάν η είσοδος αυτή είναι high κατά την εκτέλεση της εντολής WAIT.
READY Συγχρονίζει τον 8086 με αργά περιφερειακά. Εισάγει περίοδο αναμονής εάν κατά την Τ2 ευρεθεί low.
RESET Επανεκκίνηση και μετάβαση του προγράμματος στη διεύθυνση FFFF0 H.
11
Οργάνωση συστήματος
Διάδρομοι (Buses)
12
Τι είναι η διεύθυνση;
• Η μνήμη ενός μικροϋπολογιστικού
συστήματος χωρίζεται σε μικρά
τμήματα του ενός byte
13
14
Οργάνωση μνήμης (1)
15
17
Πρόβλημα
Ο καταχωρητής διεύθυνσης επόμενης εντολής (IP) έχει μήκος 16bits και
δεν μπορεί να δει ολόκληρη τη μνήμη που προσφέρει το address bus
Λύση
– Η μνήμη διασπάται σε πολλαπλά λογικά τμήματα (segments) των
64kBytes
– Κάθε τμήμα μπορεί να ξεκινά (βάση τμήματος) ανά 16 θέσεις στη
φυσική διεύθυνση της μνήμης (20bit) και να επιτρέπει στον
επεξεργαστή να δει τις επόμενες 64k θέσεις που ακολουθούν
18
Κατάτμηση μνήμης
• CS=A308 h – DS=2000 h –
ES= C10A h – SS=C90A h
19
Διευθυνσιοδότηση μνήμης –
μετατόπιση
Σωστό MOV AX,[BX] ή [SI] ή [BP] ή [DI]
Σωστό MOV AX, [BX+SI] ή [BP+DI] ή [BX+DI] ή [BP+SI]
Σωστό MOV AX, [BX+SI+128] ή [BP+DI-3] ή [BX+DI+7]
Λάθος MOV [BX+BP],AX ή MOV AX,[SI+DI] ή MOV AX, [DX] ή [CX]
8 ή 16 bit
BX SI
disp
BP DI
20
Τι είναι ο σωρός
• Περιοχή μνήμης για προσωρινή αποθήκευση δεδομένων. Το
τμήμα σωρού δημιουργείται με τη βοήθεια του SS και έχει
σαν δείκτη τον SP
• Λειτουργεί προς μικρότερες διευθύνσεις γι’ αυτό συνήθως
θέτουμε SP=0000h
CS
• Λειτουργεί με τις εντολές: PUSH, POP, CALL, RET, INT, IRET
• Δείκτης στο σωρό μπορεί να είναι ο καταχωρητής BP
π.χ. SP-1
AH AL Offset FFFF
12 h 34 h h
21
22
Υπολογισμός φυσικής διεύθυνσης
CS=1234h
IP=5678h
5678h 1234h
05678h 12340h
179B8h
23
Παραδείγματα
MOV AX,[1A5E0h];
24
8086 Εσωτερική οργάνωση (1)
EXECUTION UNIT (EU) BUS INTERFACE UNIT (BIU)
DATA POINTER & SEGMENT REGS &
RELOCATION
REGISTER FILE INDEX REGS INSTRUCTION POINTER
REGISTER FILE
(8 WORDS) (5 WORDS)
/BHE or S7
16 BIT ALU
Διάδρομοι και BUS
4 A16-A19 or S3-S6
25
Σ
C-BUS 6
5
4
6-BYTES
B-BUS BIU 3
2
ΟΥΡΑ ΡΟΗΣ
ES 16
CS 16
1
ΕΝΤΟΛΩΝ
SS 16
DS
ΣΥΣΤΗΜΑ ΕΛΕΓΧΟΥ
16
IP 16
AH AL A-BUS
8 8
BH BL
CH CL ALU
DH DL
SP 16 EU
BP
SI ΟΡΙΣΜΑΤΑ (OPERANDS)
DI ΣΗΜΑΙΕΣ (FLAGS)
26
Εσωτερική οργάνωση του 8086
27
28
Μονάδα εκτέλεσης (EU)
29
Καταχωρητής σημαιών
30
Σημασία του καταχωρητή σημαιών (1)
Zero Flag – Γίνεται 1 όταν το αποτέλεσμα μιας αριθμητικής ή λογικής πράξης
είναι μηδέν.
mov al,01h
dec al ; al=0, ZF=1
mov al,0h ; al=00h
or al,0ffh ; al=FFh, ZF=0
xor al,0ffh ; al=00h, ZF=
31
32
Σημασία του καταχωρητή σημαιών (3)
Sign Flag – Γίνεται 1 ή 0 όταν το σημαντικότερο bit του αποτελέσματος είναι
1ή0
mov al,7fh
add al,01h ; al=80h (1000 0000), SF=1, OF=1
mov al,7fh
mov bl,3
add al,bl ;al=0111 1111+0000 0011=1000 0010 CF=0, SF=1, OF=1
mov al,0ffh
mov bl,80h
add al,bl ;al=1111 1111+1000 0000=0111 1111 CF=1, SF=0, OF=1
33
34
Να θυμόμαστε το εσωτερικό του 8086 !
35
Λειτουργίες CPU
ΣΗΜΕΙΩΣΗ: Κύκλος μηχανής είναι ο χρόνος που παίρνει την CPU για να
εκτελέσει μια από τις προαναφερθείσες λειτουργίες, οι οποίες αφορούν την
επικοινωνία της με ένα εξωτερικό περιφερειακό (μνήμη ή πόρτα). Η
εσωτερική λειτουργία της CPU (π.χ. η τοποθέτηση ενός δεδομένου σε
κάποιον καταχωρητή, η πρόσθεση κλπ) δεν συνιστά κύκλο μηχανής.
Κύκλος εντολής = Χρόνος εκτέλεσης μιας εντολής
Κύκλος μηχανής = Χρόνος εκτέλεσης μιας λειτουργίας Κατάσταση (State) = Μια περίοδος
της CPU ρολογιού
A3 MOV [1000h],AX
00
10
37
38
Ενότητα 5: H Γλώσσα ASSEMBLY
Σκοποί ενότητας
• Στην ενότητα αυτή εξετάζονται οι τρόποι
διευθυνσιοδότησης, οι ομάδες εντολών του
μικροεπεξεργαστή 8086 και ο τρόπος γραφής
ενός προγράμματος σε γλώσσα Assembly.
4
Περιεχόμενα ενότητας
• Τρόποι διευθυνσιοδότησης • Εντολές λογικών πράξεων
• Άμεσος • Εντολές ολίσθησης
• Απευθείας • Εντολές περιστροφής
• Έμμεσος με καταχωρητή • Εντολές διακλάδωσης
• Με καταχωρητή βάσης και • Εντολές διακλάδωσης με
μετατόπιση προϋποθέσεις
• Με καταχωρητή δείκτη • Εντολές συμβολοσειρών
• Με καταχωρητή βάσης και δείκτη • Εντολές ελέγχου επεξεργαστή
• Τύποι εντολών • Πηγαίο πρόγραμμα
• Εντολές μεταφοράς δεδομένων • Ψευδοεντολές
• Εντολές αριθμητικών πράξεων • Παράδειγμα διαδικασίας
• Διορθωτικές εντολές
αριθμητικών πράξεων
Τρόποι Διευθυνσιοδότησης
Συνοπτικά
• Άμμεσος (Immediate)
– MOV AX, 1234
• Με καταχωρητή (Register)
– MOV AX, DS
• Απευθείας (Direct)
– MOV AX, [1234h]
• Έμμεσος με καταχωρητή (Register Indirect)
– MOV AX, [BX]
• Με καταχωρητή βάσης και μετατόπιση (Base relative)
– MOV AX, [BX+2]
• Με καταχωρητή δείκτη (Direct indexed)
– MOV AX, [SI+2]
• Με καταχωρητή βάσης και δείκτη (Base indexed)
– MOV AX, BX[SI]
6
Άμεσος
Immediate
Τα δεδομένα βρίσκονται
μέσα στην εντολή
Ο επεξεργαστής διαβάζει
τον κωδικό εντολής και
τοποθετεί τα δεδομένα
που ακολουθούν στον
κατάλληλο καταχωρητή
Τα δεδομένα μπορεί να
έχουν μήκος 8 ή 16bit το
οποίο καθορίζεται στον
κωδικό εντολής και από
το μήκος του
καταχωρητή
προορισμού
Reg[dst] Imm
Άμεσος
Παραδείγματα
8
Με καταχωρητή Register Direct (1)
• Η εντολή αποτελείται μόνο από τον κωδικό εντολής και δεν έχει άλλα
bytes που να την αποτελούν
Reg[dst] Reg[src]
CH CL 0102h 1002h
DH DL 0103h 1003h
0104h 1004h
SP
0105h 1005h
BP
0106h 1006h
SI
0107h 1007h
DI
CS=1234h
Μεταφέρθηκαν
DS 4D23h
Word 4D23h
12440h
SS
ES Byte 4Dh
ΜΟV DL, AH
10
Με καταχωρητή - Παραδείγματα
• MOV DS, AX ; DS AX
• MOV DL, AL ; DL AL
• MOV AH, AL ; AH AL
• MOV BL, AH ; BL AH
• MOV AX, CX ; AX CX
11
Απευθείας
Direct
• Η εντολή περιέχει μια 16bit λογική διεύθυνση
12
Απευθείας
Direct
Code Segment Data Segment
0104h 1004h
SP
0105h 1005h
BP
0106h 1006h
SI
0107h 1007h
DI
12440h 57781h
CS=1234h
+ Μεταφέρθηκαν
5678h
DS=5678h
SS Word 2308h
ES
ΜΟV AX, [1001h]
13
Απευθείας
Παραδείγματα
• MOV AX, [1000h] ; AL DS:[1000h],
; AH DS:[1001h]
14
Έμμεσος με καταχωρητή
Register Indirect (1)
• Η 16bit λογική διεύθυνση μετατόπισης βρίσκεται αποθηκευμένη σε
κάποιον από τους καταχωρητές SI, DI, BX, BP, ο οποίος εμπεριέχεται στον
κωδικό εντολής
15
Έμμεσος με καταχωρητή
Register Indirect (2)
Code Segment Data Segment
DH DL 0103h 1003h
0104h 1004h
SP
0105h 1005h
BP
0106h 1006h
SI
0107h 1007h
DI
12440h
57784h
CS=1234h
Μεταφέρθηκαν
DS=5678h
Word 4D23h
SS
ES
ΜΟV [BX], AX
ΜΟV DL, AH 16
Έμμεσος με καταχωρητή
Παραδείγματα
• MOV [BX], AL ; DS:[BX] AL
• MOV SS:[BX], AL ; SS:[BX] AL
• MOV [DI], AX ; DS:[DI] AX
• MOV AH, [SI] ; AH DS:[SI]
• MOV AH, SS:[SI] ; AH SS:[SI]
• MOV AX, [BP] ; AX SS:[BP]
• MOV AX, DS:[BP] ; AX DS:[BP]
• MOV AX, [BX] ; AX DS:[BX]
17
19
Με καταχωρητή δείκτη
Indexed Relative
• Παρόμοια με τη διευθυνσιοδότηση με καταχωρητή βάσης και μετατόπιση
20
Με καταχωρητή δείκτη
Παραδείγματα
21
22
Με καταχωρητή βάσης & δείκτη
Παραδείγματα (1)
23
24
Τύποι εντολών
• Μεταφοράς δεδομένων
• Αριθμητικών πράξεων
• Χειρισμού bit
• Διακλάδωσης
• Διακλάδωσης με προϋποθέσεις
• Συμβολοσειρών
• Ελέγχου επεξεργαστή
25
26
Εντολές Μεταφοράς Δεδομένων (2)
2. push src ; (sp-2) src Low, (sp-1)
src High
pop dst ; dst Low (sp), dst High
(sp+1), sp sp+2
mov sp,0000h
mov ax,1234h
push ax
pop bx ; bl=34 h, bh=12 h, sp=0000 h
push [bx]; (sp-2) [bx], (sp-1) [bx+1
push al
27
28
Εντολές Μεταφοράς Δεδομένων (4)
4. in acc,port ; al ή ax (διεύθυνση πόρτας) – Άμεσος τρόπος
; al ή ax (dx) – Έμμεσος τρόπος
in bl,80h
out dx,cx
29
30
Εντολές Αριθμητικών Πράξεων (1)
1. add dst, src ; dst dst+src για 8 ή 16 bit
adc dst,src ; dst dst+src+CF για 8 ή 16 bit
add ax,bx
add cl,dl
add ax,[bx] ;ax=ax+[bx+1][bx]
add [1000h],3 ;[1001h][1000h]= [1001h][1000h]+3
adc ax,5Fh ;ax=ax+005Fh+CF
2. sub dst, src ; dst dst-src για 8 ή 16 bit
sbb dst,src ; dst dst-src-CF για 8 ή 16 bit
31
Σημείωση:
1) Δεν επηρεάζουν το CF.
2) Αν θέλουμε να αυξήσουμε/μειώσουμε λέξη στη μνήμη τότε πρέπει να
χρησιμοποιούμε την εντολή σαν: inc word ptr [bx] ή dec word ptr [1000h].
32
Εντολές Αριθμητικών Πράξεων (3)
4.cmp dst,src ; Μεταβολή μόνο των σημαιών μετά την πράξη dst-src
cmp ax,bx
cmp ax,[bx]
cmp [1000h],dl
cmp ax,1000h
5.mul src ; Πολλαπλασιασμός μη προσημασμένων αριθμών
; al*8 bits=ax (για bytes) ή ax*16 bits=dxax (για words)
mov al,9 ;al=09 h
mov bl,5 ;bl=05h
mul bl ;ax=al*bl=09h*05h=45d=002dh
mul byte ptr [1000h] ;πολλ/σμός του al με το byte στη διεύθυνση ds:1000h
mul 12h
33
div 12h
34
Διορθωτικές Εντολές Αριθμητικών
Πράξεων (1)
1.daa ; Decimal Adjust al after Addition
; Χρησιμοποιείται μετά από πρόσθεση 2 packed BCD για επαναφορά του
αποτελέσματος σε BCD μορφή
mov al,19h
mov bl,15h
add al,bl ; al=2eh (θέλουμε αποτέλεσμα 34h, δηλαδή δεκαδικής εμφάνισης)
daa ; al=2eh
6
24 και AF=1
+1
; al=34h
35
36
Διορθωτικές Εντολές Αριθμητικών
Πράξεων (3)
3.aaa ; ASCII Adjust al after Addition
; Χρησιμοποιείται μετά από πρόσθεση 2 unpacked BCD για επαναφορά του
αποτελέσματος σε BCD μορφή
mov ax,0109h
mov bx,0105h
add ax,bx ; ax=020eh (θέλουμε αποτέλεσμα 0304h, δηλαδή δεκαδικής
εμφάνισης)
aaa ; al=0eh
6
04 και ah=ah+1 ax=0304h
mov ax,15 ; ax=000fh
aaa ;ax=0105h
37
38
Διορθωτικές Εντολές Αριθμητικών
Πράξεων (5)
5. aam ; ASCII Adjust ax after Multiplication
; Χρησιμοποιείται μετά από πολλ/σμό 2 unpacked BCD για
επαναφορά του αποτελέσματος σε BCD μορφή. ah=al/10, al=υπόλοιπο
mov ax,0005h
mov bx,0009h
mul bx ; dxax=0000 002d h (θέλουμε αποτέλεσμα 0405h, δηλαδή
δεκαδικής ; εμφάνισης)
aam ; ah=2dh/0ah=45d/10d=04h και al=05h ax=0405
39
mov ax,0207h
mov bl,09h
aad ; ah=00h, al=02h*10+07=27d=1bh ax=001bh
div bl ; 001bh/09h al=03h ,ah=00h ax=0003h
40
Εντολές Λογικών Πράξεων
• and dst, src ; dst dst • src
• or dst, src ; dst dst + src
• xor dst,src ; dst dst ʘ src
• not dst ; dst /dst
• test dst, src ; Ενημερώνει τις σημαίες μετά την πράξη dst • src χωρίς να
αλλάξει τους καταχωρητές
mov ax,1234h
mov bx,5678h
and ax,bx
or ax,[bx]
xor [1000h],bx
not [bx] ; Προσοχή στις αμφισημίες (byte ή word?)
test ax,bx ; ax • bx = 1238h (ZF=0, CF=0, …)
not ax ; ax=edcb h
41
42
Εντολές Ολίσθησης (2)
• shr dst, cl ; Λογική
ολίσθηση δεξιά cl φορές
• sar dst, cl ;
Αριθμητική ολίσθηση δεξιά
cl φορές – Χρησιμοποιείται
για ολίσθηση
προσημασμένων αριθμών
mov ax,fffa h ; Ο ax
περιέχει το αριθμό -6
sar ax,1 ; ax=fffd h
O ax περιέχει τον αριθμό
-3
43
44
Εντολές Περιστροφής (2)
• ror dst, cl ; Περιστροφή δεξιά cl
φορές
• rcr dst, cl ; Περιστροφή δεξιά
μέσω κρατούμενου cl φορές
45
46
Εντολές Διακλάδωσης (2)
•int n ; κλήση εξυπηρέτησης διακοπής λογισμικού
; Στο σωρό αποθηκεύονται οι σημαίες (2 bytes), ο CS (2
; bytes) και ο IP (2 bytes) της επόμενης εντολής
• ret ; Επιστροφή από την υπορουτίνα. Ανάκτηση από το σωρό των
; προηγούμενων δεδομένων και επιστροφή στην επόμενη εντολή της
; call addr.
• iret ; Επιστροφή από την υπορουτίνα εξυπηρέτησης της
; διακοπής. Ανάκτηση από το σωρό των προηγούμενων
; δεδομένων και επιστροφή στην επόμενη εντολή της int n.
47
Εντολές Διακλάδωσης
με προϋποθέσεις
• jg ; Άλμα για μεγαλύτερο
• jge ; Άλμα για μεγαλύτερο ή ίσο
• jl ; Άλμα για μικρότερο Προσημασμένοι
• jle ; Άλμα για μικρότερο ή ίσο
• ja ; Άλμα για μεγαλύτερο
• jae ; Άλμα για μεγαλύτερο ή ίσο
• jb ; Άλμα για μικρότερο Μη Προσημασμένοι
• jbe ; Άλμα για μικρότερο ή ίσο
48
Εντολές Συμβολοσειρών (1)
• movsb/movsw ; es:di ds:si (byte/word) – si/di=si/di +/-
1 ή 2 (DF=0/1)
• lodsb/lodsw ; al/ax ds:si (byte/word) - si=si +/- 1 ή 2
(DF=0/1)
• stosb/stosw ; es:di al/ax (byte/word) - di=di +/- 1 ή 2
(DF=0/1)
• rep ; Επανέλαβε την εντολή μέχρι cx=0 (π.χ.
rep movsb)
49
50
Εντολές Ελέγχου Επεξεργαστή
• stc ; CF=1
• clc ; CF=0
• std ; DF=1 ενέργεια εντολής συμβολοσειράς κατά
φθίνουσες διευθύνσεις
• cld ; DF=0 ενέργεια εντολής συμβολοσειράς κατά
αύξουσες διευθύνσεις
• sti ; IF=1 ενεργοποίηση του μηχανισμού διακοπών
• cli ; IF=0 απενεργοποίηση του μηχανισμού διακοπών
51
Πηγαίο πρόγραμμα
52
Ψευδοεντολές (1)
• db – define byte Ορισμός μεταβλητής μεγέθους 1 byte
db 13h, 13, 00010011b, ’13’ περνάνε στη μνήμη
13h,0dh,13h,31h,33h
• dw – define word Ορισμός μεταβλητής μεγέθους 2 bytes
dw 1234h,1234,’1234’ περνάνε στη μνήμη 34h,12h,
d2h,04h,31h,32h,33h,34h
• equ – Ορισμός σταθεράς
factor equ 16 ; factor=10h
53
Ψευδοεντολές (2)
• end – Τέλος προγράμματος
• endp – Τέλος διαδικασίας
• offset – Υπολογίζει τη σχετική διεύθυνση (μετατόπιση) από
τη φυσική διεύθυνση
• proc – Έναρξη υπορουτίνας ή διαδικασίας
• ptr – Δείκτης μνήμης που μαζί με το byte/word ορίζει το
μέγεθος του δεδομένου
54
Παράδειγμα διαδικασίας
55
Περιεχόμενα ενότητας
• Παραδείγματα μεταφοράς δεδομένων
• Παραδείγματα αριθμητικών πράξεων
• Παραδείγματα λογικών πράξεων
• Παραδείγματα εντολών διακλάδωσης
• Παραδείγματα συμβολοσειρών
5
Παράδειγμα μεταφοράς δεδομένων (1)
7
Παράδειγμα αριθμητικών πράξεων (1)
11
Παράδειγμα εντολών διακλάδωσης (1)
12
13
Παράδειγμα Συμβολοσειρών
14
Περιεχόμενα ενότητας
• Πίνακες δεδομένων
• Μετατροπές αριθμητικών συστημάτων
• Μετατροπή BCD σε δυαδικό
• Μετατροπή κώδικα Gray σε δυαδικό
• Είσοδος-Έξοδος δεδομένων σε πόρτα
• Πρόσθεση δυαδικών ή δεκαδικών αριθμών
• Πρόσθεση μη συνεπτυγμένων δεκαδικών αριθμών
• Παραδείγματα χρήσης συμβολοσειρών
5
Πίνακες δεδομένων
Μονοδιάστατος Πίνακας
Δισδιάστατος Πίνακας
Παράδειγμα
7
Πίνακας εγγραφής δεδομένων (1)
Παράδειγμα
Παράδειγμα
9
Πίνακας εγγραφής δεδομένων (3)
10
11
Μετατροπές αριθμητικών συστημάτων (2)
12
• BIN pBCD
13
Μετατροπές αριθμητικών συστημάτων (4)
• pBIN BIN
14
Παράδειγμα
15
Χρήση διαδικασίας για pBCD BIN (2)
Παράδειγμα
16
Παράδειγμα
17
Είσοδος ή Έξοδος δεδομένων
σε πόρτα (1)
Παράδειγμα/ Μέρος Α
18
Παράδειγμα/ Μέρος Β
19
Είσοδος ή Έξοδος δεδομένων
σε πόρτα (3)
Παράδειγμα/Μέρος Γ
20
Παράδειγμα/Μέρος Α
21
Πρόσθεση δυαδικών ή δεκαδικών
αριθμών (2)
Παράδειγμα/ Μέρος Β
22
Πρόσθεση μη συνεπτυγμένων
δεκαδικών αριθμών (1)
Παράδειγμα/ Μέρος Α
23
Πρόσθεση μη συνεπτυγμένων
δεκαδικών αριθμών (2)
Παράδειγμα/ Μέρος Β
24
Παράδειγμα/ Μέρος Α
25
Παράδειγμα χρήσης συμβολοσειρών (2)
Παράδειγμα/ Μέρος Β
26
Μετακίνηση συμβολοσειράς
Παράδειγμα
27
Σύγκριση συμβολοσειρών (1)
Παράδειγμα/ Μέρος Α
28
Παράδειγμα/ Μέρος Β
29
Ανίχνευση χαρακτήρα
σε συμβολοσειρά (1)
Παράδειγμα/ Μέρος Α
30
Ανίχνευση χαρακτήρα
σε συμβολοσειρά (2)
Παράδειγμα/ Μέρος Β
31
Αριθμητικά Συστήματα
Οργάνωση Δεδομένων (1/2)
Bits: Η μικρότερη αριθμητική μονάδα ενός
υπολογιστικού συστήματος, η οποία δείχνει δύο
καταστάσεις, 0 ή 1 (αληθές η ψευδές).
Nibbles: Μονάδα 4 bit που παριστά 1 δεκαεξαδικό
ψηφίο ή 1 δεκαδικό ψηφίο σε BCD.
Bytes: Ομάδα από 8 bit, είναι η μικρότερη μονάδα
δεδομένων που μπορεί να διακινηθεί σε ένα
υπολογιστικό σύστημα.
Οργάνωση Δεδομένων (2/2)
Words: Ομάδα από 16 bits (2 bytes ή 4
nibbles) που παριστά ένα θετικό αριθμό από 0
ως 65535 ή ένα προσημασμένο από ‐32768
ως 32767.
Double Words: διπλή λέξη (2 λέξεις ή 4 bytes).
Quad Words: τετραπλή λέξη (2 διπλές λέξεις,
ή τέσσερις λέξεις ή 8 bytes ή 16 nibbles ή 64
bits).
Λειτουργίες σε bytes, words, dwords
και qwords
Δεκαδικό σύστημα
Η παράσταση ενός αριθμού D στο δεκαδικό
σύστημα δίνεται από τη σχέση:
D={… d3 d2 d1 d0 .d‐1 d‐2 d‐3 …}, και η τιμή του
D=i (di 10i ).
Για παράδειγμα το 123.54 μπορεί να γραφτεί
σαν:
123.54 = 1102 +2101 +3100 +510‐1 +410‐2
Δυαδικό σύστημα
Το δυαδικό σύστημα μοιάζει με το δεκαδικό με τη
διαφορά ότι αποτελείται από 2 ψηφία και η δυαδική
αναπαράσταση ενός αριθμού πραγματοποιείται με
δυνάμεις του δυο ως εξής:
B={… b3 b2 b1 b0 .b‐1 b‐2 b‐3 …} και η τιμή του
B=i (bi 2i )
Για παράδειγμα το 1011.011 μπορεί να γραφτεί σαν:
1011.011 = (1 23)+ (0 22)+(1 21)+(1 20)+
(0 2‐1)+(1 2‐2) +(1 2‐3)= 11.37510
Δεκαεξαδικό σύστημα
Οι υπολογιστές βασίζουν τη λειτουργία τους
στο δυαδικό σύστημα, όμως οι δυαδικοί
αριθμοί αναπαρίστανται στο δεκαεξαδικό για
να αποφεύγονται πολύ μεγάλοι δυαδικοί. Το
δεκαεξαδικό επιτρέπει την ομαδοποίηση των
δυαδικών ψηφίων ανά τέσσερα.
Η={… h3 h2 h1 h0 .h‐1 h‐2 h‐3 …} και η τιμή του
H=i (hi 16i ).
Πίνακας ισοδυναμίας ψηφίων
Σημαντική Σημείωση
Στη διάρκεια του μαθήματος δεν θα γίνει ξανά
αναφορά σε πραγματικούς αριθμούς, όπου
εμφανίζεται το σύμβολο «.», αυτό θα
χρησιμοποιείται απλά για τον οπτικό
διαχωρισμό των ψηφίων του αριθμητικού
συστήματος, με σκοπό τον καλύτερο χειρισμό
και ευκολότερη ανάγνωση από εσάς.
Κώδικες (1/2)
O αριθμός που περιέχεται σε ένα byte μπορεί
να ερμηνευθεί με πολλούς τρόπους.
Για παράδειγμα το 01001100b μπορεί να είναι
ο δεκαδικός 76, ο δεκαεξαδικός 4Ch ή ο
χαρακτήρας “L” στον πίνακα με τους κωδικούς
ASCII.
H υπόσταση ενός αριθμού καθορίζεται από το
χρήστη, ο οποίος τους χειρίζεται όπως απαιτεί
η εκάστοτε εφαρμογή.
Κώδικες (2/2)
Δύο από τους πιο συχνά χρησιμοποιούμενους
τύπους ή κώδικες, είναι η δεκαδική
παράσταση ενός δυαδικού αριθμού (BCD –
Binary Coded Decimal) και ο Αμερικάνικος
Κώδικας Αντιστοιχιών (American Standard
Code for Information Interchange).
Υπάρχουν και άλλοι κώδικες όπως Gray,
Baudot, EBCDIC κλπ.
ASCII Character Set
Κάθε κομμάτι κειμένου που αποθηκεύεται σε
έναν υπολογιστή αναπαριστά τους
χαρακτήρες που εμφανίζονται σε αυτό ως
αριθμούς από μια τυποποιημένη λίστα,
ονομαζόμενη ASCII.
Ο ASCII είναι κώδικας των 7 bits, o οποίος
εκφράζεται σαν ένα byte όπου το πιο
σημαντικό ψηφίο είναι μηδέν ή
χρησιμοποιείται σαν ισοτιμία (parity).
ASCII Character Table
Δεκαδικοί με Δυαδική Κωδικοποίηση
(Binary Coded Decimals ‐ BCD)
Ο κώδικας BCD
χρησιμοποιείται όταν
θέλουμε να έχουμε είσοδο,
έξοδο και επομένως
εσωτερική επεξεργασία
δεκαδικών αριθμών.
Ένας δεκαδικός κώδικας:
Δεκαδικοί αριθμοί (0..9)
κωδικοποιούνται
χρησιμοποιώντας διακριτές
δυαδικές λέξεις 4ων bit.
Δεκαδικοί με Δυαδική Κωδικοποίηση
Για την κωδικοποίηση αριθμών με n δεκαδικά
ψηφία, χρειαζόμαστε 4n bits στο BCD
π.χ. (365)10 = (0011.0110.0101)BCD
Αυτό είναι διαφορετικό από την μετατροπή σε
δυαδικό όπου (365)10 = (1.0110.1101)2
Ο κώδικας BCD χρειάζεται περισσότερα bits.
Όμως, παρέχει μεγαλύτερη ευκολία στην
ανάγνωση/ερμηνεία.
Packed και Unpacked BCD
Packed BCD: Συνεπτυγμένοι είναι οι αριθμοί BCD
οι οποίοι περιέχουν δύο δυαδικά ψηφία σε ένα
byte. Οι αριθμοί 29h (byte), 3629h (word),
17243629h (double word) είναι BCD σε
συνεπτυγμένη μορφή.
Unpacked BCD: Μη συνεπτυγμένοι είναι οι
αριθμοί BCD οι οποίοι περιέχουν ένα δυαδικό
ψηφίο σε ένα byte. Οι αριθμοί 09h (byte), 0209h
(word), 07040609h (double word) είναι BCD σε μη
συνεπτυγμένη μορφή.
Πρόσθεση με BCD (1/2)
Όταν 2 κώδικες BCD προστίθενται:
Εάν το δυαδικό άθροισμα είναι μικρότερο από 10102
(=1010), το αποτέλεσμα της πρόσθεσης δίνει έγκυρο και
ορθό κώδικα για BCD
Εάν το δυαδικό άθροισμα είναι ίσο ή μεγαλύτερο από
10102, τότε το αποτέλεσμα της πρόσθεσης δίνει άκυρο
ή/και λανθασμένο κώδικα για BCD. Διορθώνεται με την
πρόσθεση του 01102 (=610) στο αποτέλεσμα της
πρόσθεσης, έτσι ώστε να παραχθεί το σωστό κρατούμενο
στο αριστερό ψηφίο.
Γιατί 610;
Πρόσθεση με BCD (2/2)
Παράδειγμα: Πρόσθεση 448 & 489 σε BCD.
Διόρθωση Decimal Adjust (SUB)
DAS: Διορθώνει το αποτέλεσμα μετά από
αφαίρεση δυο Packed BCD τιμών
Αλγόριθμος:
Αν AL>9 ή AF=1
AL=AL‐6 ‐‐ AF=1
Αν AL>9F ή CF=1
AL=AL‐60h ‐‐ CF=1
Λογικές Πράξεις (1/2)
Οι λογικές πράξεις AND, OR, NOT, XOR
εκτελούνται bit προς bit μεταξύ δυο δυαδικών
αριθμών ίδιου μήκους (Bitwise).
Η AND χρησιμοποιείται για το μηδενισμό (λογικό 0)
ενός η περισσότερων bits.
Η OR χρησιμοποιείται για την τοποθέτηση (λογικό 1)
ενός ή περισσότερων bits.
Η NOT χρησιμοποιείται για την αντιστροφή της
λογικής κατάστασης του αριθμού.
Η XOR χρησιμοποιείται για την αντιστροφή της
λογικής κατάστασης μερικών bits.
Λογικές Πράξεις (2/2)
Αριθμητικές Πράξεις
Οι δυαδικές αριθμητικές πράξεις εκτελούνται
μεταξύ προσημασμένων ή μη
προσημασμένων αριθμών.
Το πρόσημο ενός προσημασμένου αριθμού
βρίσκεται πάντα στο πιο σημαντικό του bit:
ο αριθμός είναι θετικός αν το bit πρόσημου είναι
0, ενώ είναι αρνητικός αν αυτό είναι 1.
Τα υπόλοιπα bits δίνουν το μέτρο του
αριθμού.
Συμπλήρωμα ως προς 1
Στην παράσταση με συμπλήρωμα ως προς 1, το
μέτρο του αριθμού αποθηκεύεται αφού έχει
εφαρμοστεί η δυαδική αντιστροφή (ΝΟΤ) σε
όλα τα bits αυτού.
Βασικό μειονέκτημα και παράδοξο αποτελεί η
ύπαρξη διπλής απεικόνισης για το μηδέν
(θετικό και αρνητικό μηδέν, 0000.0000b και
1111.1111b αντίστοιχα.
Συμπλήρωμα ως προς 2
Η παράσταση με συμπλήρωμα ως προς 2
επιβάλει το χειρισμό του πιο σημαντικού bit ως
πολλαπλασιαστή τιμής ‐1 επί το βάρος που
αντιστοιχεί στη θέση του ψηφίου πρόσημου,
για 8bit αριθμό ‐27 = ‐128.
Τα υπόλοιπα bits προστίθενται με το βάρος
που τους αντιστοιχεί στο αρνητικό βάρος του
πιο σημαντικού ψηφίου.
Δεν υπάρχει το πρόβλημα της διπλής
αναπαράστασης του μηδενός.
Μετατροπή BCD: (a) packed σε
unpacked και (b) το αντίθετο
Ολίσθηση και Περιστροφή
Η ολίσθηση προς τα αριστερά ενός μη
προσημασμένου αριθμού κατά n θέσεις
ισοδυναμεί με πολλαπλασιασμό με 2n.
Η ολίσθηση προς τα δεξιά ενός μη
προσημασμένου αριθμού κατά n θέσεις
ισοδυναμεί με διαίρεση δια 2n.
Αριστερή Λογική
Ολίσθηση κατα 1
∆εξιά Λογική
Ολίσθηση κατα 1
Δυαδικό σε
Δεκαδικό
Ένας δυαδικός αριθμός
μήκους ενός byte έχει
εκατοντάδες, δεκάδες
και μονάδες.
Η μετατροπή γίνεται με
τη μέθοδο των
διαδοχικών διαιρέσεων,
με το 100d=64h και
10d=0Ah, προκειμένου
να διαχωριστούν τα
ψηφία με το αντίστοιχο
βάρος.
Δεκαδικό σε
Δεκαεξαδικό
Ένας δεκαδικός
αριθμός μήκους ενός
byte (packed BCD),
έχει δεκάδες και
μονάδες.
Η μετατροπή γίνεται
αν οι δεκάδες
πολλαπλασιαστούν με
10d=0Ah και στο
αποτέλεσμα
προστεθούν οι
μονάδες.
Δυαδικό σε
ASCII
Ένας δυαδικός
αριθμός μήκους ενός
byte έχει δύο ψηφία
σε hex.
Αρχικά διαχωρίζονται
τα ψηφία και στη
συνέχεια ελέγχεται αν
κάποιο ψηφίο είναι
γράμμα ή αριθμός
ώστε να του
προστεθεί το 30h ή
37h αντίστοιχα
ASCII σε
Δυαδικό
Για να μετατρέψουμε
δύο χαρακτήρες ASCII
σε δυαδικό αριθμό
ενός byte, ελέγχουμε
αν καθένας από
αυτούς είναι αριθμός
ή όχι, ώστε να του
αφαιρεθεί το 30h ή
37h αντίστοιχα και
μετά κάνουμε
σύμπτυξη.
FFFFh 36h
Οι διευθύνσεις είναι αριθμητικές
τιμές μήκους σε bit όσο το
Χάρτης μνήμης ενός τυπικού 8bit address bus (δίαυλος
μικροϋπολογιστικού συστήματος με διευθύνσεων)
16bit address bus
001Ch 06h
001Dh 20h
Αποθήκευση αριθμού
2006h στη μνήμη
Διαχείριση μνήμης στον 80x86
Ο 80x86 είναι επεξεργαστής των 16bits με address bus
μήκους 20bits
Διευθυνσιοδοτεί 1Mbyte μνήμης (220bytes)
Πρόβλημα:
Ο καταχωρητής διεύθυνσης επόμενης εντολής (IP) έχει μήκος 16bits
και δεν μπορεί να δει ολόκληρη τη μνήμη που προσφέρει το address
bus
Λύση:
Η μνήμη διασπάται σε πολλαπλά λογικά τμήματα (segments) των
64kBytes
Κάθε τμήμα μπορεί να ξεκινά (βάση τμήματος) ανά 16 θέσεις στη
φυσική διεύθυνση της μνήμης (20bit) και να επιτρέπει στον
επεξεργαστή να δει τις επόμενες 64k θέσεις που ακολουθούν
CS
General
Purpose DS
IP=5678h
5678h Register CS=1234h
1234h
SS
File
ES
20bit 0 0 20bit
05678h + 12340h
179B8h
20bit
Φυσική Διεύθυνση
Reg[dst] Imm
DH DL 0103h 1003h
0104h 1004h
SP
0105h 1005h
BP
0106h 1006h
SI
0107h 1007h
DI
12440h
12440h
CS=1234h
Μεταφέρθηκαν
DS
SS Word 2308h
ES
ΜΟV AX, 2308h
Άμεσος
Παραδείγματα
MOV AX, 1000h ; AH 10h, AL 00h
MOV AX, 320 ; AH 0000 0001b (01h)
; AL 0100 0000b (40h)
ADD AL, 10 ; AL AL + 0Ah
MOV AL, -40 ; AL 1101 1000b (D8h)
Με καταχωρητή
Register Direct
Τα δυο ορίσματα της εντολής είναι καταχωρητές του
επεξεργαστή
Reg[dst] Reg[src]
Code Segment Data Segment
CH CL 0102h 1002h
DH DL 0103h 1003h
0104h 1004h
SP
0105h 1005h
BP
0106h 1006h
SI
0107h 1007h
DI
12441h
12440h
CS=1234h
Μεταφέρθηκαν
DS 4D23h
SS Word
Byte4D23h
4Dh
ES ΜΟV DS,
DL, AH
AX
Με καταχωρητή
Παραδείγματα
MOV DS, AX ; DS AX
MOV DL, AL ; DL AL
MOV AH, AL ; AH AL
MOV BL, AH ; BL AH
MOV AX, CX ; AX CX
Απευθείας
Direct
Η εντολή περιέχει μια 16bit λογική διεύθυνση
0104h 1004h
SP
0105h 1005h
BP
0106h 1006h
SI
0107h 1007h
DI
12440h + 57781h
CS=1234h
Μεταφέρθηκαν
DS=5678h
5678h
SS Word 2308h
ES
ΜΟV AX, [1001h]
Απευθείας
Παραδείγματα
MOV AX, [1000h] ; AL DS:[1000h], AH DS:[1001h]
Έμμεσος με καταχωρητή
Register Indirect
Η 16bit λογική διεύθυνση μετατόπισης βρίσκεται αποθηκευμένη σε
κάποιον από τους καταχωρητές SI, DI, BX, BP, ο οποίος εμπεριέχεται
στον κωδικό εντολής
CH CL 0102h 1002h
DH DL 0103h 1003h
0104h 1004h
SP
0105h 1005h
BP
0106h 1006h
SI
0107h 1007h
DI
12440h 57784h
CS=1234h
Μεταφέρθηκαν
DS=5678h
SS Word 4D23h
ES
ΜΟV DL,
ΜΟV AH[BX], AX
Έμμεσος με καταχωρητή
Παραδείγματα
MOV [BX], AL ; DS:[BX] AL
MOV SS:[BX], AL ; SS:[BX] AL
MOV [DI], AX ; DS:[DI] AX
MOV AH, [SI] ; AH DS:[SI]
MOV AH, SS:[SI] ; AH SS:[SI]
MOV AX, [BP] ; AX SS:[BP]
MOV AX, DS:[BP] ; AX DS:[BP]
MOV AX, [BX] ; AX DS:[BX]
Με καταχωρητή βάσης & μετατόπιση
Base Relative
Επέκταση της έμμεσης με καταχωρητή διευθυνσιοδότησης
Η μετατόπιση μπορεί να είναι των 8bits (-128 έως + 127) ή των 16bits (-
32768 έως + 32767)
Με καταχωρητή δείκτη
Παραδείγματα
MOV AL, [SI + 6] ; AL DS:[SI + 0006h]
MOV ES:[DI + 100h], AL ; ES:[DI + 0100h] AL
MOV [SI + 25000], AX ; DS:[SI + 61A8h] AL,
; DS:[SI + 61A9h] AH
MOV [SI - 68], AX ; DS:[SI + FFBCh] AL,
; DS:[SI + FFBDh] AH
ADD AL, ES:[DI + 10] ; AL AL + ES:[DI + 000Ah]
Με καταχωρητή βάσης & δείκτη
Based Indexed
Επέκταση της έμμεσης με καταχωρητή διευθυνσιοδότησης
ΠΡΟΓΡΑΜΜΑΤΟΣ ΨΕΥΔΟΕΝΤΟΛΕΣ
ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ-
ΜΑΚΡΟΕΝΤΟΛΕΣ- ΔΙΑΔΙΚΑΣΙΕΣ (ΕΙΣΑΓΩΓΗ)
ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ Ι
Τ ί κύρια
Τρία ύ τμήματα
ή
Ορισμός μοντέλου τμημάτων μνήμης και σωρού
Ορισμός
ό και αρχικοποίηση
ί τιμών
ώ μεταβλητών
ώ
Τμήμα κώδικα
.code
.exit
ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ ΙΙ
.model
model [είδος]
.stack [μέγεθος]
.data
d t
.code
.exit
ΜΟΝΤΕΛΑ ΜΝΗΜΗΣ (.MODEL
( MODEL [ΕΙΔΟΣ])
Είδος Δεδομένα Κώδικας
Tiny Ενιαίο≤64KB Ενιαίο τμήμα δεδομένων και
κώδικα
Small ≤64KB ≤64KB 1 Τμήμα
μήμ δεδομένων,
μ ,
1 Τμήμα κώδικα
Medium ≤64KB ≤64KB/Τμήμα 1 Τμήμα δεδομένων,
>1 Τμήματα κώδικα
Compact ≤64KB/Τμήμα ≤64KB >1 Τμήματα δεδομένων,
1 Τμήμα κώδικα
Large* οποιοδήποτε οποιοδήποτε >1 Τμήματα δεδομένων,
>1 Τμήματα κώδικα
* Στο μοντέλο Large το μεγαλύτερο μέγεθος μεταβλητής πρέπει να είναι ≤64KB ενώ
στο μοντέλο Huge δεν υπάρχει ο παραπάνω περιορισμός
ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ ΙΙ
.model
model small
.stack [μέγεθος]
.data
d t
.code
.exit
ΜΟΝΤΕΛΑ ΣΩΡΟΥ (.STACK)
( STACK)
ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ ΙΙ
.model
model small
.stack (ισοδυναμεί με .stack 1024)
.data
d t
.code
.exit
ΟΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ (.DATA)
( DATA)
Ορισμός
ρ μ ς σταθερών
ρ και μ
μεταβλητών
β η εντόςς αυτού
του τμήματος
ΣΤΑΘΕΡΕΣ
Οδηγία Λειτουργία
dup
p ((duplicate)
p ) Καθορισμός
ρ μ ς πλήθους
ή ς στοιχείων
χ μ
μεταβλητής
β η ής
dup (?) Η τιμή στην παρένθεση καθορίζει την
αρχική τιμή των στοιχείων της μεταβλητής.
Όταν η παρένθεση περιέχει το ? Η αρχική
τιμή των στοιχείων της μεταβλητής είναι
αδιάφορη.
ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ ΙΙ
.model
model small
.stack
.data
d t
len equ 20
var1 db 50 dup (30)
.code
.exit
ΤΜΗΜΑ ΚΩΔΙΚΑ (.CODE)
( CODE)
ΤΤο Τμήμα
Τ ή αυτό ό περιέχει
έ τις εντολές
λέ του
προγράμματος και κλήσεις προς μακροεντολές και
διαδικασίες
Στην αρχή του κώδικα πραγματοποιείται
αρχικοποίηση
ί τμημάτων
ά δ δ έ
δεδομένων με
αρχικοποίηση του καταχωρητή DS
(Διαδικασία δύο βημάτων για αποφυγή λάθους!!!)
ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ ΙΙ
.model
model small
.stack
.data
d t
len equ 20
var1 db 50 dup (30)
.code
mov AX, seg var1
mov DS, AX
.exit
ΕΞΟΔΟΣ ΣΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ(.ΕΧΙΤ)
ΣΥΣΤΗΜΑ( ΕΧΙΤ)
Η συγκεκριμένη
έ οδηγία
ί προς το
συμβολομεταφραστή ισοδυναμεί με το τμήμα
εντολών:
.exit
exit
mov AX,4C00h
Int 21h
ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ ΙΙ
.model
model small
.stack
.data
d t
len equ 20
var1 db 50 dup (30)
.code
mov AX, seg var1
mov DS, AX
.exit
ΑΛΛΕΣ ΨΕΥΔΟΕΝΤΟΛΕΣ I
Οδηγία Λειτουργία
assume Σ δέ ένα
Συνδέει έ τμήμα
ή με έναν
έ καταχωρητή
ή τμήματος
ή
end Τέλος προγράμματος. Εάν συνοδεύεται από κάποιο όνομα, είναι
ένδειξη εκκίνησης της εκτέλεσής του.
macro Έναρξη μακροεντολής
endm Τέλος μακροεντολής (macro)
proc Έναρξη διαδικασίας
endp Τέλος διαδικασίας
public Επιτρέπει τη χρήση σταθερών ή μεταβλητών από άλλα
προγράμματα, τα οποία πρόκειται να ενσωματωθούν με τον
συνδέτη.
ΑΛΛΕΣ ΨΕΥΔΟΕΝΤΟΛΕΣ II
Οδηγία Λειτουργία
extrn
t Χρήση
Χ ή σταθερών
θ ώ ή μεταβλητών
βλ ώ άλλ
άλλου προγράμματος,
ά στο οποίο
ί
έχουν δηλωθεί με την εντολή public
include Ενσωμάτωση στο πηγαίο αρχείο άλλου αρχείου
offset Υπολογισμός της σχετικής διεύθυνσης από τη φυσική διεύθυνση
org Ορισμός διεύθυνσης εντός του τμήματος, από την οποία θα
τοποθετεί ο συμβολομεταφραστής τον κώδικα και τα δεδομένα που
ακολουθούν
ptr Δείκτης μνήμης ο οποίος μαζί με το πρόθεμα byte ή word καθορίζει
το μήκος
ή του δ
δεδομένου
δ έ που θ
θα δ
διακινηθεί.
θ ί
segment Ορισμός τμήματος
ends Τέλος τμήματος
ΜΑΚΡΟΕΝΤΟΛΕΣ Ι
Ο κώδικας μιας μακροεντολής αντικαθίσταται στα
σημεία εμφάνισης εντός του προγράμματος
κατά
α ά τη
η μετάφραση!
ε άφραση!
Δομή μακροεντολής
μ μ
[[Όνομα μακροεντολής]
ρ ής] macro [[Παράμετροι]
ρ μ ρ ]
εντολές
Ό
[Όνομα μακροεντολής]
ή endm
ΜΑΚΡΟΕΝΤΟΛΕΣ ΙΙ
.model
d l smallll .code
d
.stack mov AX, seg var1
.data mov DS, AX
msg1 db “arxitektoniki II$” mov ES, AX
msg2 db “earino 2010$” prtnmsg msg1
prtnmsg macro text prtnmsg msg2
mov dx, offset text .exit
mov ah,
ah 09h
Int 21h
prtnmsg endm
ΜΑΚΡΟΕΝΤΟΛΕΣ ΙIΙ
.code
d .code
d
mov AX, seg var1 mov AX, seg var1
mov DS,
DS AX mov DS,
DS AX
mov ES, AX mov ES, AX
mov dx,
dx offset msg1 prtnmsg msg1
mov ah, 09h prtnmsg msg2
Int 21h .exit
mov dx, offset msg2
mov ah, 09h
Int 21h
.exit
ΔΙΑΔΙΚΑΣΙΕΣ I
Οι διαδικασίες
Ο δ δ ί αποτελούν
λ ύ αυτόνομα
ό τμήματα
ή
κώδικα που καλούνται μέσα από άλλα τμήματα
κώδικα.
κώδικα
Δομή Διαδικασιας
μ Διαδικασίας]
[[Όνομα ς] p
proc near ή far
εντολές
ret
[Όνομα Διαδικασίας] endp
ΔΙΑΔΙΚΑΣΙΕΣ ΙΙ
model
d l smallll prtnmsg proc near
.stack mov dx, offset msg
.data mov ah, 09h
msg db “arxitektoniki II$” Int 21h
.code ret
mov AX, seg var1 prtnmsg endp
mov DS, AX
mov ES,
ES AX
call prtnmsg
.exit
exit
Emu8086
Παρουσίαση
Τι είναι ο emu8086;
Είναι ένα περιβάλλον σχεδιασμένο για εκπαιδευτικούς
σκοπούς, το οποίο επιτρέπει την οργανωμένη ανάπτυξη
κώδικα και την εκτέλεση αυτού, με στόχο τον έλεγχο ορθής
λειτουργίας και την αποδοτική αποσφαλμάτωσή του.
www.emu8086.com
(shareware)
Τι μας προσφέρει;
Συντακτικός έλεγχος και συμβολομετάφραση του
κώδικα Assembly.
Δημιουργία εκτελέσιμου αρχείου προγράμματος (EXE
ή COM).
Βηματική ή ευθεία εκτέλεση προγράμματος.
Επισκόπηση των περιεχομένων της μνήμης.
Εξομοίωση τερματικού (οθόνη και πληκτρολόγιο) σε
κατάσταση κειμένου και γραφικών.
Εισαγωγή σημείων διακοπής εκτέλεσης (breakpoints)
Χρήση ιδεατών περιφερειακών.
3
Περιβάλλον εργασίας emu8086 #1
Αρχικά εμφανιζόμενο παράθυρο επιλογών εργασίας
New: Δημιουργία ενός καινούριου έργου ανάπτυξης προγράμματος.
Code Examples: Έτοιμα παραδείγματα προγραμμάτων για την εκμάθηση
της γλώσσας Assembly 80x86.
Quick Start Tutor: Ένας σύντομος οδηγός του emu8086.
Recent Files: Εμφανίζεται μια λίστα των πιο πρόσφατων προγραμμάτων,
που επεξεργάστηκε ο χρήστης.
4
Περιβάλλον εργασίας emu8086 #2
Παράθυρο επιλογής μορφής νέου έργου προγράμματος
COM: Πρότυπο δημιουργίας εκτελέσιμου αρχείου COM.
EXE: Πρότυπο δημιουργίας εκτελέσιμου αρχείου EXE.
BOOT: Πρότυπο δημιουργίας αρχείου δισκέτας εκκίνησης
υπολογιστικού συστήματος.
Empty Workspace: Δημιουργία
προγράμματος εκ του μηδενός.
The emulator: Απευθείας
εκτέλεση του εξομοιωτή για
χρήση με ήδη έτοιμο
πρόγραμμα.
5
Περιβάλλον εργασίας emu8086 #3
Βασικό παράθυρο εργασίας και ανάπτυξης
New: Δημιουργία νέου αρχείου πηγαίου κώδικα προγράμματος.
Open: Άνοιγμα υπάρχοντος αρχείου προς ανάγνωση και επεξεργασία
πηγαίου κώδικα προγράμματος.
Save: Αποθήκευση του πηγαίου κώδικα στο ανοικτό ή νέο αρχείο.
Compile: Έλεγχος συντακτικών σφαλμάτων και συμβολομετάφραση του
πηγαίου κώδικα.
6
Περιβάλλον εργασίας emu8086 #4
Βασικό παράθυρο εργασίας και ανάπτυξης
Emulate: Συμβολομετάφραση του πηγαίου κώδικα και φόρτωσή
του στον εξομοιωτή για τον έλεγχο της εκτέλεσής του.
Calculator: Ένα χρήσιμο υποπρόγραμμα που επιτρέπει τις πράξεις
ανάμεσα σε τελεστές διαφορετικών αριθμητικών συστημάτων.
Convertor: Ένα υποπρόγραμμα που επιτρέπει την άμεση
μετατροπή αριθμών ανάμεσα στα τέσσερα βασικά αριθμητικά
συστήματα.
Options: Παράθυρο μέσα στο οποίο ορίζονται ειδικές λειτουργίες
και παράμετροι εμφάνισης του προγράμματος.
Help: Ανοίγει στον εξ ορισμού περιηγητή ιστοσελίδων τις τοπικά
αποθηκευμένες ιστοσελίδες παροχής βοήθειας του
προγράμματος.
Ascii Codes: Εμφανίζει ένα παράθυρο, το οποίο περιέχει τον πλήρη
πίνακα χαρακτήρων και συμβόλων ASCII.
7
Περιβάλλον εργασίας emu8086 #5
Παράθυρο υπολογισμού πράξεων σε Παράθυρο μετατροπής αριθμών ανάμεσα σε
διαφορετικά αριθμητικά συστήματα ποικίλα αριθμητικά συστήματα
Συγγραφή ενός απλού προγράμματος #1
• Ο Χρήστης επιλέγει New Empty Workspace
• Συγγραφή κώδικα (βλ. σχήμα)
• Αποθήκευση από το μενού επιλογών
File Save As
9
Συγγραφή ενός απλού προγράμματος #2
Διαλογικό παράθυρο αποθήκευσης εκτελέσιμου αρχείου
Παράθυρο πληροφοριών μετά από Παράθυρο πληροφοριών μετά από
επιτυχημένη συμβολομετάφραση αποτυχημένη συμβολομετάφραση 10
Εκτέλεση προγράμματος‐Αποσφαλμάτωση #1
Load: Επιτρέπει τη φόρτωση ενός πηγαίου κώδικα (asm) ή κάποιο αρχείο
εκτελέσιμου κώδικα (com ή exe), με σκοπό την εξομοίωση του κώδικα που
περιέχουν.
Reload: Αναγκάζει τον εξομοιωτή να επανατοποθετήσει τους καταχωρητές και την
μνήμη στην αρχική τους κατάσταση, την οποία είχαν αμέσως μετά τη φόρτωση
του κώδικα προς εκτέλεση στην ιδεατή μνήμη του.
11
Εκτέλεση προγράμματος‐Αποσφαλμάτωση #2
Step Back: Αναγκάζει τον εξομοιωτή να κάνει ένα βήμα μιας εντολής προς τα
πίσω στην εκτέλεση του προγράμματος.
Single Step: Αναγκάζει τον εξομοιωτή να κάνει ένα βήμα μιας εντολής προς τα
εμπρός στην εκτέλεση του προγράμματος (εκτέλεση επόμενης εντολής).
Run: Θέτει τον εξομοιωτή σε κατάσταση ευθείας εκτέλεσης του προγράμματος,
σταματώντας μόνο στα σημεία διακοπής, που έχει ορίσει ο χρήστης.
Συρόμενος επιλογές Step Delay: Ορίζει τη χρονική καθυστέρηση εκτέλεσης
ανάμεσα σε διαδοχικές εντολές όταν ο εξομοιωτής λειτουργεί σε κατάσταση
ευθείας εκτέλεσης.
Αριστερό πλαίσιο: Περιέχει όλους τους καταχωρητές γενικού και ειδικού σκοπού
του επεξεργαστή 8086.
Κεντρικό πλαίσιο: Περιέχει τις φυσικές διευθύνσεις και τα περιεχόμενα αυτών σε
δεκαεξαδική μορφή και δεκαδική αριθμητική μορφή, καθώς και τον αντίστοιχο
ASCII του χαρακτήρα του byte.
Δεξιό πλαίσιο: Περιέχει τις συμβολομεταφρασμένες εντολές του πηγαίου κώδικα
ακριβώς με τη μορφή που τις κατανοεί ο επεξεργαστής.
12
Παράθυρα πληροφοριών κατάστασης του εξομοιωτή
Παράθυρα σημαιών κατάστασης του επεξεργαστή Παράθυρο επεξεργασίας θέσεων
και λεκτικής ανάλυσης των σημαιών του χάρτη μνήμης
Παράθυρο επισκόπησης του χάρτη μνήμης
Παράθυρο επεξεργασίας περιεχομένων
και λειτουργίας σωρού 13
Σημεία Ελέγχου και Διακοπής (breakpoints)
Τι ονομάζουμε σημεία διακοπής (breakpoints);
Είναι τα σημεία ορισμένα από τον χρήστη και στα οποία η ευθεία εκτέλεση του
προγράμματος διακόπτεται και επιστρέφει σε αυτόν ο έλεγχος του εξομοιωτή, ώστε να
παρατηρήσει την κατάσταση του ιδεατού συστήματος ή να εκτελέσει βηματικά τις εντολές
που επιθυμεί.
Μενού επιλογών για την εκτέλεση του προγράμματος
14
Απευθείας εκτέλεση προγράμματος
από τον επεξεργαστή
Εκτέλεση προγράμματος κάτω από το
λειτουργικό σύστημα DOS
Εκτέλεση προγράμματος κάτω από το
λειτουργικό σύστημα Windows
Command Prompt
DOSBOX
Εκτέλεση προγράμματος χωρίς λειτουργικό
σύστημα
15
Ι. Έλληνας - Καθηγητής
1. Το δεκαδικό σύστημα
Είναι φανερό ότι οι χιλιάδες, εκατοντάδες, δεκάδες, μονάδες και τα δεκαδικά ψηφία είναι δυνάμεις
του δέκα που εξαρτώνται από τη θέση των ψηφίων. Ο αριθμός των συμβόλων που χρησιμοποιεί
ένα αριθμητικό σύστημα δίνεται από τη βάση του (10 για το δεκαδικό σύστημα).
2. Το δυαδικό σύστημα
Η μετατροπή ενός ακέραιου δεκαδικού αριθμού (π.χ. του 17) σε δυαδικό γίνεται ως εξής:
Αρχιτεκτονική Η/Υ-Ι 1
Ι. Έλληνας - Καθηγητής
δυνάμεις του 2 25 24 23 22 21 20
δεκαδικό ισοδύναμο 32 16 8 4 2 1
Αποτέλεσμα 0 1 0 0 0 1 = 17
Η μετατροπή ενός κλασματικού δεκαδικού αριθμού (π.χ. 0,93) σε δυαδικό γίνεται ως εξής:
Ο αριθμός που προκύπτει είναι ο 0.11101 ο οποίος έχει ισοδύναμο το δεκαδικό αριθμό:
Ορισμοί
Το πιο δεξιό bit ενός δυαδικού αριθμού καλείται «λιγότερο σημαντικό» ή LSB (Least Significant
Bit).
Το πιο αριστερό bit ενός δυαδικού αριθμού καλείται «περισσότερο σημαντικό» ή MSB (Most
Significant Bit).
Αρχιτεκτονική Η/Υ-Ι 2
Ι. Έλληνας - Καθηγητής
Οργάνωση δεδομένων
Αρχιτεκτονική Η/Υ-Ι 3
Ι. Έλληνας - Καθηγητής
Αρχιτεκτονική Η/Υ-Ι 4
Ι. Έλληνας - Καθηγητής
3. Το δεκαεξαδικό σύστημα
Δεκαδικό (DECimal) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Δεκαεξαδικό (HEXadecimal) 0 1 2 3 4 5 6 7 8 9 A B C D E F
0000 0 0
0001 1 1
0010 2 2
0011 3 3
0100 4 4
0101 5 5
0110 6 6
0111 7 7
1000 8 8
1001 9 9
1010 Α 10
1011 Β 11
1100 C 12
1101 D 13
1110 E 14
1111 F 15
Η μετατροπή ενός ακέραιου δεκαδικού αριθμού (π.χ. του 525) σε δεκαεξαδικό γίνεται ως εξής:
Αποτέλεσμα 0 2 0 13 = 2*256+13*1=525
Αρχιτεκτονική Η/Υ-Ι 5
Ι. Έλληνας - Καθηγητής
4. Αριθμητικές πράξεις
Αρχιτεκτονική Η/Υ-Ι 6
Ι. Έλληνας - Καθηγητής
Αρχιτεκτονική Η/Υ-Ι 7
Ι. Έλληνας - Καθηγητής
Αρχιτεκτονική Η/Υ-Ι 8
Ι. Έλληνας - Καθηγητής
Αρχιτεκτονική Η/Υ-Ι 9
Ι. Έλληνας - Καθηγητής
5. Λογικές πράξεις
Αρχιτεκτονική Η/Υ-Ι 10
Ι. Έλληνας - Καθηγητής
Αρχιτεκτονική Η/Υ-Ι 11
Ι. Έλληνας - Καθηγητής
7. Κώδικες
Αρχιτεκτονική Η/Υ-Ι 12
Ι. Έλληνας - Καθηγητής
Αρχιτεκτονική Η/Υ-Ι 13
Ι. Έλληνας - Καθηγητής
Αρχιτεκτονική Η/Υ-Ι 14
Ι. Έλληνας - Καθηγητής
Αρχιτεκτονική Η/Υ-Ι 15
Ι. Έλληνας - Καθηγητής
Αρχιτεκτονική Η/Υ-Ι 16
Ι. Έλληνας - Καθηγητής
ΕΡΩΤΗΣΕΙΣ
14. Ολισθείστε αριθμητικά δεξιά τον ισοδύναμο δυδικό αριθμό του -68 d. Τι παρατηρείτε μετά
την ολίσθηση;
Αρχιτεκτονική Η/Υ-Ι 17
ΛΥΣΕΙΣ ΕΡΓΑΣΙΑΣ-1
1
4. Γράψτε παραστατικά πως μετατρέπεται ο αριθμός 0,54 d σε δυαδικό
αριθμό.
ή a1*162+a2*161+a3*160 = 3*256+8*16+0*1=896
ή
124=0111 1100 ως προς 1 1000 0011 ως προς 2 1000 0011+0000 0001
1000 0100 = -124
2
8. Δείξτε πως γίνεται η πρόσθεση των δυαδικών αριθμών 10000101 (+132 ή -
123) και 01100000 (+96). Πως μεταβάλλονται οι σημαίες CF, OF, SF ;
3
Αν τους θεωρήσουμε μη προσημασμένους, το αποτέλεσμα πρέπει να είναι
302. Το αποτέλεσμα όμως προκύπτει 46. Επειδή υπάρχει κρατούμενο, το
τελικό αποτέλεσμα είναι 256+46=302.
Αν τους θεωρήσουμε προσημασμένους, το αποτέλεσμα πρέπει να είναι
αρνητικό και ίσο με -210. Το αποτέλεσμα όμως προκύπτει 0010 1110, πρέπει
να είναι αρνητικός αριθμός και επομένως βρίσκουμε το συμπλήρωμα ως προς
2: 0010 1110 ως προς 1 1101 0001 ως προς 2 1101 0001 + 1 1101
0010 -82. Επειδή υπάρχει OF=1 προσθέτουμε το -128 -128-82=-210.
12. Ποιο είναι το αποτέλεσμα των λογικών πράξεων AND, OR, XOR μεταξύ των
δεκαεξαδικών αριθμών FA h και 18 h.
13. Ολισθείστε λογικά αριστερά και δεξιά τον ισοδύναμο δυαδικό αριθμό του 68
d. Τι παρατηρείτε μετά τη μία ή την άλλη ολίσθηση?
14. Ολισθείστε αριθμητικά δεξιά τον ισοδύναμο δυδικό αριθμό του -68 d. Τι
παρατηρείτε μετά την ολίσθηση;
4
15. Περιστρέψατε αριστερά ή δεξιά 4 φορές το δεκαεξαδικό αριθμό 1Α h. Τι
παρατηρείτε;
17. Γράψτε τους ASCII των αριθμών 0 έως 9, των κεφαλαίων A έως Ζ, των
μικρών a έως z. Ποια είναι η απόσταση του “9 ASCII” από το “A ASCII “ και
του “A ASCII “ από το “a ASCII”;
0-9 ASCII 30h – 39h
A-Z ASCII 41h – 5Ah
a-z ASCII 61h – 7Ah
18. Με ποιο τρόπο μπορούμε να μετατρέψουμε τον κώδικα ASCII ενός μικρού
γράμματος σε κεφαλαίο;
Αφαιρούμε το 20h.