thanh ghi trong 8086
Post on 30-May-2018
230 Views
Preview:
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
top related