You are on page 1of 8

K thut vi x l Kenkoloi D09vt3

1. Tng qut 8086/8088

n v giao tip bus (BIU) *Bao gm: + Khi to a ch (Adder) + n v iu khin bus + Hng i lnh ( 4 bytes cho 8088 , 6bytes cho 8086) +Con tr lnh : 16 bit + Thanh ghi on: CS, DS, ES SS * chc nng: +c trc cc lnh + Thc hin tt c cc chc nng iu khin bus EU tp trung vo nhim v khc * hot ng chnh: +a ra cc tn hiu a ch + c lnh +c ghi d liu n v thi hnh (EU) *bao gm: +ALU + Cc thanh ghi: AX, BX, CX, DX, SI, DI, BP, Flag * chc nng:+ Nhn cc lnh t khi BIU +Gii m v thc thi cc lnh +X l thng tin + Lu kt qu + EU khng giao tip trc tip vi cc thnh phn bn ngoi MP

2. Tm hiu mt s thanh ghi


*thanh ghi a nng: AX: Thanh ghi lu tr. Accumulator register BX: Thanh ghi c s. Base register (used for storing address) CX: Thanh ghi m.Counter register DX: Thanh ghi d liu. Data register *Cc thanh ghi con tr v ch s SP: Stack Pointer:tr ngn xp. tr vo nh hin thi ca ngn xp trong on ngn xp ng vi SS:SP BP: Base Pointer: tr c s. tr vo 1 d liu trong on ngn xp SI : Source Index: ch s ngun. tr vo d liu trong on d liu DS vs a ch c th DS: SI DI: Destination Index: ch s ch. tr vo d liu trong on d liu DS vs a ch c th DS: DI *Thanh ghi on: CS: Code Segment Register: thanh ghi on m DS: Data Segment Register: thanh ghi on d liu SS: Stack Segment Register: thanh ghi on ngn xp ES: Extra Segment Register; thanh ghi on d liu ph on b nh Kch c 64KB Mi on c to bi cc khu vc b nh lin tc C a ch ring

Kenkoloi-d0vt3

*a ch segment: offset. ( thanh ghi on: thanh ghi lch) Cng thc: segment*16 + offset. Mc nh segment: off set nh sau: CS:IP SS: (SP or BP) DS: ( BX, SI, DI) ES: DI *Thanh ghi c:

3. Cc ch a ch
1. Ch a ch thanh ghi (register addressing mode) Dng ph bin nht ca a ch d liu S dng cc thanh ghi bn trong CPU cha d liu trong cc lnh VD: MOV AX, BX ; chuyn ni dung AX vo BX MOV AL, BL ; chuyn ni dung AL vo BL Cc thanh ghi c s dng trong mt lnh phi c cng kch c MOV AX, BX MOV AX, BL ; wrong Khng cho php di chuyn d liu gia cc thanh ghi on MOV DS, CS; wrong 2. Ch a ch tc th ( immediate addressing mode) *Di chuyn mt byte hoc t d liu t ton hng ngun trc tip ti ton hng ch *Ton hng ch l mt thanh ghi hoc mt nh *Ton hng ngun l hng s VD: MOV AX, 22h ; chuyn 22h vo thanh ghi AX MOV DS,AX ; chuyn ni dung AX vo DS do ko th chuyn trc tip hng s vo thanh ghi. MOV [BX], 22h ; chuyn 22h vo nh c a ch DS:BX MOV AL, B2h ;wrong-hexa data start with a letter MOV AL, 0B2h ; correct 3. Ch a ch trc tip ( direct addressing mode) *Di chuyn mt byte hoc mt t d liu gia mt thanh ghi v mt nh *Mt ton hng l mt hng s biu din a ch lch ca nh (trong ngoc vung) *Ton hng cn li phi l mt thanh ghi VD: MOV AL,[ 1234h] ; chuyn ni dung nh DS: 1234h vo AL MOV [4320h], CX ; chuyn ni dung CX vo 2 nh lin tip c a ch DS:4320h v DS:4321h 4. Ch a ch gin tip qua thanh ghi ( register indirect addressing mode) *Cho php d liu c a ch ha ti mt nh bt k thng qua a lch c lu trong mt thanh ghi ch s hoc c s *Mt ton hng l mt thanh ghi cha a ch lch ca nh *Ton hng cn li c th l mt hng s hoc mt thanh ghi ( ko c l nh) VD: MOV BX, 1234h ; chuyn 1234h vo BX sau chuyn ni dung nh c a ch DS:BX vo AX MOV AX, [BX] MOV [SI],CL ; chuyn ni dung CL vo nh c a ch DS:SI MOV [DI],AX ; chuyn ni dung AX vo 2 nh c a ch lin tip DS: DI v DS:( DI+1) 5. Ch a ch tng i c s ( based relative addressing mode) *Trong ch ny cc thanh ghi c s nh BX v BP v cc hng s biu din cc gi tr dch chuyn c dng tnh a ch hiu dng ca ton hng trong vng nh DS v SS. S c mt ca cc gi tr dch chuyn xc nh tnh tng i ca a ch

Kenkoloi-d0vt3

VD: MOV CX,[BX] +10 ; chuyn ni dung 2 nh lin tip DS:( BX+10) v DS: (BX+11) vo CX MOV CX,[BX+10] ; nt MOV CX,10[BX] ; nt 6. Ch a ch tng i ch s ( indexed relative addressing mode) *cc thanh ghi ch s nh DI, SI v cc hng s biu din cc gi tr dch chuyn c dng tnh a ch ca cc ton hng trong vng nh DS. VD: MOV AX,[SI]+10 ;chuyn ni dung 2 nh lin tip c a ch DS:(SI+10) v DS:(SI+11) vo AX MOV AX,[SI+10] ;nt MOV CL,[DI]+5 ;chuyn ni dung nh DS:(SI+5) vo CL 7. Ch da ch tng i ch s c s( Based indexed relative addressing mode) *kt hp 2 ch a ch ch s v c s ta c ch a ch tng i ch s c s. VD: MOV AX,[BX][SI]+8 ; chuyn ni dung 2 nh c a ch DS:(BX+SI+8) v DS:(BX+SI+9) vo AX MOV AX[BX+SI+8] ; nt MOV CL,[BP+DI+5] ; chuyn ni dung nh SS:(BP+DI+5) vo CL CC C CH THM D, VO/RA, NGT, DMA Cu 1.12 trnh by cch trao i d liu vi ngoi vi theo phng php hi vng polling ? *Ta bit rng vn iu khin nhp / xut d liu s rt n gin trong trng hp thit b ngoi vi lc no cng c th lm vic vi CPU. Ta c th v d nh b hin th Led 7 on lc no cng sn sng hin th d liu khi m CPU gi d liu ra. Tuy nhin, trong thc t, khng phi lc no CPU cng lm vic vi cc thit b ngoi vi c tnh nng nh trn. V d nh khi lm vic vi mt my in, CPU yu cu in nhng my in khng sn sang (gi s nh ht giy, kt giy, ). Khi , CPU phi kim tra xem mt thit b m n cn giao tip c sn sng hay khng nu thit b sn sng th mi thc hin trao i d liu. kim tra cc thit b ngoi vi, CPU phi s dng cc tn hiu bt tay (handshake) xc nh tun t tng thit b, xem thit b no c yu cu trao i d liu. Cc tn hiu ny ly t cc mch giao tip do ngi thit k to ra. * Gi s h thng c 2 thit b ngoi vi, nu thit b 1 c d liu cn truyn n CPU th n s gi 1 xung cht d liu ng thi to tn hiu sn sng cho thit b. Khi CPU kim tra tn hiu sn sng ca thit b 1 th n s c d liu vo t mch cht v xo tn hiu sn sng. *Trong trng hp CPU mun gi d liu ra thit b 2, n s c tn hiu sn sng ca thit b 2, nu thit b 2 c th nhn d liu th CPU s gi d liu ra mch cht v thit b 2 s c d liu vo. * xt phng php thm d u tin: Cc thit b c u tin Ti a mt thit b c phc v trong mt chu k qut C trng hp tt c cc thit b c qut trong mt chu k qut Cc thit b c u tin cao c qut trc Cc thit b c u tin thp c qut khi cc thit b c u tin cao hn c qut Chu k qut mi c bt u ngay khi mt thit b c phc v

Kenkoloi-d0vt3

Cu 1.13: Trnh by cch trao i d liu vi ngoi vi theo phng php ngt ? * Ngt? Mt s kin lm CPU dng thc thi mt chng trnh v bt u thc thi mt chng trnh khc theo yu cu ca mt thit b Cc yu cu xut pht t cc thit b vo ra (Yu cu ngt) Chng trnh c thc thi trong thi gian ngt gi l th tc ngt * Cc th tc ngt? M chng trnh lu trong ROM Mi th tc ngt c mt chc nng nht nh * Khi no CPU kim tra ngt? Trong thc t ngi ta rt mun tn dng kh nng ca CPU lm thm nhiu cng vic khc na, ch khi no c yu cu trao i d liu th mi yu cu CPU tm dng cng vic hin ti trao i d liu. * Phn loi ngt: Ngt cng: c kch hot bi thnh phn phn cng thong qua cc chn NMI v INTR bao gm: +Non-Maskable Interrupt (e.g. Reset) +INTR (Maskable Interrupt Ngt mm: c kch hot bi chng trnh bng cch gi lnh ngt INT <N> Ngt ngoi l: Gy khi c li xy ra trong CPU: + Divide by zero +Overflow Cc thao tc c bn cho 1 ln ngt: 1. Nu mt thit b vo ra mun trao i d liu vi CPU, n gi mt yu cu ngt ti chn INTR ca CPU 2. Khi nhn c yu cu ngt, CPU thc hin: a) Hon thnh lnh hin ti ca chng trnh chnh b) Lu ni dung ca thanh ghi c vo ngn xp c) Xa IF v TF d) Lu ni dung ca CS v IP vo ngn xp e) Gi xc nhn ngt ra thit b vo ra thng qua chn INTA 3. Khi nhn xc nhn ngt t CPU, cc thit b vo ra gi m hiu ngt N ti CPU 4. Khi nhn c m hiu ngt, CPU c a ch ca th tc ngt t bng vc t ngt 5. Lu a ch ca chng trnh ngt vo CS v IP, thc hin th tc ngt: a) Lu ni dung ca cc thanh ghi cng dng chung vo ngn xp b) Thc th m lnh ca chng trnh ngt trao i d liu c) Khi phc ni dung cc thanh ghi cng dng chung 6. IRET kt thc th tc ngt, CPU thc hin: a) Khi phc ni dng ca CS v IP t ngn xp b) Khi phc ni dung ca thanh ghi c c) Thit lp IF vTF 7. Thc thi lnh tip theo ca chng trnh chnh. * Cc mc u tin ca cc ngt (t mc thp nht n mc cao nht): - Ngt thc hin chy tng lnh (INT 1) - Ngt che c INTR - Ngt khng che c NMI - Ngt ni b (INT 0: xy ra do php chia s 0, ngt mm) Cu hi 1.14: Trnh by cch trao i d liu vi ngoi vi theo phng php DMA ? Trong cc phng thc trao i d liu bng thm d, ngt th vic trao i d liu gia thit b ngoi vi v h thng thng theo trnh t sau: t ngoi vi n vi x l ri i vo b nh hay t b nh n vi x l ri ghi ra ngoi vi. Trong thc t s c trng hp ta cn thc hin trao i d liu ngay gia ngoi vi v b nh. Khi

Kenkoloi-d0vt3

ngi ta a ra c ch truy xut b nh trc tip (DMA). thc hin c vn ny, cc h vi x l thng thng dng thm cc mch chuyn dng iu khin qu trnh truy xut b nh trc tip (DMAC Direct Memory Access Controller). * C tt c 3 cch hot ng: Tn dng thi gian CPU khng dng bus: Ta phi dng thm mch pht hin cc chu k x l ni ca CPU v tn dng cc chu k ny thc hin trao i d liu. Treo CPU trao i tng byte: CPU khng b treo trong khong thi gian di m ch b treo trong thi gian ngn trao i 1 byte d liu gia b nh v ngoi vi. Do , cng vic ca CPU khng b gin on m ch b chm i. Treo CPU mt khong thi gian trao i mt khi d liu: Trong c ch ny, CPU b treo trong sut qu trnh trao i d liu. - CPU ghi t lnh v t ch lm vic vo DMAC. - Khi thit b ngoi vi c yu cu trao i d liu, n gi tn hiu DRQ = 1 (DMA Request) n DMAC. - DMAC gi tn hiu HRQ (Hold Request) n chn HOLD ca CPU yu cu treo CPU. Tn hiu ny s gi mc cao cho n ht qu trnh trao i d liu. - Sau khi nhn yu cu treo, CPU s thc hin ht chu k bus ca m?nh ri treo cc bus v gi tn hiu HLDA (Hold Acknowledge) bo cho DMAC bit c th s dng cc bus. - DMAC chuyn d liu t b nh n ngoi vi bng cch: a a ch byte u tin ra bus a ch v a tn hiu MEMR c 1 byte t b nh, k tip DMAC a tn hiu IOW ghi d liu ra ngoi vi. Sau , DMAC gim s byte cn truyn, cp nht a ch b nh v lp li qu trnh cho n khi ht byte cn truyn.

GII M A CH ( T HC)

LP TRNH HP NG : Bi ton tt chng trnh nu nhit >65 : Code : ; kenkoloi d09vt3 ; chuong trinh chay lo dot >65 thi tat tat: mov al,0

Kenkoloi-d0vt3

out 127,al bat: mov al,1 out 127,al start: in al, 125 cmp al, 65 jbe start mov al,0 out 127,al int 21h ; neu chay qua 65 do cac ban dieu chinh step delay ms:= 1 ; code la chinh xac.

Bi ton chy l t lun khong 65t95 Code : ;kenkoloi d09vt3 ; code chay lien tuc nhiet do 65=<t=<95 mov al,00h mov al,01h out 127,al lap: in al,125 cmp al,65 jg lap1: mov al,01h out 127,al lap1: cmp al,95 jl lap2: mov al,00h out 127,al lap2: jmp lap: ; cac ban de step delay ms:=1 do tinh tre cua software

Bi ton chy ng c bc chy tin : ; kenkoloi d09vt3 ; chuong trinh dong co buoc chay tien 100% nhan: mov al,4 out 7,al

Kenkoloi-d0vt3

mov al,6 out 7,al mov al,2 out 7,al mov al,3 out 7,al mov al,1 loop nhan ; cac ban dat step delay ms:=100

Lm thm mt s bi 2 im Lu : mnh gii trn phn mm emu8086. Cc bn c th vit cu lnh bm run. ri chy single step. Chy ht cc cu lnh ri xem thanh ghi cn tm gi tr l bao nhiu l ok !
Cu 2.2 : Cu trc lnh : mov ax,2344 mov ds,ax mov bx,56 mov 15[bx],al p n : nh (BX +0FH)=047H. Vy a ch vt l : DS :(BX+0FH) ~ 09280H + 47H = 092C7H Cu 2.3 Cu trc lnh : mov ax,4423 mov ds,ax mov si,23 mov al,[si]+16 p n : nh (SI+010H) =027H. vy a ch vt l : DS :(SI+010H) ~ 11470H +027H= 11497H Cu 2.4 Cu trc lnh : mov ax,4498h mov ds,ax mov di,6ah mov [di+35],cl p n : nh (SI+023H)=08DH. Vy a ch vt l : DS :(SI+023H) ~ 44980H + 08DH = 44A0DH cu 2.5 cu trc lnh : mov ax,44f8h mov ds,ax mov bx,15h mov si,10h mov al,[bx][si]+10h p n : nh (BX+SI +010H)=035H.

Kenkoloi-d0vt3

vy a ch vt l : DS :(BX+SI+010H) ~ 44F80H + 035H=44FB5H cu 2.6 cu trc lnh : mov ax,44f8h mov bx,1010h mov ds,bx mov ax,[1234h] p n : 2 nh lin tip c gn cho thanh ghi AX c a ch vt l : DS:[1234h] ~ 10100H + 1234H=11334H DS :[1235h] ~ 10100H + 1235H=11335H Cu 2.7 Cu trc lnh : mov cx,1010h mov si,2345 mov ds,cx mov cl,[si] p n : nh [SI]=0929H vy a ch vt l : DS :SI~ 10100H + 0929H=10A29H Cu 2.8 Cu trc lnh : mov cx,1010h mov bp,2345h mov ss,cx mov al,[bp]+5 p n : nh (BP+05H)=2350H Vy a ch vt l : SS :(BP+05H) ~ 10100H + 2350H=12450H

Kenkoloi-d0vt3

You might also like