thanh ghi trong 8086

Upload: quangdt5

Post on 30-May-2018

227 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/14/2019 thanh ghi trong 8086

    1/13

    B thanh ghi trong 8086Cc thanh ghi trong b vi x l 8086 u l cc thanh ghi 16 bit v c chia thnh c

    nhm nh sau:

    - Cc thanh ghi cng dng chungAX(accumulator),BX(base),CX(counter),DX(data): c th c truy xut c

    lp nh 2 thanh ghi 8 bit : AH v AL, BH v BL, CH v CL, DH v DL.15 8 07

    AH AL

    AX

    15 8 07

    BH BL

    BX

    15 8 07

    CH CL

    CX

    15 8 07

    DH DL

    DX

    - Cc thanh ghi con tr v ch mc (xem chi tit cc phn sau)SP(Stack Pointer),BP(Base Pointer): con tr dng khi lm vic vi stack SI (Source Index),DI(Destination Index): ch s mng khi x l mng (chui)

    - Cc thanh ghi phn onCS (Code Segment),DS (Data Segment),ES (Extra data Segment),SS (Stack

    Segment): tng ng lu a ch phn on m lnh, phn on d liu, phn on d b sung, phn on ngn xp. a ch phn on ny s c kt hp vi a ch offsetruy xut nh. (xem chi tit cc phn sau)- Cc thanh ghi con tr lnh v trng thi

    IP (Intruction Pointer): thanh ghi cha a ch offset ca lnh k tip cn thhin. Thanh ghi ny khng th c truy xut trc tip.FLAGS: thanh ghi c trng thi, dng cha cc bit m t trng thi ca ln

    va c thc hin, hoc cha cc bit iu khin cn thit lp trc khi gi lnh. Baocc bit c sau y: (xem chi tit cc phn sau)

    O D I T S Z A P C

    15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

    CF (Carry Flag): bt khi php tnh va thc hin c s dng bit nh PF (Parrity Flag): bt khi kt qu ca php tnh va thc hin c chn bit 1AF (Auxilary Flag): bt khi php tnh va thc hin c s dng bit nh phZF (Zero Flag): bt khi kt qu ca php tnh va thc hin l 0SF (Sign Flag): bt khi kt qu ca php tnh va thc hin c bit du btTF (Trace Flag): bt chuyn sang ch chy tng bcIF (Interrupt Flag): bt cho php cc ngt xy raDF (Direction Flag): bt chn ch gim ch s t ng khi lm vic vi mOF (Overflow Flag): bt khi php tnh va thc hin gy ra trn s

    1

  • 8/14/2019 thanh ghi trong 8086

    2/13

    T chc b nh trong 8086a ch vt l.

    Bus a ch c rng 20 bit, nu nh a ch tun t tng dn cho cc nh:s lng ti a cc nh c th c nh a ch l 2^20 nh.

    Mi nh c kch thc 1 bytekch thc b nh ti a c th truy cp l 2^20 byte = 1 MB.

    Khi , a ch ca mt nh l mt con s 20 bit (hoc 5 ch s hex), gi l a ch vt

    a ch logicCc thanh ghi trong 8086 u l 16 bit. Nu dng cc thanh ghi ny lu tr a ch 20b

    th khng tin li. Ngi ta tm cch gim s bit dng nh a ch xung cn 16bit. tng c s dng l: thng thng, cc d liu m mt chng trnh cn truy cp

    gn nhau v to thnh mt khi khng ln lm; nh vy, nu ta nh a ch tng i (goffset) trong mt khi th s lng bit dng nh a ch s gim xung.

    B nh c chia thnhcc khi 64KB, gi l segment, cc khi ny khng xp tun tcnh nhau m xpgi u, vi khong cch 16byte. Ngha l, c 16 byte th li bt u mtsegment mi. Nh vy, s lng segment trong 1MB b nh l 1MB / 16byte = 65536 = 2^Do , nha ch segmentta cng cn 16 bit. Trong phm vi mt segment 64KB (=65536 byte), ch cn dng 16 bit lma ch offset xc nh mt nh. (XemHnh 1. T chc bnh kiu segment - offset)

    Tm li, trong cch nh a ch logic, mi nh ca ch l mt cp (segment:offset),tng cng 32bit. Tuy nhin, nh ni trn, cc d liu c lin quan trong b nh thng gn nhau trong mt khi segment nn ta c thkhng cn xc nh tng minh a ch segment m ch cn ngm hiu. Khi bt u lm vic vi mt segment no th ta sdng mt thanh ghi

    ghi li a ch segment . Thanh ghi ny s cdng chung cho tt c cc php truy xut bnh tip theo. V nh th, trong cc php truy xut b nh tip theo, ch cn dng thm 16a ch offset l xc nh v tr mt nh.

    Nu a ch gm c hai phn segment:offset, ngi ta gi la ch xa. Nu a ch ch coffset cn segment ngm nh th ngi ta gi la ch gn, hm l n xc nh mt nh ch trong phm vi ca segment ngm nh m thi.

    Chuyn i gia hai kiu a ch Vic i t a ch logic sang a ch vt l rt n gin.

    Phy_address = segment * 16 + offsetVd: a ch logic 1234h:0005h s ng via ch vt l 1234h * 16 + 0005h = 12340h + 0005h = 12345h

    Vic i t a ch vt l sang a ch logic cng khng c g phc tp. Tuy nhin, do csegment gi u nhau nn mi nh c th thuc mt vi segment khc nhau. V vy, mtch vt l c th ng vi nhiu a ch logic khc nhau.

    Vd: a ch vt l 12345h c th ng vicc a ch logic sau:

    1234h:0005h1230h:0045h1200h:0345h1000h:2345h

    1232h:0025h

    Thng thng khi ni a ch, ngm hiu l a ch logic, m thng l a ch gn.

    2

  • 8/14/2019 thanh ghi trong 8086

    3/13

    RAM

    ..

    Physicaladdress

    00000h

    00001h

    FFFFFh

    0000Fh00010h

    00011h

    0001Fh

    00020h

    00002h

    ..0FFFFh

    10000h

    ..1000Fh

    10010h

    ..1001Fh

    10020h

    ..

    ..

    S e g m e n

    t 0 0 0 0

    S e g m e n

    t 0 0 0 1

    16 bytes

    ..

    S e g m e n

    t 0 0 0 2

    16 bytes

    0000h:0020h

    0001h:0010h

    0002h:0000h

    Segment : Offset

    V mi nh c th thucnhiu segment khc nhau,mt a ch vt l00020h c

    th ng vi nhiu a ch logic khc nhau, ty vo vic

    la chn segment.

    F0000h

    ..F000Fh

    ..FFFF0h

    S e g m e n

    t F 0 0 0 h

    F0010h

    S e g m e n

    t F 0 0 1 h

    S e g m e n

    t F F F F h

    Mt s a ch logic cth tr nn khng hp l .V d, segment FFFFh,

    ch c cc offset t0000h n 000Fh mi

    to thnh mt a ch hpl, bi v a ch vt l ch

    c n FFFFFh l ht

    Logicaladdress

    Hnh 1. T chc b nh kiu segment - offset

    Mt chng trnh khi c np vo b nh thc hinthng thng chim 3 phnon. Mt phn on dnh cho m lnh (code segment), mt phn on dnh cho d liu (datasegment), v mt phn on ngn xp (stack segment) dnh lu cc gi tr trung gian hoc cca ch tr v dng khi gi hm. a ch ca 3 phn on tng ng c np vo 3 thanhCS, DS, SS. Thanh ghi IP cha a ch offset ca lnh sp c thc hin. Nh vy, cpCS:IPs cho bit a ch logic ca lnh. Thanh ghi SP cha a ch offset ca nh cui cng cvo stack. Cc php truy xut n phn on ngn xp s dng cpSS:SP. Cc lnh truy xut d

    liu trong phn on d liu s dng nDS kt hp vioffset c tnh ton t m lnhc c a ch logic ca nh cn truy xut.

    3

  • 8/14/2019 thanh ghi trong 8086

    4/13

    Cu trc m lnh Cc kiu nh v d liuCu trc m lnh (Instruction format) trong 8086

    Mt lnh (instruction) m b vi x l c th hiu c thng rt n gin. V d nh chuyn d liu t mt nh vo thanh ghi, cng thanh ghi th hai vo thanh ghi th nh

    Trong 8086 mi lnh thng tc ng n 0,1 hoc 2 i tng (operand, tm gi l ton hng).Ton hng c th l mt thanh ghi, mt hng s hoc mt nh.Thng thng, mt lnh (instruction) c cu trc nh sau:

    Opcode D W MOD REG R/M

    8 bits8 bits

    Prefix Displacement Immediate

    0-2 bytes 0-2 bytes 0-2 bytes

    Hnh 2. Cu trc m lnh

    TrngPrefixdng thay i thanh ghi phn on mc nh hoc ch nh s lp li clnh trong thao tc x l chui.TrngOpcodel m ca thao tc, cho bit lnh ny lm g.BitD (direction) cho bit hng tc ng ca lnh.BitW (width) cho bit kch thc ca ton hng.Hai trngREGvR/Mm t hai ton hng chu tc ng ca lnh.Trng REG cha m s ca mt thanh ghi.Trng R/M c th l m s ca mt thanh ghi (trng hp ton hng l thanh ghi) ho

    m t cch tnh a ch ca mt nh trong b nh (trng hp ton hng l nh).TrngMODcho bit trng R/M m t thanh ghi hay nh, cng nh cho bit c trn

    Displacement pha sau hay khng.TrngDisplacementc s dng khi ton hng l nh. Trng ny c s dng k

    hp vi cc thng tin lu trong trng R/M tnh a ch ca ton hng.TrngImmediatec s dng khi ton hng l mt hng s.Khng phi lnh no cng c cc trng c miu t trn.Chi tit v cc trng nh sau:

    D = 1 REG l ch nD = 0 REG l ngun

    W = 1 Ton hng l wordW = 0 Ton hng l byte

    REG W = 1 W = 0 Segment000 AX AL ES001 CX CL CS010 DX DL SS011 BX BL DS100 SP AH101 BP CH110 SI DH111 DI BH

    Bng 1 M trng REG v cc bit D, W

    4

  • 8/14/2019 thanh ghi trong 8086

    5/13

    MOD ngha ca R/M v Displacement00 Nu R/M = 110 th EA = disp-high _ disp-low

    Nu R/M 110 th phn displacement khng c.01 DISP = disp-low, s c signed extended10 DISP = disp-high _ disp-low11 R/M m t thanh ghi

    Bng 2. M trng MOD

    R/M Cch tnh a ch (Effective Address)000 EA = BX + SI + DISP001 EA = BX + DI + DISP010 EA = BP + SI + DISP011 EA = BP + DI + DISP100 EA = SI + DISP101 EA = DI + DISP

    110 EA = BP + DISP (tr trng hp MOD = 00, xem trn)111 EA = BX + DISP

    Bng 3. M trng R/M

    V d:Lnh chp ni dung thanh ghi DX vo CX c m 8BCAh, lnh chp ni dung thanghi CX vo DX c m 8BD1h.

    Opcode D W MOD REG R/M100010 1 1 11 001 010

    8Bh CAhMOV CX, DX

    Opcode D W MOD REG R/M100010 1 1 11 010 001

    8Bh D1hMOV DX, CX

    CX DXR/M l

    thanh ghiM thao tc di chuyn d liu

    Hnh 3. M lnh MOV gia hai thanh ghi

    V d:Lnh chp ni dung binvar (c a ch DS:1234h) vo thanh ghi CX c m8B0E1234h. (XemHnh 4). Lnh chp ngc li c m 890E1234h. Hai m ny ch khc nhau bit D. Trng hp th nht, D = 1 v thanh ghi CX l ch n. Trng hp th hai, D = thanh ghi CX l ngun. Trong c hai trng hp, a ch (EA) ca nh (binvar) c ly trctip t 2 bytes ca vng Displacement (MOD = 00 v R/M = 110, xem bng pha trn). H byte disp-high v disp-low ca vng Displacement cha offset ca binvar trong phn on dliu.

    5

  • 8/14/2019 thanh ghi trong 8086

    6/13

    Opcode D W MOD REG R/M

    100010 1 1

    8Bh 0EhMOV CX, var

    disp-high

    12h

    0001 0010

    disp-low

    34h

    0011 0100

    Opcode D W MOD REG R/M

    100010 0 1 00 001 110

    89h 0EhMOV var, CX

    disp-high

    12h

    0001 0010

    disp-low

    34h

    0011 0100

    00 001 110

    Hnh 4. M lnh MOV gia thanh ghi v b nh

    Mt s lnh c cu trc c bit, v d, ghp chung trng opcode vi trng reg, nhgip rt ngn di lnh. V d: lnh gn AX bng 4567h c m B84567h.

    Opcode W REG Immediate

    1-2 bytes8 bits

    a) Cu trc chung

    Opcode W REG Immediate1011 1 000 0100 0101 0110 0111

    4567hB8hMOV AX, 4567h

    b) V d: MOV AX, 4567hHnh 5. M lnh MOV gia Accumulator v hng s

    Khi ton hng l mt thanh ghi phn on, ch cn 2 bit ch nh mt trong bn thanh phn on. Ngha l trng REG lun c dng 0xx. Bit xx c nh ngha nh trongBng 1. Vd, lnh chp ni dung thanh ghi AX vo thanh ghi phn on DS c m l 8ED8h.

    Opcode D 0 MOD 0xx R/M100011 1 0 11 011 000

    8Eh D8hMOV DS, AX

    DSR/M lthanh ghi

    AX

    Hnh 6. M lnh MOV gia thanh ghi thng v thanh ghi phn on

    Khi c ch nh thanh ghi phn on dng truy xut b nh khc vi thanh ghi phn omc nh th trong m lnh xut hin thm Prefix. V d: lnh chp ni dung nh ES:23vo thanh ghi DS c m 268E1E2345h, trong 26h l prefix.

    Opcode D 0 REG100011 1 0

    8Eh 1EhMOV DS,ES:2345h

    disp-high disp-low

    2345h

    0010 0011 0100 010100 011

    MOD R/M110

    001 xx 110

    26h

    001 00 110

    ES

    Hnh 7. M lnh MOV gia thanh ghi phn on v nh, c s dng segment override prefix

    6

  • 8/14/2019 thanh ghi trong 8086

    7/13

    Stack v ng dng trong vic gi chng trnh con, gi ngt Khi nim stack

    Stack l mt vng b nh m , ngoi vic truy xut trc tip cc nh bng a ngi ta nh ngha thm hai thao tc lPUSH(b vo) vPOP (ly ra). Stack thng c

    dng lm ni lu tr tm thi cc gi tr trung gian hoc dng trong vic gi chng trnh con Nuch s dng hai thao tc PUSH & POP truy xut d liu trong stack th stack gingnh mt ci thng ng ti liu. Nhng g b vo sau s nm trn nhng g b vo trc, dkhi ly ra th bao gi cng phi ly ci b vo sau cng. Ngi ta gi cu trc nh vy l LIFO(last in first out).

    ghi li a ch offset ni b d liu vo sau cng, ngi ta dng thanh ghiSP, cn a chsegment th c lu trong thanh ghiSS. V d: (XemHnh 8, Hnh 9)

    Thao tc PUSH AX bao gm:gim SP i 2, a gi tr ca AX vo nh c a ch SS:SP.Thao tc POP AX bao gm: a gi tr t nh c a ch SS:SP vo AX,tng SP ln 2. Nh th, stack c s dng (cn gi l n ra) theo chiu gim ca a ch, khc v

    vng nh thng thng c s dng theo chiu tng ca a ch. Nu khng khai bo phn on stack, theo mc nh, on stack v code s chung nhau,

    khi chng trnh bt u thc hin, SP c khi ng gi tr 0. V vy, thao t PUSH xx ln u tin s t gi tr xx ti a ch SS:FFFEh (v 0 2 = FFFEh), thao tc PUSH yylin tip theo s t gi tr yyti a ch SS:FFFCh. (XemHnh 10)

    Nu c khai bo phn on stack, v d: .stack 200h, on stack s c cp pht riv khi chng trnh bt u thc hin, SP c khi ng gi tr 200h. V vy, thao t PUSH xx ln u tin s t gi tr xx ti a ch SS:01FEh, thao tc PUSH yylin tip theo s t gi tr yyti a ch SS:01FCh. (XemHnh 11)

    20h

    A0h

    01h

    SS:0000h

    SS:00F7h

    ..

    SS:00F8h SP = 00F8h

    SS:00F6h

    ..

    12h

    34h

    20h

    A0h

    01h

    SS:0000h

    SS:00F7h

    ..

    SS:00F8h

    SP = 00F6hSS:00F6h

    ..

    a) AX c gi tr 3412h, trc thao tc PUSH AX b) Sau thao tc PUSH AXHnh 8. Thc hin PUSH AX

    20h

    A0h

    01h

    SS:0000h

    SS:00F7h

    ..

    SS:00F8h SP = 00F8h

    SS:00F6h

    ..

    20h

    A0h

    01h

    SS:0000h

    SS:00F7h

    ..

    SS:00F8h

    SP = 00FAh

    SS:00F6h

    ..

    SS:00F9h

    SS:00FAh

    a) Trc thao tc POP AX b) Sau thao tc POP AX, thanh ghi AX c gi tr A020hHnh 9. Thc hin POP AX

    7

  • 8/14/2019 thanh ghi trong 8086

    8/13

    B8h

    25h

    00h

    50h

    ..

    .code

    MOV AX, 25h; m: B82500hPUSH AX; m: 50h...

    CS:0000h

    CS:FFFFh

    SS = CS

    SP = 0000h

    AX

    B8h

    25h

    00h

    50h

    ..

    25h

    00h

    CS:0000h

    CS:FFFFh

    00h 25h AX

    SP = FFFEh

    a) Trc khi thc hin PUSH b) Sau khi thc hin PUSH

    Hnh 10. Trng hp khng khai bo stack segment

    B8h

    25h00h

    50h

    ..

    .stack 200h

    .codeMOV AX, 25h; m: B825 00hPUSH AX; m: 50h...

    CS:0000h

    CS:FFFFh

    SS CS

    SP = 0200h

    AX 00h 25h AX

    SS:0000h

    SS:01FFh

    SS:0200h

    ..

    B8h

    25h00h

    50h

    ..

    CS:0000h

    CS:FFFFh

    25h

    00h

    SP = 01FEh

    SS:0000h

    SS:01FFh

    SS:0200h

    ..

    SS:01FEh

    a) Trc khi thc hin PUSH b) Sau khi thc hin PUSH

    Hnh 11. Trng hp c khai bo stack segment

    8

  • 8/14/2019 thanh ghi trong 8086

    9/13

    Chng trnh conChng trnh con lmt nhm cc lnhthc hin mt cng vic nht nh, c th cn c

    lm lp i lp li nhiu ln nhiu thi im khc nhau. Mi khi cn thc hin cng vingi ta ni rng cn phigi chng trnh contng ng.

    Nu nhn mt chng trnh my tnh nh l mt dy lin tip cc lnh, th vic gi mchng trnh con ch l victhay i trt t thc hin lnh, hay ni khc i l thay v thc hinlnh tip theo lin sau lnh va thc hin, CPU nhy n mt ch khc thc hin cc , sau quay li ch c v thc hin tip cc lnh ang b d. Nh vy, gi mt chtrnh con, ta cn hai thao tc lCALL(gi) vRET(tr v). y chnh l hai lnh thuc nhmcc lnh chuyn iu khin. Lnh CALL dng trong chng trnh chnh gi mt chngcon, lnh RET dng cui chng trnh con quay tr v chng trnh chnh.

    Thao tc CALL: s dng stack lu tr (PUSH) a ch calnh tip ngay sau lnh CALL(ni cn

    quay li) ghi vo thanh ghi con tr lnh IP a ch calnh u tin ca chng trnh con.

    Thao tc RET ly (POP) gi tr t stack v ghi vo thanh ghi con tr lnh IP, lm cho lntip theo c thc hin chnh l lnh ngay sau lnh CALL.

    Nh bit,a ch c th l a ch gn hoc a ch xa. Nu chng trnh con v chngtrnh chnh nm cng mt segment th lnh CALL ch cn PUSH vo stack 2 byte (a ch gTrong trng hp chng trnh con v chng trnh chnh nm hai segment khc nhau lCALL phi PUSH 4 byte vo stack (a ch xa). Tng ng, lnh RET s ly ra 2 hoc 4 bytetrng hp. Xem v d on chng trnh v m lnh tng ng nh sau:

    .stack 200h

    MOV AX,a

    CALL ToUpper

    MOV BX,AX

    MOV AX,z

    CALL ToUpper

    MOV CX,AX

    ...

    MOV AX,4C00hINT 21h

    ...

    ...

    ToUpper:

    SUB AX,20h

    RET

    ...

    .code...

    B8 00 61 h

    E8 00 3A h

    8B D8 h

    B8 00 7A h

    E8 00 32 h

    8B C8 h

    0005h

    0008h

    000Bh

    000Dh

    0010h

    0013h

    ...

    B8 4C 00 h

    CD 21 h

    ...

    ...

    0037h003A

    2D 00 20 h

    C3 h

    ...

    0045h

    0048h

    ...0000h

    Codesegment

    Hnh 12. V d s dng CALL

    9

  • 8/14/2019 thanh ghi trong 8086

    10/13

    Trong v d, hm (chng trnh con) ToUpper c gi 2 ln. (Lu rng nhn ToUpkhng to ra m lnh nn khng chim ch trong code segment). Ln th nht khi thc hin CALL a ch CS:0008h (XemHnh 13)

    Ti thi imtrc khi thc hinlnh CALL ny, thanh ghi IP c gi tr 0008h, cnthanh ghi SP c gi tr 0200h (tr xung y stack).

    Khi lnh CALLc npt b nh vo CPU thc hin, thanh ghi IP c tng tng ln mt lng bng kch thc m lnh CALL, do s c gi tr 000Bv tr n lnh tip theo l lnh MOV.

    Khi lnh CALLc thc hin, gi tr ca thanh ghi IP (chnh l a ch ca lnhMOV) c push vo stack (SP gim xung cn 01FEh), sau thanh ghi IP cng thm mt lng bng displacement lu trong m ca lnh CALL (003Ah). Kqu l IP c gi tr 0045h (=000Bh+003Ah), chnh l a ch ca ToUpper.

    Lnh tip theo c np vo CPU thc hin s l lnh SUB a ch 0045h. Sau , lnh RET c thc hin, lm cho gi tr trong stack c POP ra thanh g

    IP. Kt qu l IP c gi tr 000Bh, tr n lnh MOV, cn SP tng ln 0200h. Tip theo, lnh MOV a ch 000Bh c thc hin.

    01FFh

    0200h

    01FEh

    01FDh

    01FCh

    .

    Stacksegment

    0008hIP

    0200hSP

    0Bh

    00h01FFh

    0200h

    01FEh

    01FDh

    01FCh

    .

    Stacksegment

    0045hIP

    01FEhSP

    0Bh

    00h01FFh

    0200h

    01FEh

    01FDh

    01FCh

    .

    Stacksegment

    000BhIP

    0020hSP

    a) Trc CALL b) Sau CALL c) Sau RETHnh 13. Qu trnh gi chng trnh con

    01FFh

    0200h

    01FEh

    01FDh

    01FCh

    .

    Stacksegment

    0010hIP

    0200hSP

    13h

    00h01FFh

    0200h

    01FEh

    01FDh

    01FCh

    .

    Stacksegment

    0045hIP

    01FEhSP

    13h

    00h01FFh

    0200 h

    01FEh

    01FDh

    01FCh

    .

    Stacksegment

    0013hIP

    0020hSP

    a) Trc CALL b) Sau CALL c) Sau RETHnh 14. Gi ln 2

    10

  • 8/14/2019 thanh ghi trong 8086

    11/13

    Ln th 2, hm ToUpper c gi ti a ch 0010h, qu trnh din ra tng t. (XemHnh14). Lu rng hai li gi CALL ToUpper c dch thnh 2 m lnh khc nhau (E8003Ah E80032h), bi v hai li gi nm hai v tr khc nhau, c displacement khc nhau.

    Nhngv sao cn dng stack lu a ch tr v ? Nguyn nhn l do cc li gi c thlng nhau, ngha l trong chng trnh con ny c th xut hin li gi chng trnh con khhoc l gi chnh n. Khi ,thao tc RET u tin cn ly a ch tr v c ct bi CALL sacng. iu ny ph hp vinguyn tc LIFOca stack. (XemHnh 15)

    .stack 200h

    MOV AX,V

    CALL Upcase

    MOV BX,AX

    MOV AX,n

    CALL Upcase

    MOV CX,AX

    ...

    MOV AX,4C00h

    INT 21h

    ...

    ...

    ToUpper:SUB AX,20h

    RET

    ...

    .code

    ...B8 00 56 h

    E8 00 3E h

    8B D8 h

    B8 00 6E h

    E8 00 36 h

    8B C8 h

    0005h

    0008h

    000Bh

    000Dh

    0010h

    0013h

    ...

    B8 4C 00 h

    CD 21 h

    ...

    ...

    0037h

    003A

    2D 00 20 h

    C3 h

    0045h

    0048h

    ...

    0000h

    Codesegment

    Upcase:

    CMP AX,a

    JB Notaz

    CMP AX,z

    JA Notaz

    CALL ToUpper

    RET Notaz:

    3D 00 61 h0049h

    72 08 h004Ch

    3D 00 7A h004Eh

    77 03 h0051h

    E8 FF EF h0053h

    C3 h0056h

    Hnh 15. CALL lng nhau

    Qu trnh PUSH v POP cc a ch tr v vo stack din ra nh sau. XemHnh 16.

    11

  • 8/14/2019 thanh ghi trong 8086

    12/13

    01FFh

    0200h

    01FEh

    01FDh

    01FCh

    .

    Stacksegment

    0008hIP

    0200hSP

    01FFh

    0200h

    01FEh

    01FDh

    01FCh

    .

    Stacksegment

    IP

    SP

    0Bh

    00h

    0049h

    01FEh

    01FFh

    0200h

    01FEh

    01FDh

    01FCh

    .

    Stacksegment

    IP

    SP

    56h

    00h

    0Bh

    00h

    0045h

    01FCh

    01FFh

    0200h

    01FEh

    01FDh

    01FCh

    .

    Stacksegment

    IP

    SP

    56h

    00h

    0Bh

    00hSP

    SP

    SP

    SP

    0056h

    01FEh

    01FFh

    0200h

    01FEh

    01FDh

    01FCh

    .

    Stacksegment

    IP

    SP

    56h

    00h

    0Bh

    00hSP

    000Bh

    0200h

    a) Trc b) Sau c) Sau d) Sau e) SauCALL Upcase CALL Upcase CALL ToUpper RET ca ToUpper RET ca Upcase

    Hnh 16. S thay i ca stack khi CALL lng nhau

    Interrupt (ngt) Ngt l mt c ch cho phpCPU nhn bit v nhng s kin xy rabn ngoi (hardwareinterrupt,ngt cng) cng nh bn trong CPU (software interrupt,ngt mm) v c mtp ngthch hp.

    Ngt cng c dng trnh vic CPU phi ch inhng thit b ngoi vi khc ctc x l chmhn. Trong thi gian cc thit b ny cn ang x l, th CPU c th lm nhncng vic khc. Sau khi hon thnh cng vic ca mnh, thit b sch ng gy ra mt s thayi tn hiu trn mt dy dnnhm mc ch bo cho CPU bit v tnh trng ca mnh. Khi CPUnhn c s thay i tn hiu ny (xem nh mt s kin), CPU sngng cng vic hin tithc hin mt on chng trnh con (interrupt handler , trnh x l ngt) lm nhng thao tc cn

    thit (p ng ), sau quay tr litip tc cng vic. Ngt mm c dng khi chng trnh ch ng gimt on chng trnh con h thng(interrupt handler , trnh x l ngt). Cc chng trnh con h thng l mt phn ca h iu hhoc ca BIOS. Vic gi ny thc hin khng phi bng lnh CALL m bng lnhINT. C thxem nh lnh INT to ra mt s kini hip ng ca CPU.

    Nh vy, c hai loi ngt cng v ngt mm u c lin quan n vic gi mt chng trnhcon khi c mt s kin xy ra, ch khc nhau cch hnh thnh s kin ny. i vi ngt cng,mttn hiutrn phn cng thay i gy ra s kin. i vi ngt mm,lnh INT gy ra s kin.

    a ch bt u ca cc chng trnh con (trnh x l ngt) ny c lu trong mt bngl bng vector ngt(interrupt vector table). Mi ngt c mts hiu phn bit. Vi mi s

    hiu ngt, trong bng lu gi a ch xa tr nlnh u tin ca trnh x l ngt tng ng. Nhng khng ging nh vic gi chng trnh con bng CALL thng thng, y gi

    ca 3 thanh ghi c PUSH vo stack. u tin lthanh ghi c , sau lCSv cui cng lIP.Tip theo, da vo s hiu ca ngt (c cung cp bi phn cng hoc bi i s caINT), a ch xa ca trnh x l ngt c ly t bng vector ngt v t vo CS, IP.

    c th tr v chng trnh chnh, cui trnh x l ngt c lnhIRET. Lnh ny theo tht ngc li, POP gi tr t stack vo IP, CS v thanh ghi c.

    Ngoi ra, cn mt loi ngt na, lngt ni bbn trong CPU (internal interrupt), xy rakhi c mt li c bit, v d, thc hin php chia cho 0, hoc thc hin mt m lnh khnti. C ch gi v tr v t ngt hon ton ging nh hai loi trn.

    Mt s ngt c th b che, ngha l khng cho php chng xy ra, bng cch thay i m bit trong mt thanh ghi iu khin. Cc ngt nh vy gi lmaskable. Cc ngt khng cho phpche gi lnon-maskable.

    12

  • 8/14/2019 thanh ghi trong 8086

    13/13

    Mi lin h gia cc file .asm, .obj, .lst, .exe v .map

    13