Professional Documents
Culture Documents
C2
C2
T chc CPU
T chc CPU
Trong mt chu k bus, CPU c th thc hin c I/O, ghi I/O, c b nh hay ghi b nh. Cc ng bus a ch v bus iu khin dng xc nh a ch b nh hay I/O v hng truyn d liu trn bus d liu. Ch rng CPU iu khin tt c cc qu trnh trn nn b nh bt buc phi cung cp c d liu vo lc MEMR ln mc cao trong trng thi T4. Nu khng, CPU s c d liu ngu nhin khng mong mun trn bus d liu. gii quyt vn ny, ta c th dng thm cc trng thi ch (wait state).
2. Kin trc ni
2.1. Kin trc ni
CPU c kh nng thc hin cc tc v d liu theo tp lnh bn trong. Mt lnh c ghi nhn bng m c nh ngha trc, gi l m lnh (opcode). Trc khi thc thi mt lnh, CPU phi nhn c m lnh t b nh chng trnh ca n. Qu trnh x l ny gi l chu k nhn lnh (fetch cycle). Mt khi cc m c nhn v c gii m th mch bn trong CPU c th tin hnh thc thi (execute) m lnh.
EU
Hng lnh
BIU
Bus h thng
Hnh 2.2 Kin trc tng qut ca CPU 8086 BIU (Bus Interface Unit n v giao tip bus) nhn cc m lnh t b nh v t chng vo hng ch lnh. EU (Execute Unit n v thc thi) s gii m v thc hin cc lnh trong hng. Ch rng cc n v EU v BIU lm vic c lp vi nhau nn BIU c kh nng ang nhn mt lnh mi trong khi EU dang thc thi lnh trc . Khi EU thc hin xong lnh, n s ly m lnh k tip trong hng lnh (instruction queue). Kin trc ni ca CPU 8086 hnh 2.3. N c 2 b x l ring: BIU v EU. BIU cung cp cc chc nng phn cng, bao gm to cc a ch b nh v I/O chuyn d liu gia EU v bn ngoi CPU. EU nhn cc m lnh chng trnh v d liu t BIU, thc thi cc lnh ny v cha cc kt qu trong cc thanh ghi. Ngoi ra, d liu cng c th cha trong mt v tr b nh hay c ghi vo thit b xut. Ch rng EU khng c bus h thng nn phi thc hin nhn v xut tt c cc d liu ca n thng qua BIU. S khc bit gia CPU 8086 v 8088 l BIU. Trong 8088, ng bus d liu l 8 bit trong khi ca 8086 l 16 bit. Ngoi ra hng lnh ca 8088 di 4 byte trong khi ca 8086 l 6 byte. Tuy nhin do EU gia hai loi P ny ging nhau nn cc chng trnh vit cho 8086 c th chy c trn 8088 m khng cn thay i g c.
GV: Phm Hng Kim Khnh Trang 30
T chc CPU
BIU
AH BH CH DH BP DI SI SP AL BL CL DL CS ES SS DS IP 5 4 3 2 1
Internal bus
Thanh ghi c
ALU
2.2. C ch ng ng (pipeline)
Qu trnh nhn lnh v thc thi lnh: 1/ BIU xut ni dung ca thanh ghi con tr lnh IP (Instruction Pointer) ra bus a ch chn byte hay word c vo BIU. 2/ Thanh ghi IP c tng ln chun b nhn lnh k (s byte tng ln ca IP ty thuc vo kch thc lnh trc ).
GV: Phm Hng Kim Khnh Trang 31
T chc CPU
3/ Khi lnh trong BIU, n c a sang hng lnh (queue). y l mt thanh ghi lu tr dng FIFO (First In First Out Vo trc ra trc), dng c ch x l xen k lin tc cc dng m lnh (k thut ng ng pipelining). 4/ Gi s ban u hng lnh trng, EU s khng lm g c cho n khi bt u xut hin mt lnh trong hng, EU s ly lnh ra khi hng v bt u thc thi lnh . 5/ Trong khi EU ang thc thi lnh, BIU tin hnh nhn lnh mi. Tu theo thi gian thc thi lnh m BIU c th a vo hng lnh nhiu lnh mi trc khi EU thc hin lnh xong v tip tc ly lnh mi. BIU c lp trnh c th nhn mt lnh mi bt k lc no hng lnh c ch cho 1 byte (8088) hay 2 byte (8086). Li ch ca phng php x l theo c ch pipeline l EU c th thc thi cc lnh gn nh lin tc thay v phi i BIU nhn thm lnh mi.
Nhn
Thc thi
Nhn
Thc thi
Nhn
Thc thi
(a)
Nhn (1) Nhn (2) Nhn (3) c Nhn (4) Nhn (4) Nhn
Ch
Thc thi
Ch
Thc thi
Thc thi
Thc thi
Ch
Nhn
(b) (1): lnh thc thi khng cn d liu trong hng (2): lnh thc thi cn d liu trong hng (3): lnh nhy (4): cc lnh b b qua do lnh nhy Hnh 2.4 (a) CPU thng thng dng chu k nhn v thc thi lnh tun t (b) Kin trc dng pipeline ca 8086/8088 cho php thc thi cc lnh m khng b tr do qu trnh nhn lnh C 3 iu kin lm cho EU ch ch: iu kin th nht xy ra khi lnh cn truy xut n mt v tr b nh khng trong hng. BIU phi treo qu trnh nhn lnh v xut ra a ch ca nh ny. Sau khi truy xut b nh, EU c th tip tc qu trnh thc thi lnh t hng lnh v BIU c th tip tc a cc lnh vo hng. iu kin th hai xy ra khi lnh c thc thi l lnh nhy (jump). Trong trng hp ny, thay v dng a ch lnh k tip, ta phi chuyn n a ch mi (khng tun t). Tuy nhin, BIU vn lun t cc lnh theo tun t v do s lu cc lnh khng s dng. Trong khi nhn lnh k tip ti a ch do lnh jump ch n, EU phi i v tt c cc byte trong hng phi b.
Trang 32
T chc CPU
iu kin th ba c th lm BIU treo qu trnh nhn lnh l khi thc thi cc lnh c thi gian thc thi ln. Gi s nh lnh AAM (ASCII Adjust for Multiplication) cn 83 chu k xung nhp hon tt trong khi vi 4 chu k xung nhp cho qu trnh nhn lnh th hng s b y. Nh vy BIU phi i cho n khi lnh c thc hin xong v EU nhn m lnh t hng th mi c th tip tc qu trnh nhn lnh.
T chc CPU
K thut siu phn lung cung cp trng thi song song cp lung (TLP thread level parallelism) cho mi vi x l, kt qu l gia tng kh nng tn dng ti nguyn ca vi x l. Siu phn lung l mt dng ca k thut a lung song song (SMT Simultaneous Multi Threading) trong nhiu lung c th c thc thi ti cng mt thi im trn mt vi x l. Vn ny thc hin bng cch kt hp 2 AS (Architectural State) trong mi vi x l, cc AS s dng chung ti nguyn ca vi x l. K thut ny lm p ng thi gian ca vi x l s nhanh hn trong mi trng a nhim v cho php thc hin nhanh cc hot ng a lung v a nhim bng cch s dng cc ti nguyn nhn ri. K thut siu phn lung v a lung song song (SMT Simultaneous Multi-Threading) Intel pht trin SMT t mt cng ngh gc c tn m l Jackson vi ci tn khc l Hyper-Threading k thut siu phn lung. Trc khi c th hiu v cch thc hot ng ca k thut ny, chng ta cn phi tm hiu c bn v n, c bit l v chui lnh v cch chng hot ng. Ci g lm cho mt ng dng c th chy? Lm th no CPU bit cc ch dn thc hin v thc hin vi d liu no? Tt c nhng thng tin ny c cha trong m bin dch ca ng dng ang chy mi khi np ng dng vo. ng dng ln lt gi cc chui lnh bo cho CPU bit phi lm g p ng, v i vi CPU chui lnh s l mt tp cc ch th cn phi thc thi. CPU bit chnh xc cc ch th ny nm u nh thanh ghi b m chng trnh (PC Program Counter). PC lun ch n v tr trong b nh ni m cc ch th cn thc hin tip theo c lu gi, nh vy mt khi chui lnh c gi n CPU th a ch trong b nh ca chui lnh ny c np sn vo PC, v vy CPU bit bt u thc hin t u. Sau mi ch th, PC s tng ln v qu trnh tip tc n ht chui lnh. Khi chui lnh c thc hin xong, PC s b ghi bi ch th tip theo. Chui lnh c th b ngt bi mt yu cu khc, khi CPU s lu gi tr hin ti ca PC trong ngn xp (stack) v np gi tr mi vo PC, tuy nhin hn ch l ti mi thi im ch c th c duy nht mt chui lnh c thc thi. Mt hng gii quyt chung cho vn ny l s dng hai hay nhiu CPU, nu ti mi thi im mt CPU ch c th thc thi mt chui lnh th hai hay nhiu CPU s thc thi c hai hay nhiu chui lnh. Tuy vy, li c nhiu vn ny sinh vi cch gii quyt ny, trc ht l nhiu CPU s tn nhiu tin, quan trng hn na l vic qun l hai hay nhiu CPU chng chia s tt ti nguyn chung. V d, cho ti trc khi chipset AMD 760MP c a ra, tt c cc nn tng x86 a x l ch h tr vic chia bng thng sn c gia cc CPU, iu quan trng nht l cc ng dng v h iu hnh cn phi c kh nng h tr tnh nng ny. Hin nay, gii quyt nhanh cc chui lnh phc tp, phn cng ni chung phi nh vo phng n x l a lung, h iu hnh phi h tr x l a lung, v phi tng tc mt cch tht s, ging nh c nhiu b x l (trong hu ht cc trng hp). K thut siu phn lung ca Intel gii quyt vn bng cch thc hin nhiu hn mt chui lnh ti cng mt thi im. Hiu qu ca cc b vi x l Ly P4 lm v d, CPU ny c tng cng 7 n v thc thi, hai trong s c th thc hin hai lnh mi xung clock (gi l double pumped ALUs). Nhng ngay c nh vy th cng khng th tm c phn mm no tn dng ht cc n v thc thi . Hu ht cc phn mm cho my tnh c nhn ang s dng ch lm vic vi mt t
GV: Phm Hng Kim Khnh Trang 34
T chc CPU
php tnh s nguyn nh np v lu tr m khng h ng n n v thc thi du chm ng. Cn mt s phn mm ch tp trung vo mi n v x l du chm ng m khng s dng n n v x l s nguyn. Ngay c ng dng ch yu s dng php tnh s nguyn cng khng tn dng tt c cc n v x l s nguyn, c bit l mt thnh phn trong CPU chuyn dng cho php dch hay quay. Gi s mt CPU vi 3 n v thc thi: mt n v s nguyn (ALU Arithmetic Logic Unit), mt n v du chm ng (FPU Floating Point Unit) v mt n v np/lu tr (n v dng c/ghi b nh). Gi s CPU c th thc hin mi lnh trong vng mt chu k xung clock v ng thi gii quyt nhiu lnh ti c ba n v thc thi. Ta cn CPU thc thi chui lnh sau: 1+1 10+1 Lu tr kt qu Biu di y s gip minh ha mc ca cc n v thc thi, mu xm biu th n v thc thi khng s dng, gch cho cho bit n v thc thi hot ng.
2 Chu k xung
C th thy rng trong mi xung clock s ch c 33% trong s cc n v c s dng, v trong cc php ton ny hon ton khng s dng FPU. Gi s gi mt chui lnh khc n cc n v thc thi ca CPU, ln ny l cc lnh ti, cng v lu tr:
n v thc thi ALU FPU Load/Store
2 Chu k xung
Trang 35
T chc CPU
Ta thy rng cng ch s dng c 33% s cc n v thc thi. Thut ton x l song song c gi l ILP (instruction level parallelism), cc ch dn phc tp c thc hin ng thi bi v CPU c kh nng tn dng cc n v x l song song, tc l c nhiu hn 33% s n v x l c s dng. Tuy nhin trn thc t hu ht cc m lnh x86 khng phi l ILP, v vy ta phi tm nhng cch khc tng hiu qu. V d, h thng c 2 CPU v chng c th thc hin cc chui lnh ng thi, cch ny c bit n nh l x l song song theo lung tng cng hiu nng, tuy nhin li rt tn km. K thut siu phn lung Cc n v thc thi khng c s dng thng xuyn l do CPU khng th ly d liu nhanh nh n mong mun do tc nghn ng truyn (memory bus v frontside-bus), dn n s gim st hot ng ca cc n v thc thi. Ngoi ra, mt nguyn nhn khc c cp l c qu t ILP trong hu ht cc chui lnh thc thi. K thut siu phn lung
B x l a nhn AS Ti nguyn thc thi AS Ti nguyn thc thi Siu phn lung AS AS
Hnh 2.5 So snh b x l a nhn v siu phn lung Hin thi a s cc phng php dng ci thin hiu nng trong cc th h CPU l tng tc xung clock v tng ln ca b nh m (cache). Nhng cho d c hai cch ny cng c s dng th vn khng thc s s dng ht c ti nguyn sn c ca CPU. Nu c cch no cho php thc thi c nhiu chui lnh ng thi mi c th tng hiu qu s dng ti nguyn ca CPU. chnh l cch m k thut siu phn lung ca Intel lm c, bn cht ca n l chia s ti nguyn s dng hiu qu hn cc n v thc thi lnh c sn trn CPU. Siu phn lung l mt k thut nm ngoi x86, l mt phn nh ca SMT. tng ca SMT rt n gin: mt CPU vt l s xut hin trn h iu hnh nh l hai CPU logic v h iu hnh khng th phn bit c. Nhim v ca h iu hnh l gi 2 chui lnh ti 2 CPU v phn cng s m nhim nhng cng vic cn li. Trong cc CPU s dng k thut siu phn lung, mi CPU logic s hu mt tp cc thanh ghi, k c thanh ghi b m chng trnh ring (separate program counter), CPU vt l s lun phin cc giai on tm/gii m lnh gia hai CPU logic v thc thi nhng thao tc t hai chui lnh ng thi theo cch hng ti nhng n v thc thi t c s dng.
GV: Phm Hng Kim Khnh Trang 36
T chc CPU
2 Chu k xung
Gi s rng CPU n gin trc y cng c cc c tnh ca siu phn lung: Cc gch cho hin th mt ch dn t chui lnh th nht ang c thc hin, trong khi nhng chm chm hin th mt ch dn t chui lnh th hai ang c thc hin. Cc mu xm hin th nhng n v thc hin khng c s dng, trong khi cc mu en hin th xung t khi m c hai ch dn u s dng cng mt n v thc thi. R rng l vic thc thi song song hai chui lnh vi k thut siu phn lung li thc hin chm hn so vi mt CPU thng thng. Nguyn nhn tht ra rt n gin: CPU ng thi thc hin hai chui lnh qu n gin, tt c u l trng lp vi lnh add, load, store. Nu thc thi cc ng dng i hi nhiu php ton ng cng vi cc ng dng s nguyn th kt qu s khc i. Hin ti cc ng dng vn phng trn my tnh bn hu nh ch s dng s nguyn (v trong tng lai chc cng vn ch s dng s nguyn). V vy li ch m cng ngh siu phn lung em li thp (v i khi cn km hn khng dng cng ngh siu phn lung). Trn thc t, nu kch hot tnh nng siu phn lung trn desktop, c th gim tc ti 10%. Tuy nhin ngi dng cc ng dng tnh ton phc tp th s c hng li rt nhiu t k thut ny. Ngoi ra k thut ny cng tng tc ng k cho cc my ch, nht l cc my ch web server. Li ch ca siu phn lung Intel to ra siu phn lung khng ch cho cc CPU my ch. Thc ra kin trc NetBurst ca P4 v Xeon hin nay hon chnh vi li SMT. Xt v d trn, ta cho thm mt ALU th 2 v thc hin hai chui lnh trn. Vi mt ALU th 2, xung t duy nht gp phi l ln lu tr cui cng. Ta bit rng CPU P4 c thit k vi ba n v s nguyn (hai ALU v mt n v x l s nguyn khc chm hn cho php dch/quay). Quan trng hn na l mi ALU ca P4 c th thc hin hai vi lnh trong cng mt xung clock, ngha l trong hai ch dn add (php cng) mi ch dn c th t hai chui lnh khc nhau, c thc hin ng thi trong mt xung clock duy nht trn P4/Xeon.
Trang 37
T chc CPU
2 Chu k xung
Nhng iu vn cha gii quyt c vn , do vic tng thm cc n v x l tng hiu qu vi k thut siu phn lung li tn km ng t quan im vt l (lm cho CPU c nhiu transistor hn, tiu tn nhiu in nng hn; hoc phi gim kch thc CPU vi cc cng ngh ch to mi). Thay vo , Intel ang khuyn khch cc nh pht trin ti u ho k thut siu phn lung. Chng hn s dng lnh dng (HALT) mt trong cc b x l logic s ti a c tc cho cc ng dng khng s dng c k thut siu phn lung, CPU cn li ch hot ng nh l h thng mt CPU. Khi mt ng dng c th s dng li ch t siu phn lung, b x l logic th hai li tip tc c hot ng.
3. Cc thanh ghi
CPU 8086/8088 c tt c 14 thanh ghi ni. Cc thanh ghi ny c th phn loi nh sau: Thanh ghi d liu (data register) Thanh ghi ch s v con tr (index & pointer register) Thanh ghi on (segment register) Thanh ghi trng thi v iu khin (status & control register)
T chc CPU
AL
AH BX CX CL DX
CWD Cc php ton x l chui (string) MUL, IMUL (ton hng ngun kch thc byte) DIV, IDIV (ton hng ngun kch thc byte) IN (nhp byte) OUT (xut byte) XLAT AAA, AAD, AAM, AAS (cc php ton ASCII) CBW (i sang word) DAA, DAS (s thp phn) Cc php ton x l chui (string) MUL, IMUL (ton hng ngun kch thc byte) DIV, IDIV (ton hng ngun kch thc byte) CBW (i sang word) XLAT LOOP, LOOPE, LOOPNE Cc php ton string vi tip du ng REP RCR, RCL, ROR, ROL (quay vi s m byte) SHR, SAR, SAL (dch vi s m byte) MUL, IMUL (ton hng ngun kch thc word) DIV, IDIV (ton hng ngun kch thc word)
AX (ACC Accumulator): thanh ghi tch lu BX (Base): thanh ghi c s CX (Count): m DX (Data): thanh ghi d liu
T chc CPU
nh v thng qua thanh ghi SS. Thanh ghi on thm c th s dng nh a ch cc ton hng, d liu, b nh v cc phn t khc ngoi on d liu v stack hin hnh.
OF (Overflow - trn): OF = 1 xc nh trn s hc, xy ra khi kt qu vt ra ngoi phm vi biu din DF (Direction- hng): xc nh hng chuyn chui, DF = 1 khi CPU lm vic vi chui theo th t t phi sang tri v ngc li. IF (Interrupt - ngt): cho php hay cm cc ngt c mt n. TF (Trap - by): t CPU vo ch tng bc, dng cho cc chng trnh g ri (debugger). SF (Sign - du): dng ch cc kt qu s hc l s dng (SF = 0) hay m (SF = 1). ZF (Zero): = 1 nu kt qu ca php ton trc l 0. AF (Auxiliary nh ph): dng trong cc s thp phn ch nh t na byte thp hay mn t na byte cao. PF (Parity): PF = 1 nu kt qu ca php ton l c tng s bit 1 l chn (dng kim tra li truyn d liu) CF (Carry): CF = 1 nu c nh hay mn t bit cao nht ca kt qu. C ny cng dng cho cc lnh quay.
4. Phn on b nh
Ta bit rng d 8086 l CPU 16 bit (c bus d liu 16 bit) nhng vn dng b nh theo cc byte. iu ny cho php CPU lm vic vi byte cng nh word, n rt quan trng trong giao tip vi cc thit b I/O nh my in, thit b u cui v modem (chng c thit k chuyn d liu m ho ASCII 7 hay 8 bit). Ngoi ra, nhiu m lnh ca 8086/8088 c chiu di 1 byte nn cn phi truy xut c cc byte ring bit c th x l cc lnh ny. 8086/8088 c bus a ch 20 bit nn c th cho php truy xut 220 = 1048576 a ch b nh khc nhau. thc hin c 16 bit t b nh, 8086 s thc hin c ng thi byte c a ch l v byte c a ch chn. Do , 8086 t chc b nh thnh cc bank chn v l.
GV: Phm Hng Kim Khnh Trang 40
T chc CPU
Theo hnh 2.6, ta c th thy rng cc word lun bt u ti a ch chn nhng ta vn c th c word c a ch l bng cch thc hin 2 chu k c b nh: mt chu k c byte thp v mt chu k c byte cao nhng iu ny lm chm tc x l. i vi 8088 th do bus d liu 8 bit nn d word c a ch chn hay l, n cng cn phi thc hin 2 chu k c hay ghi b nh v giao tip vi b nh nh mt bank.
Byte 1048575 Word 524287 Byte 1048574
Byte 2 Byte 0
Byte 3 Byte 1 c ln 2 c ln 1
Hnh 2.7 c word a ch chn v a ch l Ngoi ra b nh cng chia thnh 16 khi, mi khi c kch thc 64 KB, bt u a ch 00000h v kt thc FFFFFh. a ch bt u mi khi s tng ln 1 s hex c ngha nhiu nht khi thay i t khi ny sang khi kia. V d nh khi 00000h 10000h 20000h
GV: Phm Hng Kim Khnh Trang 41
T chc CPU
FFFFFh F0000h
FFFFFh FFFFBh
D tr Dnh ring
Hnh 2.8 Bng b nh cho 8086/8088 8086/8088 nh ngha 4 khi b nh 64KB: on m (code segment) gi cc m lnh chng trnh, on ngn xp (stack segment) lu cc a ch s tr v t cc chng trnh con (subroutine) hay trnh phc v ngt (interrupt subroutine), on d liu (data segment) lu tr d liu cho chng trnh v on thm (extra segment) thng dng cho cc d liu dng chung. Cc thanh ghi on (CS, DS, SS v ES) dng ch v tr nn ca mi on. Cc thanh ghi ny c 16 bit trong khi a ch b nh l 20 bit nn xc dnh v tr b nh, ta s thm 4 bit 0 vo cc bit thp ca thanh ghi on. Gi s nh thanh ghi CS cha gi tr 1111h th n s ch ti a ch nn l 11110h. Ch rng a ch bt u mt on khng th tu m phi bt u ti mt a ch chia ht cho 16. Ngha l 4 bit thp phi l 0. Ta cng ch rng 4 on c th khng tch ri nhau m chng lp ln nhau v ta cng c th cho 4 gi tr ca cc thanh ghi on bng nhau ngha l 4 on ny trng nhau. VD: Thanh ghi DS c gi tr l 1000h th a ch nn l 10000h. a ch kt thc tm c bng cch cng a ch nn vi gi tr FFFFh (64K) a ch kt thc l 10000h + FFFFh = 1FFFFh. Nh vy on d liu c a ch t 10000h 1FFFFh. Cc v tr b nh khng c nh ngha trong cc on hin hnh khng th truy xut c. Mun truy xut n cc v tr , ta phi nh ngha li mt trong cc thanh ghi on sau cho on phi cha v tr . Nh vy, ti mt thi im bt k ta ch c th truy xut ti a 4 64 KB = 256 KB b nh. Ni dung ca cc thanh ghi on ch c th xc nh thng qua phn mm.
Trang 42
T chc CPU
VD: Gi s cc thanh ghi on c cc gi tr CS = 2800h, DS = E000h, SS = 2900h v ES = 1000h. Ta c v tr cc on trong bng b nh nh sau:
EFFFFh on d liu E0000h
Hnh 2.9 V tr cc phn on theo gi tr cc thanh ghi on a ch logic v a ch vt l: Cc a ch trong mt on thay i t 0000h FFFFh, tng ng vi chiu di on l 64 KB. Mt a ch trong mt on c gi l a ch logic hay offset. V d nh a ch logic 0010h ca on m trong hnh 2.9 s c a ch tht s l 28000h + 0010h = 28010h. a ch ny gi l a ch vt l. a ch vt l chnh l a ch tht s xut hin bus a ch, n c chiu di 20 bit cn a ch logic l lch (offset) t v tr 0 ca mt on cho trc. VD: Gi s xt cc on nh hnh 2.9. a ch vt l tng ng vi a ch logic 1000h trong on stack l: 29000h + 1000h = 2A000h a ch vt l tng ng vi a ch logic 2000h trong on m l: 28000h + 2000h = 2A000h Ta thy rng c th a ch vt l trng nhau khi a ch logic khc nhau ngha l mt a ch vt l c th c nhiu a ch logic khc nhau. ch a ch logic 1000h trong on m, ta dng k hiu CS:1000h. Tng t nh vy cho cc on khc, ngha l a ch logic 1111h trong on d liu s l DS:1111h. Mi lnh tham chiu b nh s c mt thanh ghi on mc nhin. Thanh ghi IP cung cp a ch offset khi truy xut n on m v BP cho on stack. V d nh IP = 1000h v CS = 2000h th BIU s truy xut n a ch 20000h + 1000h = 21000h v nhn byte ti v tr ny.
Trang 43
T chc CPU
Tham chiu b nh Nhn lnh Tc v stack D liu tng qut Ngun ca string ch ca string BX dng lm con tr BP dng lm con tr
on mc nhin CS SS DS DS ES DS SS
VD: Ta s dng lnh MOV [BP],AL vi BP = 2C00h. y BP dng lm con tr nn dng on stack. Gi s cc phn on nh hnh 2.9 th a ch vt l s l 29000h + 2C00h = 2BC00h
5. Cch m ho lnh
Lnh ca CPU s biu din bng cc k t di dng gi nh (mnemonic) c th d dng s dng. i vi CPU th cc lnh c biu din bng cc m lnh (opcode) nn sau khi nhn lnh CPU phi thc hin gii m lnh ri mi thc thi n. Mt lnh CPU c th di 1 byte hay nhiu byte. Nu ta dng 1 byte m ho th s m ho c 256 lnh khc nhau. Tuy nhin do mt lnh khng phi ch c mt cch thc hin nn ta khng th thc hin n gin nh trn. tm hiu cch m ho lnh, ta xt lnh MOV des,src dng chuyn d liu gia hai thanh ghi hay mt nh v mt thanh ghi. Lnh MOV m ho nh sau:
Byte 1 Byte 2 Byte 3 Byte 4
1 0
Opcode
m ha lnh MOV, ta cn dng t nht l 2 byte trong 6 bit dng cho m lnh. Bit D xc nh hng truyn ca d liu, D = 0 xc nh d liu s i t thanh ghi cho bi 3 bit Reg, D = 1 xc nh d liu s i n thanh ghi cho bi 3 bit Reg. Bit W xc nh s truyn 1 byte (W = 0) hay 1 word (W = 1). 3 bit Reg dng chn thanh ghi s dng: M 000 001 010 011 100 101 110 111
GV: Phm Hng Kim Khnh
T chc CPU
2 bit mod v 3 bit R/M (Register / Memory) dng xc nh ch a ch cho cc ton hng ca lnh. MOD R/M 000 001 010 011 100 101 110 111 00 [BX]+[SI] [BX]+[DI] [BP]+[SI] [BP]+[DI] [SI] [DI] addr16 [BX] 01 [BX]+[SI]+addr8 [BX]+[DI]+addr8 [BP]+[SI] +addr8 [BP]+[DI] +addr8 [SI] +addr8 [DI] +addr8 [BP] +addr8 [BX] +addr8 10 [BX]+[SI]+addr16 [BX]+[DI]+addr16 [BP]+[SI] +addr16 [BP]+[DI] +addr16 [SI] +addr16 [DI] +addr16 [BP] +addr16 [BX] +addr16 W=1 AX CX DX BX SP BP SI DI 11 W=0 AL CL DL BL AH CH DH BH
Tng qut, 8086/8088 c khong 300 tc v c th c trong tp lnh ca n. Mi lnh ko di t 1 n 6 byte. T v d trn, ta thy m lnh c cc vng: Vng m lnh (opcode): cha m lnh ca lnh s thc thi Vng thanh ghi (reg): cha cc thanh ghi s thc hin Vng ch (mod) Vng thanh ghi / b nh R/M (Reg/Mem)
6. Cc cch nh a ch
Cch nh a ch Tc thi M i tng B80010 V d on Hot ng truy xut M AH 10h AL 00h Trong P DX CX D AH [1000h] lieu D liu AL [SI]; AH [SI+1] D liu IP[DI+1:DI] Stack [BP][BP]+1 D liu [BX+1:BX] [BX+1:BX]-1 D liu AL [SI+6]; AH [SI+7] D liu IP[DI+7:DI+6] Stack AL[BP+2]; AH [BP+3] D liu IP[BX+3:BX+6] AL[BX+SI];AH[BX+SI+1] D liu IP[BX+DI+1:BX+DI] D liu Stack [BP+SI][BP+SI]+1 Stack [BP+DI+1:BP+DI] [BP+DI+1:BP+DI]-1
T gi nh MOV AX,1000h
Thanh ghi 8BD1 MOV DX,CX Trc tip 8A260010 MOV AH,[1000h] Gin tip 8B04 thanh ghi FF25 FE4600 FF0F C ch s 8B4406 FF6506 C nn 8B4602 FF6702 C nn v 8B00 c ch s FF21 FE02 FF0B MOV AX,[SI] JMP [DI] INC BYTE PTR [BP] DEC WORD PTR [BX] MOV AX,[SI+6] JMP [DI+6] MOV AX,[BP+2] JMP [BP+2] MOV AX,[BX+SI] JMP [BX+DI] INC BYTE PTR [BP+SI]
DEC WORD PTR [BP+DI]
Trang 45
T chc CPU
D liu
D liu INC BYTE PTR [BP+SI+5] Stack DEC WORD PTR [BP+DI+5] Stack MOVSB Thm, d liu
String
A4
(8)
(9)
BYTE PTR v WORD PTR trnh lm gia truy xut byte v word. di c cng vo thanh ghi con tr hay nn l s nh phn dng b 2. (1): ngun d liu trong lnh (2): ch v ngun l cc thanh ghi ca P (3): a ch b nh cung cp trong lnh (4): a ch b nh cung cp trong thanh ghi con tr hay ch s (5): a ch b nh l tng ca thanh ghi ch s cng vi di trong lnh (6): a ch b nh l tng ca thanh ghi BX hay BP cng vi di trong lnh (7): a ch b nh l tng ca thanh ghi ch s v thanh ghi nn (8): a ch b nh l tng ca thanh ghi ch s, thanh ghi nn v di trong lnh (9): a ch ngun b nh l thanh ghi SI trong on d liu v a ch ch b nh l thanh ghi DI trong on thm
6.1. nh a ch tc thi
Cc lnh dng cch nh a ch tc thi ly d liu trong lnh lm mt phn ca lnh. Trong cch ny, d liu s c cha trong on m thay v trong on d liu. D liu cho lnh MOV AX,1000h c cung cp tc thi sau m lnh B8. Ch rng trong m i tng byte d liu cao i sau byte d liu thp. Cch nh a ch tc thi thng dng np mt thanh ghi hay v tr b nh vi cc d liu ban u. Sau , cc lnh k tip s lm vic vi cc d liu ny. Tuy nhin, cch nh a ch ny khng s dng c cho cc thanh ghi on.
T chc CPU
AH,[1000h] s a ni dung cha trong nh DS:1000h vo thanh ghi AH hay lnh MOV [2000h],AX s a ni dung cha trong AX vo 2 nh lin tip DS:2000h v DS:2001h
Nh vy, mt di c th c cng vo thanh ghi nn v kt qu ny c cng tip vo thanh ghi ch s. a ch thu c gi l a ch hiu dng EA. Ngoi ra ta cng c th vit cch nh a ch gin tip nh sau: MOV AX,table[SI] Trong table l nhn gn cho mt v tr nh no . Lnh ny s truy xut phn t th SI trong dy table (gi s SI = 2 th s truy xut phn t th 2). Ch rng cc on mc nh cho cc cch nh a ch gin tip l on stack khi dng BP, l on d liu khi dng BX, SI hay DI. VD: Lnh: MOV AH,10h MOV AX,[BP + 10] MOV AH,[BP + SI] thc hin nh a ch tc thi thc hin nh a ch c nn thc hin nh a ch c nn v c ch s
6.5. nh a ch chui
Chui l mt dy lin tc cc byte hay word lu tr trong b nh di dng cc k t ASCII. 8086/8088 c cc lnh dng x l chui, cc lnh ny s dng cp thanh ghi DS:SI ch ngun chui k t v ES:DI ch ch chui. Lnh MOVSB s chuyn byte d liu ngun n v tr ch trong SI v DI s tng hay gim tu theo gi tr ca DF.
Trang 47