SlideShare a Scribd company logo
1 of 38
Σημειώσεις για τον 80x86
Τι είναι η διεύθυνση;
 16bits        8bits                          Η μνήμη ενός
0000h           20h                            μικροϋπολογιστικού συστήματος
                                               χωρίζεται σε μικρά τμήματα του
0001h           32h
                                               ενός byte
0002h           30h

                                              Κάθε byte έχει μια ξεχωριστή
                            16
                           2 =65,536 bytes
                                               ταυτότητα που ονομάζεται
                                               διεύθυνση
FFFEh           30h

FFFFh           36h
                                              Οι διευθύνσεις είναι αριθμητικές
                                               τιμές μήκους σε bit όσο το
      Χάρτης μνήμης ενός τυπικού 8bit          address bus (δίαυλος
     μικροϋπολογιστικού συστήματος με
            16bit address bus
                                               διευθύνσεων)
Πρόσβαση στη μνήμη
                           Για να έχουμε πρόσβαση σε ένα ή
  0018h        32h
                            περισσότερα bytes, πρέπει να
  0019h        30h          γνωρίζουμε τις διευθύνσεις τους
                            στο χάρτη μνήμης
  001Ah       31 h

  001Bh       30 h         Στον 80x86 τηρείται η Little
                            Endian μορφή αποθήκευσης
                            δεδομένων. Τα χαμηλά bytes
    Αποθήκευση κειμένου
     «2010 » στη μνήμη
                            αποθηκεύονται σε χαμηλές
                            (αριθμητικά) διευθύνσεις.

  001Ch       10 h

  001Dh        20h


    Αποθήκευση αριθμού
     2010 h στη μνήμη
Διαχείριση μνήμης στον 80x86
 Ο 80x86 είναι επεξεργαστής των 16bits με address bus
  μήκους 20bits
   Διευθυνσιοδοτεί 1Mbyte μνήμης (220bytes)


 Πρόβλημα:
   Ο καταχωρητής διεύθυνσης επόμενης εντολής (IP) έχει μήκος 16bits
    και δεν μπορεί να δει ολόκληρη τη μνήμη που προσφέρει το address
    bus
 Λύση:
   Η μνήμη διασπάται σε πολλαπλά λογικά τμήματα (segments) των
    64kBytes
   Κάθε τμήμα μπορεί να ξεκινά (βάση τμήματος) ανά 16 θέσεις στη
    φυσική διεύθυνση της μνήμης (20bit) και να επιτρέπει στον
    επεξεργαστή να δει τις επόμενες 64k θέσεις που ακολουθούν
Διαχείριση μνήμης στον 80x86
 Ο προγραμματιστής χρειάζεται να ξέρει μόνο την 16bit
  λογική διεύθυνση που δείχνει μέσα στο τμήμα, χωρίς να
  χρειάζεται συνήθως να γνωρίζει την 20bit φυσική διεύθυνση

 Το λειτουργικό σύστημα βρίσκει ελεύθερο χώρο στη μνήμη
  και εκεί τοποθετεί τα τμήματα ενός προγράμματος όταν το
  φορτώνει προς εκτέλεση, κατόπιν ορίζει τους καταχωρητές
  τμημάτων, IP και SP
Υπολογισμός φυσικής διεύθυνσης
                    16bit               16bit

                                        CS
                  General
                  Purpose               DS
  IP=5678h
     5678h        Register                           CS=1234h
                                                        1234h
                                        SS
                    File
                                        ES



    20bit   0                                       0   20bit




                05678h         +            12340h
                            179B8h

                                            20bit


                         Φυσική Διεύθυνση
Τρόποι Διευθυνσιοδότησης Συνοπτικά
 Άμμεσος (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]
Άμεσος
Immediate
 Τα δεδομένα βρίσκονται μέσα στην εντολή

 Ο επεξεργαστής διαβάζει τον κωδικό εντολής και τοποθετεί τα δεδομένα
  που ακολουθούν στον κατάλληλο καταχωρητή

 Τα δεδομένα μπορεί να έχουν μήκος 8 ή 16bit το οποίο καθορίζεται στον
  κωδικό εντολής και από το μήκος του καταχωρητή προορισμού

                           Reg[dst]  Imm
Code Segment                       Data Segment

AH     AL   0100h       B8h                  1000h

BH     BL   0101h       08h                  1001h

CH     CL   0102h       23h                  1002h

DH     DL   0103h                            1003h

            0104h                            1004h
SP
            0105h                            1005h
BP
            0106h                            1006h
SI
            0107h                            1007h
DI

                    Φυσική Διεύθυνση                  Φυσική Διεύθυνση
IP=0100h                Κώδικα                          Δεδομένων

                       12440h
                       12440 h
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
 Τα δυο ορίσματα της εντολής είναι καταχωρητές του
  επεξεργαστή

 Ο καταχωρητής πηγής και ο καταχωρητής προορισμού
  έχουν πάντα το ίδιο μήκος σε bits

 Η εντολή αποτελείται μόνο από τον κωδικό εντολής και δεν
  έχει άλλα bytes που να την αποτελούν

 Το περιεχόμενο του καταχωρητή πηγής αντιγράφεται στον
  καταχωρητή προορισμού (μεταφορά δεδομένων)

                   Reg[dst]  Reg[src]
Code Segment                       Data Segment

AH 4Dh AL 23h   0100h       8Eh                  1000h

BH     BL       0101h       D8h                  1001h

CH     CL       0102h                            1002h

DH     DL       0103h                            1003h

                0104h                            1004h
SP
                0105h                            1005h
BP
                0106h                            1006h
SI
                0107h                            1007h
DI

                        Φυσική Διεύθυνση                  Φυσική Διεύθυνση
IP=0101h
IP=0100h                    Κώδικα                          Δεδομένων

                          12441h
                          12440h
CS=1234h
                                           Μεταφέρθηκαν
DS    4D23h
SS
                                           Word 4D23h
                                            Byte 4Dh

ES
                 ΜΟV DS, AH
                     DL, 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 λογική διεύθυνση

 Η λογική διεύθυνση συνδυάζεται με τη βάση του τμήματος που
  χρησιμοποιείται για να σχηματίσει τη φυσική διεύθυνση

 Εξ ορισμού, ο καταχωρητής τμήματος είναι ο DS

 Τα 8 ή 16bit δεδομένα που ορίζει ο κωδικός εντολής μεταφέρονται από ή
  προς τον καταχωρητή που ορίζει η εντολή

                 Reg[r] = [ SegReg*16 + Imm + (0/1) ]
Code Segment                       Data Segment

AH     AL   0100h       A1h                  1000h

BH     BL   0101h       01h                  1001h         08h
CH     CL   0102h       10h                  1002h         23h
DH     DL   0103h                            1003h

            0104h                            1004h
SP
            0105h                            1005h
BP
            0106h                            1006h
SI
            0107h                            1007h
DI

                    Φυσική Διεύθυνση                  Φυσική Διεύθυνση
IP=0100h                Κώδικα                          Δεδομένων

                       12440 h               +           57781h
CS=1234h
                                       Μεταφέρθηκαν
   5678h
DS=5678h

SS
                                       Word 2308h

ES
            ΜΟV AX, [1001h]
Απευθείας
Παραδείγματα
 MOV AX, [1000h]   ; AL  DS:[1000h], AH  DS:[1001h]

 MOV AX, [Table]   ; AL  DS:[Table], AH  DS:[Table+1]

 MOV [1000h], AL   ; DS:[1000h]  AL

 MOV [1000h], AX   ; DS:[1000h]  AL, DS:[1001h]  AH
Έμμεσος με καταχωρητή
Register Indirect
 Η 16bit λογική διεύθυνση μετατόπισης βρίσκεται αποθηκευμένη σε
  κάποιον από τους καταχωρητές SI, DI, BX, BP, ο οποίος εμπεριέχεται
  στον κωδικό εντολής

 Η τιμή μετατόπισης προστίθεται κάθε φορά στον εξ ορισμού
  καταχωρητή τμήματος για τον χρησιμοποιούμενο καταχωρητή
  μετατόπισης ή με καταχωρητή τμήματος προκαθορισμένο από το
  χρήστη
    DS: BX, SI, DI
    SS: BP


           Reg[dst]  [ SegReg * 16 + Reg[offset] + (0/1) ]
           [ SegReg * 16 + Reg[offset] + (0/1) ]  Reg[src]
Code Segment                       Data Segment

AH 4Dh AL 23h      0100h       89h                  1000h

BH 10h BL 04h      0101h       07h                  1001h

CH     CL          0102h                            1002h

DH     DL          0103h                            1003h

                   0104h                            1004h
SP
                   0105h                            1005h
BP
                   0106h                            1006h
SI
                   0107h                            1007h
DI

                           Φυσική Διεύθυνση                  Φυσική Διεύθυνση
IP=0100h                       Κώδικα                          Δεδομένων

                              12440 h                           57784h
CS=1234h
                                              Μεταφέρθηκαν
DS=5678h

SS
                                              Word 4D23h

ES
                ΜΟV DL, AH
                    ΜΟV [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
 Επέκταση της έμμεσης με καταχωρητή διευθυνσιοδότησης

 H 16bit λογική διεύθυνση υπολογίζεται από το άθροισμα του
  περιεχομένου του καταχωρητή βάσης BX ή BP, και μια ακέραια σταθερή
  προσημασμένη τιμή μετατόπισης

 Η μετατόπιση μπορεί να είναι των 8bits (-128 έως + 127) ή των 16bits
  (-32768 έως + 32767)

 Ο εξ ορισμού καταχωρητής τμήματος είναι ο DS για τον BX και ο SS για
  τον BP

        Reg[dst]  [ SegReg * 16 + (BX ή BP) + offset + (0/1) ]
        [ SegReg * 16 + (BX ή BP) + offset + (0/1) ]  Reg[dst]
Με καταχωρητή βάσης & μετατόπιση
Παραδείγματα
 MOV [BX + 6], AL        ; DS:[BX + 0006h]  AL
 MOV [BX + 0Ah], AX      ; DS:[BX + 000Ah]  AX
 MOV SS:[BX + FFh], CX   ; SS:[BX + 00FFh]  CX
 MOV AH, [BP + 100]      ; AH  SS:[BP + 0064h]
 MOV AX, [BP-3]          ; AX  SS:[BP + FFFDh]
 MOV AX, [BX-100]        ; AX  DS:[BX + FF9Ch]
Με καταχωρητή δείκτη
Indexed Relative
 Παρόμοια με τη διευθυνσιοδότηση με καταχωρητή βάσης και
  μετατόπιση

 H 16bit λογική διεύθυνση υπολογίζεται από το άθροισμα του
  περιεχομένου ενός εκ των καταχωρητών δείκτη SI ή DI και πιθανώς μια
  ακέραια σταθερή προσημασμένη τιμή μετατόπισης (8 ή 16bits)

 Εξ ορισμού χρησιμοποιείται ο καταχωρητής τμήματος DS, ο οποίος
  μπορεί να αντικατασταθεί με κάποιον άλλο από το χρήστη

        Reg[dst]  [ SegReg * 16 + (SI ή DI) + offset + (0/1) ]
        [ SegReg * 16 + (SI ή DI) + offset + (0/1) ]  Reg[dst]
Με καταχωρητή δείκτη
Παραδείγματα
 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
 Επέκταση της έμμεσης με καταχωρητή διευθυνσιοδότησης

 H 16bit λογική διεύθυνση υπολογίζεται από το άθροισμα του
  περιεχομένου ενός εκ των καταχωρητών βάσης BX ή BP, ενός εκ των
  καταχωρητών δείκτη SI ή DI και την πιθανή μετατόπιση που δίνεται με
  την εντολή

 Τα περιεχόμενα των χρησιμοποιούμενων καταχωρητών θεωρούνται
  ακέραιοι προσημασμένοι αριθμοί των 16bits

 Εξ ορισμού χρησιμοποιείται ο καταχωρητής τμήματος DS, ο οποίος
  μπορεί να αντικατασταθεί με κάποιον άλλο από το χρήστη

  Reg[dst]  [ SegReg * 16 + (BX ή BP) + (SI ή DI) + offset + (0/1) ]
  [ SegReg * 16 + (BX ή BP) + (SI ή DI) + offset + (0/1) ]  Reg[dst]
Με καταχωρητή βάσης & δείκτη
Παραδείγματα
 MOV DX, [BX + DI]      ; DH  DS:[BX + DI + 1], DL  DS:[BX + DI]
 MOV DX, [BX + SI]      ; DH  DS:[BX + SI + 1], DL  DS:[BX + SI]
 MOV DX, [BP + DI]      ; DH  DS:[BP + DI + 1], DL  DS:[BP + DI]
 MOV DX, SS:[BP + DI]   ; DH  SS:[BP + DI + 1], DL  SS:[BP + DI]
 MOV DX, [BP + SI]      ; DH  DS:[BP + SI + 1], DL  DS:[BP + SI]
 MOV [BP + DI], AX      ; DS:[BP + DI + 1]  DH, DS:[BP + DI]  DL
 MOV SS:[BP + DI], AX   ; SS:[BP + DI + 1]  DH, SS:[BP + DI]  DL
Τύποι εντολών
 Μεταφοράς δεδομένων
 Αριθμητικών πράξεων
 Χειρισμού bit
 Διακλάδωσης
 Διακλάδωσης με προϋποθέσεις
 Συμβολοσειρών
 Ελέγχου επεξεργαστή
Εντολές Μεταφοράς Δεδομένων
 mov dst, src
    dst  src
 push src
   (SP-1)  src(MSB), (SP-2)  src(LSB)
 pop dst
   dst(LSB)  (SP), dst(MSB)  (SP+1)
Εντολές Αριθμητικών Πράξεων
 add dst, src
    dst  dst + src
 adc dst, src
    dst  dst + src + CF
 inc dst
    dst  dst + 1
 cmp dst, src
    Ενημέρωση σημαιών από αποτέλεσμα dst - src
Εντολές Λογικών Πράξεων
 and dst, src
    dst  dst • src
 or dst, src
    dst  dst + src
 test dst, src
    Ενημερώνει σημαίες από dst • src χωρίς να αλλάξει το dst
 shr dst, cnt
    Λογική ολίσθηση δεξιά cnt φορές
 ror dst, cnt
    Περιστροφή δεξιά cnt φορές
Εντολές Διακλάδωσης
 jmp addr
    Ενδοτμηματική διακλάδωση
 loop addr
   CX  CX-1 και πηγαίνει στο addr αν CX ≠ 0
 call addr
    ενδοτμηματική κλήση υπορουτίνας
 int n
   κλήση εξυπηρέτησης διακοπής
Εντολές Διακλάδωσης με προϋποθέσεις
 jg/jnle
    Άλμα για μεγαλύτερο
 jz/jnz
   Άλμα για ισότητα/ανισότητα
 je/jne
    Άλμα για ισότητα/ανισότητα
Εντολές Συμβολοσειρών
 scasb/scasw
    Σύγκριση byte/word που βρίσκονται σε συγκεκριμένες
     θέσεις
 stosb/stosw
   Αποθήκευση byte/word από καταχωρητή σε συγκεκριμένη
    θέση μνήμης
 repne/repz
    Επανάληψη όσο δεν προκύπτει ισότητα μεταξύ byte/word.
Εντολές Ελέγχου Επεξεργαστή
 stc
    CF=1
 clc
   CF=0
 std
    DF=1
 cld
   DF=0
Οι Διακοπές στον 8086
 Είναι τριών τύπων
    προκαλούμενες από το υλικό
                                  (hardware interrupts)

   προκαλούμενες από τον επεξεργαστή
                                  (processor interrupts)

   προκαλούμενες από την εντολή INT n
                                  (software interrupts)
Ergasthrio1

More Related Content

More from vagvas

Arithimitika sistima
Arithimitika sistimaArithimitika sistima
Arithimitika sistimavagvas
 
Arithimitika sistima
Arithimitika sistimaArithimitika sistima
Arithimitika sistimavagvas
 
Arithimitika sistima
Arithimitika sistimaArithimitika sistima
Arithimitika sistimavagvas
 
Registers
RegistersRegisters
Registersvagvas
 
Signal
SignalSignal
Signalvagvas
 
νέο παρουσίαση Open document
νέο παρουσίαση Open documentνέο παρουσίαση Open document
νέο παρουσίαση Open documentvagvas
 
Machine
MachineMachine
Machinevagvas
 

More from vagvas (7)

Arithimitika sistima
Arithimitika sistimaArithimitika sistima
Arithimitika sistima
 
Arithimitika sistima
Arithimitika sistimaArithimitika sistima
Arithimitika sistima
 
Arithimitika sistima
Arithimitika sistimaArithimitika sistima
Arithimitika sistima
 
Registers
RegistersRegisters
Registers
 
Signal
SignalSignal
Signal
 
νέο παρουσίαση Open document
νέο παρουσίαση Open documentνέο παρουσίαση Open document
νέο παρουσίαση Open document
 
Machine
MachineMachine
Machine
 

Ergasthrio1

  • 2.
  • 3.
  • 4. Τι είναι η διεύθυνση; 16bits 8bits  Η μνήμη ενός 0000h 20h μικροϋπολογιστικού συστήματος χωρίζεται σε μικρά τμήματα του 0001h 32h ενός byte 0002h 30h  Κάθε byte έχει μια ξεχωριστή 16 2 =65,536 bytes ταυτότητα που ονομάζεται διεύθυνση FFFEh 30h FFFFh 36h  Οι διευθύνσεις είναι αριθμητικές τιμές μήκους σε bit όσο το Χάρτης μνήμης ενός τυπικού 8bit address bus (δίαυλος μικροϋπολογιστικού συστήματος με 16bit address bus διευθύνσεων)
  • 5. Πρόσβαση στη μνήμη  Για να έχουμε πρόσβαση σε ένα ή 0018h 32h περισσότερα bytes, πρέπει να 0019h 30h γνωρίζουμε τις διευθύνσεις τους στο χάρτη μνήμης 001Ah 31 h 001Bh 30 h  Στον 80x86 τηρείται η Little Endian μορφή αποθήκευσης δεδομένων. Τα χαμηλά bytes Αποθήκευση κειμένου «2010 » στη μνήμη αποθηκεύονται σε χαμηλές (αριθμητικά) διευθύνσεις. 001Ch 10 h 001Dh 20h Αποθήκευση αριθμού 2010 h στη μνήμη
  • 6. Διαχείριση μνήμης στον 80x86  Ο 80x86 είναι επεξεργαστής των 16bits με address bus μήκους 20bits  Διευθυνσιοδοτεί 1Mbyte μνήμης (220bytes)  Πρόβλημα:  Ο καταχωρητής διεύθυνσης επόμενης εντολής (IP) έχει μήκος 16bits και δεν μπορεί να δει ολόκληρη τη μνήμη που προσφέρει το address bus  Λύση:  Η μνήμη διασπάται σε πολλαπλά λογικά τμήματα (segments) των 64kBytes  Κάθε τμήμα μπορεί να ξεκινά (βάση τμήματος) ανά 16 θέσεις στη φυσική διεύθυνση της μνήμης (20bit) και να επιτρέπει στον επεξεργαστή να δει τις επόμενες 64k θέσεις που ακολουθούν
  • 7.
  • 8. Διαχείριση μνήμης στον 80x86  Ο προγραμματιστής χρειάζεται να ξέρει μόνο την 16bit λογική διεύθυνση που δείχνει μέσα στο τμήμα, χωρίς να χρειάζεται συνήθως να γνωρίζει την 20bit φυσική διεύθυνση  Το λειτουργικό σύστημα βρίσκει ελεύθερο χώρο στη μνήμη και εκεί τοποθετεί τα τμήματα ενός προγράμματος όταν το φορτώνει προς εκτέλεση, κατόπιν ορίζει τους καταχωρητές τμημάτων, IP και SP
  • 9. Υπολογισμός φυσικής διεύθυνσης 16bit 16bit CS General Purpose DS IP=5678h 5678h Register CS=1234h 1234h SS File ES 20bit 0 0 20bit 05678h + 12340h 179B8h 20bit Φυσική Διεύθυνση
  • 10. Τρόποι Διευθυνσιοδότησης Συνοπτικά  Άμμεσος (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]
  • 11. Άμεσος Immediate  Τα δεδομένα βρίσκονται μέσα στην εντολή  Ο επεξεργαστής διαβάζει τον κωδικό εντολής και τοποθετεί τα δεδομένα που ακολουθούν στον κατάλληλο καταχωρητή  Τα δεδομένα μπορεί να έχουν μήκος 8 ή 16bit το οποίο καθορίζεται στον κωδικό εντολής και από το μήκος του καταχωρητή προορισμού Reg[dst]  Imm
  • 12. Code Segment Data Segment AH AL 0100h B8h 1000h BH BL 0101h 08h 1001h CH CL 0102h 23h 1002h DH DL 0103h 1003h 0104h 1004h SP 0105h 1005h BP 0106h 1006h SI 0107h 1007h DI Φυσική Διεύθυνση Φυσική Διεύθυνση IP=0100h Κώδικα Δεδομένων 12440h 12440 h CS=1234h Μεταφέρθηκαν DS SS Word 2308h ES ΜΟV AX, 2308h
  • 13. Άμεσος Παραδείγματα  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)
  • 14. Με καταχωρητή Register Direct  Τα δυο ορίσματα της εντολής είναι καταχωρητές του επεξεργαστή  Ο καταχωρητής πηγής και ο καταχωρητής προορισμού έχουν πάντα το ίδιο μήκος σε bits  Η εντολή αποτελείται μόνο από τον κωδικό εντολής και δεν έχει άλλα bytes που να την αποτελούν  Το περιεχόμενο του καταχωρητή πηγής αντιγράφεται στον καταχωρητή προορισμού (μεταφορά δεδομένων) Reg[dst]  Reg[src]
  • 15. Code Segment Data Segment AH 4Dh AL 23h 0100h 8Eh 1000h BH BL 0101h D8h 1001h CH CL 0102h 1002h DH DL 0103h 1003h 0104h 1004h SP 0105h 1005h BP 0106h 1006h SI 0107h 1007h DI Φυσική Διεύθυνση Φυσική Διεύθυνση IP=0101h IP=0100h Κώδικα Δεδομένων 12441h 12440h CS=1234h Μεταφέρθηκαν DS 4D23h SS Word 4D23h Byte 4Dh ES ΜΟV DS, AH DL, AX
  • 16. Με καταχωρητή Παραδείγματα  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
  • 17. Απευθείας Direct  Η εντολή περιέχει μια 16bit λογική διεύθυνση  Η λογική διεύθυνση συνδυάζεται με τη βάση του τμήματος που χρησιμοποιείται για να σχηματίσει τη φυσική διεύθυνση  Εξ ορισμού, ο καταχωρητής τμήματος είναι ο DS  Τα 8 ή 16bit δεδομένα που ορίζει ο κωδικός εντολής μεταφέρονται από ή προς τον καταχωρητή που ορίζει η εντολή Reg[r] = [ SegReg*16 + Imm + (0/1) ]
  • 18. Code Segment Data Segment AH AL 0100h A1h 1000h BH BL 0101h 01h 1001h 08h CH CL 0102h 10h 1002h 23h DH DL 0103h 1003h 0104h 1004h SP 0105h 1005h BP 0106h 1006h SI 0107h 1007h DI Φυσική Διεύθυνση Φυσική Διεύθυνση IP=0100h Κώδικα Δεδομένων 12440 h + 57781h CS=1234h Μεταφέρθηκαν 5678h DS=5678h SS Word 2308h ES ΜΟV AX, [1001h]
  • 19. Απευθείας Παραδείγματα  MOV AX, [1000h] ; AL  DS:[1000h], AH  DS:[1001h]  MOV AX, [Table] ; AL  DS:[Table], AH  DS:[Table+1]  MOV [1000h], AL ; DS:[1000h]  AL  MOV [1000h], AX ; DS:[1000h]  AL, DS:[1001h]  AH
  • 20. Έμμεσος με καταχωρητή Register Indirect  Η 16bit λογική διεύθυνση μετατόπισης βρίσκεται αποθηκευμένη σε κάποιον από τους καταχωρητές SI, DI, BX, BP, ο οποίος εμπεριέχεται στον κωδικό εντολής  Η τιμή μετατόπισης προστίθεται κάθε φορά στον εξ ορισμού καταχωρητή τμήματος για τον χρησιμοποιούμενο καταχωρητή μετατόπισης ή με καταχωρητή τμήματος προκαθορισμένο από το χρήστη  DS: BX, SI, DI  SS: BP Reg[dst]  [ SegReg * 16 + Reg[offset] + (0/1) ] [ SegReg * 16 + Reg[offset] + (0/1) ]  Reg[src]
  • 21. Code Segment Data Segment AH 4Dh AL 23h 0100h 89h 1000h BH 10h BL 04h 0101h 07h 1001h CH CL 0102h 1002h DH DL 0103h 1003h 0104h 1004h SP 0105h 1005h BP 0106h 1006h SI 0107h 1007h DI Φυσική Διεύθυνση Φυσική Διεύθυνση IP=0100h Κώδικα Δεδομένων 12440 h 57784h CS=1234h Μεταφέρθηκαν DS=5678h SS Word 4D23h ES ΜΟV DL, AH ΜΟV [BX], AX
  • 22. Έμμεσος με καταχωρητή Παραδείγματα  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]
  • 23. Με καταχωρητή βάσης & μετατόπιση Base Relative  Επέκταση της έμμεσης με καταχωρητή διευθυνσιοδότησης  H 16bit λογική διεύθυνση υπολογίζεται από το άθροισμα του περιεχομένου του καταχωρητή βάσης BX ή BP, και μια ακέραια σταθερή προσημασμένη τιμή μετατόπισης  Η μετατόπιση μπορεί να είναι των 8bits (-128 έως + 127) ή των 16bits (-32768 έως + 32767)  Ο εξ ορισμού καταχωρητής τμήματος είναι ο DS για τον BX και ο SS για τον BP Reg[dst]  [ SegReg * 16 + (BX ή BP) + offset + (0/1) ] [ SegReg * 16 + (BX ή BP) + offset + (0/1) ]  Reg[dst]
  • 24. Με καταχωρητή βάσης & μετατόπιση Παραδείγματα  MOV [BX + 6], AL ; DS:[BX + 0006h]  AL  MOV [BX + 0Ah], AX ; DS:[BX + 000Ah]  AX  MOV SS:[BX + FFh], CX ; SS:[BX + 00FFh]  CX  MOV AH, [BP + 100] ; AH  SS:[BP + 0064h]  MOV AX, [BP-3] ; AX  SS:[BP + FFFDh]  MOV AX, [BX-100] ; AX  DS:[BX + FF9Ch]
  • 25. Με καταχωρητή δείκτη Indexed Relative  Παρόμοια με τη διευθυνσιοδότηση με καταχωρητή βάσης και μετατόπιση  H 16bit λογική διεύθυνση υπολογίζεται από το άθροισμα του περιεχομένου ενός εκ των καταχωρητών δείκτη SI ή DI και πιθανώς μια ακέραια σταθερή προσημασμένη τιμή μετατόπισης (8 ή 16bits)  Εξ ορισμού χρησιμοποιείται ο καταχωρητής τμήματος DS, ο οποίος μπορεί να αντικατασταθεί με κάποιον άλλο από το χρήστη Reg[dst]  [ SegReg * 16 + (SI ή DI) + offset + (0/1) ] [ SegReg * 16 + (SI ή DI) + offset + (0/1) ]  Reg[dst]
  • 26. Με καταχωρητή δείκτη Παραδείγματα  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]
  • 27. Με καταχωρητή βάσης & δείκτη Based Indexed  Επέκταση της έμμεσης με καταχωρητή διευθυνσιοδότησης  H 16bit λογική διεύθυνση υπολογίζεται από το άθροισμα του περιεχομένου ενός εκ των καταχωρητών βάσης BX ή BP, ενός εκ των καταχωρητών δείκτη SI ή DI και την πιθανή μετατόπιση που δίνεται με την εντολή  Τα περιεχόμενα των χρησιμοποιούμενων καταχωρητών θεωρούνται ακέραιοι προσημασμένοι αριθμοί των 16bits  Εξ ορισμού χρησιμοποιείται ο καταχωρητής τμήματος DS, ο οποίος μπορεί να αντικατασταθεί με κάποιον άλλο από το χρήστη Reg[dst]  [ SegReg * 16 + (BX ή BP) + (SI ή DI) + offset + (0/1) ] [ SegReg * 16 + (BX ή BP) + (SI ή DI) + offset + (0/1) ]  Reg[dst]
  • 28. Με καταχωρητή βάσης & δείκτη Παραδείγματα  MOV DX, [BX + DI] ; DH  DS:[BX + DI + 1], DL  DS:[BX + DI]  MOV DX, [BX + SI] ; DH  DS:[BX + SI + 1], DL  DS:[BX + SI]  MOV DX, [BP + DI] ; DH  DS:[BP + DI + 1], DL  DS:[BP + DI]  MOV DX, SS:[BP + DI] ; DH  SS:[BP + DI + 1], DL  SS:[BP + DI]  MOV DX, [BP + SI] ; DH  DS:[BP + SI + 1], DL  DS:[BP + SI]  MOV [BP + DI], AX ; DS:[BP + DI + 1]  DH, DS:[BP + DI]  DL  MOV SS:[BP + DI], AX ; SS:[BP + DI + 1]  DH, SS:[BP + DI]  DL
  • 29. Τύποι εντολών  Μεταφοράς δεδομένων  Αριθμητικών πράξεων  Χειρισμού bit  Διακλάδωσης  Διακλάδωσης με προϋποθέσεις  Συμβολοσειρών  Ελέγχου επεξεργαστή
  • 30. Εντολές Μεταφοράς Δεδομένων  mov dst, src  dst  src  push src  (SP-1)  src(MSB), (SP-2)  src(LSB)  pop dst  dst(LSB)  (SP), dst(MSB)  (SP+1)
  • 31. Εντολές Αριθμητικών Πράξεων  add dst, src  dst  dst + src  adc dst, src  dst  dst + src + CF  inc dst  dst  dst + 1  cmp dst, src  Ενημέρωση σημαιών από αποτέλεσμα dst - src
  • 32. Εντολές Λογικών Πράξεων  and dst, src  dst  dst • src  or dst, src  dst  dst + src  test dst, src  Ενημερώνει σημαίες από dst • src χωρίς να αλλάξει το dst  shr dst, cnt  Λογική ολίσθηση δεξιά cnt φορές  ror dst, cnt  Περιστροφή δεξιά cnt φορές
  • 33. Εντολές Διακλάδωσης  jmp addr  Ενδοτμηματική διακλάδωση  loop addr  CX  CX-1 και πηγαίνει στο addr αν CX ≠ 0  call addr  ενδοτμηματική κλήση υπορουτίνας  int n  κλήση εξυπηρέτησης διακοπής
  • 34. Εντολές Διακλάδωσης με προϋποθέσεις  jg/jnle  Άλμα για μεγαλύτερο  jz/jnz  Άλμα για ισότητα/ανισότητα  je/jne  Άλμα για ισότητα/ανισότητα
  • 35. Εντολές Συμβολοσειρών  scasb/scasw  Σύγκριση byte/word που βρίσκονται σε συγκεκριμένες θέσεις  stosb/stosw  Αποθήκευση byte/word από καταχωρητή σε συγκεκριμένη θέση μνήμης  repne/repz  Επανάληψη όσο δεν προκύπτει ισότητα μεταξύ byte/word.
  • 36. Εντολές Ελέγχου Επεξεργαστή  stc  CF=1  clc  CF=0  std  DF=1  cld  DF=0
  • 37. Οι Διακοπές στον 8086  Είναι τριών τύπων  προκαλούμενες από το υλικό (hardware interrupts)  προκαλούμενες από τον επεξεργαστή (processor interrupts)  προκαλούμενες από την εντολή INT n (software interrupts)