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 dng chung AX (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.

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 on CS (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 liu b sung, phn on ngn xp. a ch phn on ny s c kt hp vi a ch offset truy 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 thc hin. 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 lnh va c thc hin, hoc cha cc bit iu khin cn thit lp trc khi gi lnh. Bao gm cc bit c sau y: (xem chi tit cc phn 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):

bt khi php tnh va thc hin c s dng bit nh bt khi kt qu ca php tnh va thc hin c chn bit 1 bt khi php tnh va thc hin c s dng bit nh ph bt khi kt qu ca php tnh va thc hin l 0 bt khi kt qu ca php tnh va thc hin c bit du bt bt chuyn sang ch chy tng bc bt cho php cc ngt xy ra bt chn ch gim ch s t ng khi lm vic vi mng bt khi php tnh va thc hin gy ra trn s

T chc b nh trong 8086


a 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 byte kch 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 l.

a ch logic
Cc thanh ghi trong 8086 u l 16 bit. Nu dng cc thanh ghi ny lu tr a ch 20bit 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 nm gn nhau v to thnh mt khi khng ln lm; nh vy, nu ta nh a ch tng i (gi l offset) trong mt khi th s lng bit dng nh a ch s gim xung. B nh c chia thnh cc khi 64KB, gi l segment, cc khi ny khng xp tun t cnh nhau m xp gi u, vi khong cch 16byte. Ngha l, c 16 byte th li bt u mt segment mi. Nh vy, s lng segment trong 1MB b nh l 1MB / 16byte = 65536 = 2^16. Do , nh a ch segment ta cng cn 16 bit. Trong phm vi mt segment 64KB (=65536 byte), ch cn dng 16 bit lm a ch offset xc nh mt nh. (Xem Hnh 1. T chc b nh kiu segment - offset) Tm li, trong cch nh a ch logic, mi nh c a 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 th khng cn xc nh tng minh a ch segment m ch cn ngm hiu. Khi bt u lm vic vi mt segment no th ta s dng mt thanh ghi ghi li a ch segment . Thanh ghi ny s c dng chung cho tt c cc php truy xut b nh tip theo. V nh th, trong cc php truy xut b nh tip theo, ch cn dng thm 16 bit a ch offset l xc nh v tr mt nh. Nu a ch gm c hai phn segment:offset, ngi ta gi l a ch xa. Nu a ch ch c offset cn segment ngm nh th ngi ta gi l a 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 + offset


Vd: a ch logic 1234h:0005h s ng vi a 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 cc segment gi u nhau nn mi nh c th thuc mt vi segment khc nhau. V vy, mt a ch vt l c th ng vi nhiu a ch logic khc nhau. Vd: a ch vt l 12345h c th ng vi cc a ch logic sau: 1234h:0005h 1230h:0045h 1200h:0345h 1000h:2345h 1232h:0025h Thng thng khi ni a ch, ngm hiu l a ch logic, m thng l a ch gn.

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 mi nh c th thuc nhiu segment khc nhau, mt a ch vt l 00020h c th ng vi nhiu a ch logic khc nhau, ty vo vic la chn segment.

Segment 0002

Segment F000h

Segment F001h

Mt s a ch logic c th tr nn khng hp l. V d, segment FFFFh, ch c cc offset t 0000h n 000Fh mi to thnh mt a ch hp l, bi v a ch vt l ch c n FFFFFh l ht


Segment FFFFh

Hnh 1. T chc b nh kiu segment - offset

Mt chng trnh khi c np vo b nh thc hin thng thng chim 3 phn on. Mt phn on dnh cho m lnh (code segment), mt phn on dnh cho d liu (data segment), v mt phn on ngn xp (stack segment) dnh lu cc gi tr trung gian hoc cc a ch tr v dng khi gi hm. a ch ca 3 phn on tng ng c np vo 3 thanh ghi CS, DS, SS. Thanh ghi IP cha a ch offset ca lnh sp c thc hin. Nh vy, cp CS:IP s cho bit a ch logic ca lnh. Thanh ghi SP cha a ch offset ca nh cui cng c lu vo stack. Cc php truy xut n phn on ngn xp s dng cp SS:SP. Cc lnh truy xut d liu trong phn on d liu s dng n DS kt hp vi offset c tnh ton t m lnh c c a ch logic ca nh cn truy xut.

You might also like