You are on page 1of 3

B thanh ghi trong 8086

Cc thanh ghi trong b vi x l 8086 u l cc thanh ghi 16 bit v c chia thnh cc nhm nh sau: - Cc thanh ghi cng d ng chung AX (accumulator), BX (base), CX (counter), DX (data): c th c truy xu t c l p nh 2 thanh ghi 8 bit : AH v AL, BH v BL, CH v CL, DH v DL.

Cc thanh ghi con tr v ch m c (xem chi ti t cc ph n sau) SP (Stack Pointer), BP (Base Pointer): con tr dng khi lm vi c v i stack SI (Source Index), DI (Destination Index): ch s m ng khi x l m ng (chu i) - Cc thanh ghi phn o n CS (Code Segment), DS (Data Segment), ES (Extra data Segment), SS (Stack Segment): tng ng lu a ch phn o n m l nh, phn o n d li u, phn o n d li u b sung, phn o n ngn x p. a ch phn o n ny s c k t h p v i a ch offset truy xu t nh . (xem chi ti t cc ph n sau) - Cc thanh ghi con tr l nh v tr ng thi IP (Intruction Pointer): thanh ghi ch a a ch offset c a l nh k ti p c n th c hi n. Thanh ghi ny khng th c truy xu t tr c ti p. FLAGS: thanh ghi c tr ng thi, dng ch a cc bit m t tr ng thi c a l nh v a c th c hi n, ho c ch a cc bit i u khi n c n thi t l p tr c khi g i l nh. Bao g m cc bit c sau y: (xem chi ti t cc ph n sau)

CF (Carry Flag): PF (Parrity Flag): AF (Auxilary Flag): ZF (Zero Flag): SF (Sign Flag): TF (Trace Flag): IF (Interrupt Flag): DF (Direction Flag): OF (Overflow Flag):

b b b b b b b b b

t khi php tnh v a th c hi n c s d ng bit nh t khi k t qu c a php tnh v a th c hi n c ch n bit 1 t khi php tnh v a th c hi n c s d ng bit nh ph t khi k t qu c a php tnh v a th c hi n l 0 t khi k t qu c a php tnh v a th c hi n c bit d u b t t chuy n sang ch ch y t ng b c t cho php cc ng t x y ra t ch n ch gi m ch s t ng khi lm vi c v i m ng t khi php tnh v a th c hi n gy ra trn s

T ch c b nh trong 8086
a ch v t l.
a ch c r ng 20 bit, n u nh a ch tu n t tng d n cho cc nh : s l ng t i a cc nh c th c nh a ch l 2^20 nh . M i nh c kch th c 1 byte kch th c b nh t i a c th truy c p l 2^20 byte = 1 MB. Khi , a ch c a m t nh l m t con s 20 bit (ho c 5 ch s hex), g i l a ch v t l. Bus

a ch logic
Cc thanh ghi trong 8086 u l 16 bit. N u dng cc thanh ghi ny lu tr a ch 20bit th khng ti n l i. Ng i ta tm cch gi m s bit dng nh a ch xu ng cn 16bit. t ng c s d ng l: thng th ng, cc d li u m m t chng trnh c n truy c p n m g n nhau v t o thnh m t kh i khng l n l m; nh v y, n u ta nh a ch tng i (g i l offset) trong m t kh i th s l ng bit dng nh a ch s gi m xu ng. B nh c chia thnh cc kh i 64KB, g i l segment, cc kh i ny khng x p tu n t c nh nhau m x p g i u, v i kho ng cch 16byte. Ngha l, c 16 byte th l i b t u m t segment m i. Nh v y, s l ng segment trong 1MB b nh l 1MB / 16byte = 65536 = 2^16. Do , nh a ch segment ta cng c n 16 bit. Trong ph m vi m t segment 64KB (=65536 byte), ch c n dng 16 bit lm a ch offset xc nh m t nh . (Xem Hnh 1. T ch c b nh ki u segment - offset) Tm l i, trong cch nh a ch logic, m i nh c a ch l m t c p (segment:offset), t ng c ng 32bit. Tuy nhin, nh ni trn, cc d li u c lin quan trong b nh th ng g n nhau trong m t kh i segment nn ta c th khng c n xc nh t ng minh a ch segment m ch c n ng m hi u. Khi b t u lm vi c v i m t segment no th ta s dng m t thanh ghi ghi l i a ch segment . Thanh ghi ny s c dng chung cho t t c cc php truy xu t b nh ti p theo. V nh th , trong cc php truy xu t b nh ti p theo, ch c n dng thm 16 bit a ch offset l xc nh v tr m t nh . N u a ch g m c hai ph n segment:offset, ng i ta g i l a ch xa. N u a ch ch c offset cn segment ng m nh th ng i ta g i l a ch g n, hm l n xc nh m t nh ch trong ph m vi c a segment ng m nh m thi.

Chuy n
Vi c

i gi a hai ki u
it

a ch
a ch v t l r t n gi n.

a ch logic sang

Phy_address = segment * 16 + offset


Vd: a ch logic 1234h:0005h s ng v i a ch v t l 1234h * 16 + 0005h = 12340h + 0005h = 12345h Vi c i t a ch v t l sang a ch logic cng khng c g ph c t p. Tuy nhin, do cc segment g i u nhau nn m i nh c th thu c m t vi segment khc nhau. V v y, m t a ch v t l c th ng v i nhi u a ch logic khc nhau. Vd: a ch v t l 12345h c th ng v i cc a ch logic sau: 1234h:0005h 1230h:0045h 1200h:0345h 1000h:2345h 1232h:0025h Thng th ng khi ni a ch , ng m hi u l a ch logic, m th ng l a ch g n.

Physical address

RAM

00000h 00001h 00002h ..


Segment 0000

16 bytes

Logical address Segment : Offset

0000Fh 00010h 00011h .. 0001Fh 00020h .. 0FFFFh 10000h .. 1000Fh 10010h .. 1001Fh 10020h .. F0000h .. F000Fh F0010h .. FFFF0h .. FFFFFh

16 bytes
Segment 0001

0000h:0020h 0001h:0010h 0002h:0000h V m i nh c th thu c nhi u segment khc nhau, m t a ch v t l 00020h c th ng v i nhi u a ch logic khc nhau, ty vo vi c l a ch n segment.

Segment 0002

Segment F000h

Segment F001h

M t s a ch logic c th tr nn khng h p l . V d , segment FFFFh, ch c cc offset t 0000h n 000Fh m i t o thnh m t a ch h p l , b i v a ch v t l ch c n FFFFFh l h t


Segment FFFFh

Hnh 1. T ch c b nh ki u segment - offset

M t chng trnh khi c n p vo b nh th c hi n thng th ng chi m 3 phn o n. M t phn o n dnh cho m l nh (code segment), m t phn o n dnh cho d li u (data segment), v m t phn o n ngn x p (stack segment) dnh lu cc gi tr trung gian ho c cc a ch tr v dng khi g i hm. a ch c a 3 phn o n tng ng c n p vo 3 thanh ghi CS, DS, SS. Thanh ghi IP ch a a ch offset c a l nh s p c th c hi n. Nh v y, c p CS:IP s cho bi t a ch logic c a l nh. Thanh ghi SP ch a a ch offset c a nh cu i cng c lu vo stack. Cc php truy xu t n phn o n ngn x p s dng c p SS:SP. Cc l nh truy xu t d li u trong phn o n d li u s dng n DS k t h p v i offset c tnh ton t m l nh c c a ch logic c a nh c n truy xu t.

You might also like