8/14/2019 Lap%20trinh%20he%20thong
1/130
Bch Khoa Online
Giao lu - Hc hi - Chia s kinh nghim
ca cc th h sinh vin Bch Khoa
hutonline.net
http://hutonline.net/http://hutonline.net/8/14/2019 Lap%20trinh%20he%20thong
2/130
Ti liu Lp trnh hthng Chng 1
Phm Hng Kim Khnh Trang 1
Chng 1KIN TRC V HOT NG CA H VI X L /
MY TNH
1. Cu trc lun lMy tnh s (Digital computer) l my gii quyt cc vn bng cch thc hin
cc ch th do con ngi cung cp. Chui cc ch th ny gi l chng trnh (program).Cc mch in t trong mt my tnh s s thc hin mt s gii hn cc ch thn gincho trc. Tp hp cc ch th ny gi l tp lnh ca my tnh. Tt c cc chng trnhmun thc thi u phi c bin i sang tp lnh trc khi c thi hnh. Cc lnh cbn l:
- Cng 2 s.- So snh vi 0.- Di chuyn d liu.
Tp lnh ca my tnh to thnh mt ngn ng gip con ngi c th tc ng lnmy tnh, ngn ng ny gi l ngn ng my (machine language). Tuy nhin, hu ht ccngn ng my u n gin nn thc hin mt yu cu no , ngi thit k phithc hin mt cng vic phc tp. l chuyn cc yu cu ny thnh cc ch th c chatrong tp lnh ca my. Vn ny c th gii quyt bng cch thit k mt tp lnh mithch hp cho con ngi hn tp lnh ci t sn trong my (built-in). Ngn ng mysc gi l ngn ng cp 1 (L1) v ngn ng va c hnh thnh gi l ngn ng cp2 (L2).
Tuy nhin, trong thc t, c th thc hin c, cc ngn ng L1 v L2 khngc khc nhau nhiu. Nh vy, ngn ng L2 cng khng tht s gip ch nhiu chongi thit k. Do , mt tp lnh k tip c hnh thnh s hng v con ngi nhiuhn l my tnh, tp lnh ny s to thnh mt ngn ng v ta gi l ngn ng L3. Ta cth vit cc chng trnh trong L3 nh l tn ti my tnh s dng ngn ng L3 (myo L3). Cc chng trnh ny sc dch sang ngn ng L2 v c thc thi bng mtchng trnh dch L2.
Vic xy dng ton b chui cc ngn ng, mi ngn ngc to ra s thch hphn ngn ng trc s c th tip tc cho n khi nhn c ngn ng thch hp nht.
S mt my o n cp c th biu din nh sau:
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
3/130
Ti liu Lp trnh hthng Chng 1
Phm Hng Kim Khnh Trang 2
Mt my tnh s c n cp c th xem nh c n-1 my o khc nhau, mi my o cmt ngn ng my ring. Cc chng trnh vit trn cc my o ny khng th thc thitrc tip m phi dch thnh cc ngn ng my cp thp hn. Ch c my tht dng ngnng my L1 mi c th thc thi trc tip bng cc mch in t. Mt lp trnh vin sdng my o cp n khng cn bit tt c cc trnh dch ny. Chng trnh trong my ocp n sc thc thi bng cch dch thnh ngn ng my cp thp hn v ngn ng myny sc dch thnh ngn ng my thp hn na hay dch trc tip thnh ngn ngmy L1 v thc thi trc tip trn cc mch in t.
Cp n
Cp 3
Cp 2
Cp 1
My o Mn dng ngnng my Ln
Chng trnh trong Ln c dch thnhngn ng ca my cp thp hn
My o M3 dng ngnng my L3
Chng trnh trong L3 c dch thnhngn ng L2 hay L1
My o M2 dng ngn
ng my L2
Chng trnh trong L2 c dch thnh
ngn ng my L1
My tnh s M1 dngngn ng my L1
Chng trnh trong L1 c thc thi trctip bng cc mch in t
Hnh 1.1. My o n cp
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
4/130
Ti liu Lp trnh hthng Chng 1
Phm Hng Kim Khnh Trang 3
V cbn, my tnh gm c 6 cp:
Cp 0 chnh l phn cng ca my tnh. Cc mch in t ca cp ny s thc thicc chng trnh ngn ng my ca cp 1. Trong cp logic s, i tng quan tm l cccng logic. Cc cng ny c xy dng t mt nhm cc transistor.
Cp 1 l cp ngn ng my tht s. Cp ny c mt chng trnh gi l vi chngtrnh (microprogram), vi chng trnh c nhim v thng dch cc ch th ca cp 2. Hu
ht cc lnh trong cp ny l di chuyn d liu t phn ny n phn khc ca my haythc hin vic mt s kim tra n gin.
Mi my cp 1 c mt hay nhiu vi chng trnh chy trn chng. Mi vi chngtrnh xc nh mt ngn ng cp 2. Cc my cp 2 u c nhiu im chung ngay c ccmy cp 2 ca cc hng sn xut khc nhau. Cc lnh trn my cp 2 c thc thi bngcch thng dch bi vi chng trnh m khng phi thc thi trc tip bng phn cng.
Cp th 3 thng l cp hn hp. Hu ht cc lnh trong ngn ng ca cp myny cng c trong ngn ng cp 2 v ng thi c thm mt tp lnh mi, mt t chc b
Cp 5 Cp ngn ng hng vn
Dch (chng trnh dch)
Cp 4 Cp ngn ng hp dch
Dch (hp dch)
Cp 3 Cp hiu hnh
Dch 1 phn (hiu hnh)
Cp 2 Cp my quy c
Thng dch (vi chng trnh)
Cp 1 Cp vi lp trnh
Vi chng trnh (phn cng)
Cp 0 Cp logic s
Hnh 1.2 Cc cp trn my tnh s
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
5/130
Ti liu Lp trnh hthng Chng 1
Phm Hng Kim Khnh Trang 4
nhkhc v kh nng chy 2 hay nhiu chng trnh song song. Cc lnh mi thm vosc thc thi bng mt trnh thng dch chy trn cp 2, gi l hiu hnh. Nhiulnh cp 3 c thc thi trc tip do vi chng trnh v mt s lnh khc c thng dchbng hiu hnh (do , cp ny l cp hn hp).
Cp 4 tht s l dng tng trng cho mt trong cc ngn ng. Cp ny cung cpmt phng php vit chng trnh cho cc cp 1, 2, 3 d dng hn. Cc chng trnhvit bng hp ngc dch sang cc ngn ng ca cp 1, 2, 3 v sau c thng dchbng cc my o hay thc tng ng.
Cp 5 bao gm cc ngn ngc thit k cho ngi lp trnh nhm gii quytmt vn c th. Cc ngn ng ny c gi l cp cao. Mt s ngn ng cp cao nhBasic, C, Cobol, Fortran, Lisp, Prolog, Pascal v cc ngn ng lp trnh hng i tngnh C++, J++, Cc chng trnh vit bng cc ngn ng ny thng c dch sangcp 3 hay 4 bng cc trnh bin dch (compiler).
2. Giao tip ngoi vi
Ta phn bit tt c 3 phng php xut / nhp d liu:- Nhp / xut bng cch hi trng thi ca thit b ngoi vi (polling)- Nhp / xut bng ngt (interrupt).- Nhp / xut bng cch truy xut trc tip vo b nhdng cc phn cng ph
tr(DMA).
2.1.Nhp / xut dliu bng cch hi vng (polling)
Ta bit rng vn iu khin nhp / xut d liu s rt n gin trong trng hpthit b ngoi vi lc no cng c th lm vic vi P. Ta c th v d nh b hin th Led7 on lc no cng sn sng hin th d liu khi m P gi d liu ra. Tuy nhin, trong
thc t, khng phi lc no P cng lm vic vi cc thit b ngoi vi c tnh nng nhtrn. V d nh khi lm vic vi mt my in, P yu cu in nhng my in khng sn sng(gi s nh ht giy, kt giy, ). Khi , P phi kim tra xem mt thit b m n cngiao 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, P phi s dng cc tn hiu bt tay (handshake) xcnh tun t tng thit b, xem thit b no c yu cu trao i d liu. Cc tn hiu nyly 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 Pth n s gi 1 xung cht d liu ng thi to tn hiu sn sng cho thit b. Khi P
kim tra tn hiu sn sng ca thit b 1 th n sc d liu vo t mch cht v xo tnhiu sn sng.
Trong trng hp P mun gi d liu ra thit b 2, n sc tn hiu sn sng cathit b 2, nu thit b 2 c th nhn d liu th P s gi d liu ra mch cht v thit b 2sc d liu vo.
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
6/130
Ti liu Lp trnh hthng Chng 1
Phm Hng Kim Khnh Trang 5
2.2.Ngt v xl ngt
Trong cch thc thc hin trao i d liu bng cch hi vng nh trn, trc khitin hnh thc hin th P phi kim tra trng thi sn sng ca thit b ngoi vi. Tuynhin trong thc t ta cn phi tn dng kh nng ca P lm cc cng vic khc mkhng phi tn thi gian kim tra thit b, ch khi no c yu cu trao i d liu th mi
tm dng cng vic hin ti. Cch lm vic nh vy gi l ngt P, khi c mt ngt xy rath ta phi thc hin gi cc chng trnh phc v ngt ti cc a ch xc nh ca P.Cc tn hiu ngt t thit b ngoi vi a vo P thng qua cc chn NMI hay INTR.
2.2.1. Cc loi ngt
Ngt cng: l cc yu cu ngt t cc chn NMI hay INTR.Ngt cng NMI l ngt khng che c cn ngt cng INTR c th che c. Cc
lnh CLI (Clear Interrupt) v STI (Set Interrupt) chnh hng n vic P c chp nhnyu cu ngt ti chn INTR hay khng. Yu cu ngt ti chn INTR c th c cc kiungt t 00h FFh. Kiu ngt ny sc a vo bus d liu P xc nh kiu ngt(dng cho cc thit b ngoi vi khc nhau).
Ngt mm: l cc ngt thc hin bng phn mm tc ng do ngi s dng.2.2.2. p ng ca P khi c yu cu ngt
Khi c yu cu ngt n P v nu c php ngt, P s thc hin cc cng vicsau:
- [SP] SP 2, [SP] FR (Flag Register): ct thanh ghi cvo stack.- IF 0, TF 0: khng cho thc hin cc ngt khc.- SP SP 2, [SP] CS: ct a chon m vo stack.- SP SP 2, [SP] IP: ct a ch trv sau khi phc v ngt
74LS245
23456789
191
1817161514131211
A1
A2A3A4A5A6A7A8
GDIR
B1
B2B3B4B5B6B7B8
INT2INT1
INT7
INT5
VCC
INT6
INT4
INT0
1234
56
1112
8
INT3
8086
123456789
10111213141516
17181920 21
222324
25262728293031323334353637383940
GNDAD14AD13AD12AD11AD10AD9AD8AD7AD6AD5AD4AD3AD2AD1
AD0NMIINTRCLKGND RESET
READYTEST
INTA (QS1)ALE (QS0)
DEN (S0)DT/R (S1)IO/M (S2)
WR (LOCK)HLDA (RQ/GT1)HOLD (RQ/GT0)
RDMN/MX
BHE/S7A19/S6A18/S5A17/S4A16/S3
AD15VCC
Hnh 1.3 Kt ni ngt n gin
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
7/130
Ti liu Lp trnh hthng Chng 1
Phm Hng Kim Khnh Trang 6
- IP [S_hiu_ngt*4], CS [S_hiu_ngt*4 + 2]: ly lnh ti a ch phcv ngt tng ng
- Sau khi kt thc chng trnh con phc v ngt (khi gp lnh IRET):+ IP [SP], SP SP + 2
+ CS [SP], SP SP + 2: ly li a ch trc khi gi chng trnh phc v
ngt+ FR [SP], SP SP + 2: ly li gi tr thanh ghi c
2.2.3. Xl u tin ngt
Nh ta bit trn, khi P ang thc hin lnh, nu c ngt xy ra th P s tmngng chng trnh v thc thi chng trnh con phc v ngt. Trong thc t s c trnghp c nhiu yu cu ngt khc nhau cng mt lc, khi P s phc v cho ngt theoth tu tin vi nguyn tc l ngt no c mc u tin cao nht th s phc v cho ngt trc.
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)
2.3.Nhp / xut dliu bng DMA (Direct Memory Access)
Trong cc phng thc trao i d liu nh hai phn trn trnh by th vic traoi d liu gia thit b ngoi vi v h thng thng theo trnh t sau: tngoi vin vixl rii vo b nhhay tb nhn vi xl ri ghi ra ngoi vi. Trong thc t sc trng hp ta cn thc hin trao i d liu ngay gia ngoi vi v b nh. Khi ngi ta a ra cch truy xut b nhtrc tip (DMA). thc hin c vn ny,cc h vi x l thng thng dng thm cc mch chuyn dng iu khin qu trnhtruy 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 CPUtrao 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 nhv ngoi vi. Do , cng vic ca CPU khng bgin on m ch b chm i.
Treo CPU mt khong thi gian trao i mt khi dliu:Trong cch 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.
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
8/130
Ti liu Lp trnh hthng Chng 1
Phm Hng Kim Khnh Trang 7
- DMAC gi tn hiu HRQ (Hold Request) n chn HOLD ca CPU yu cutreo CPU. Tn hiu ny s gimc 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 treocc bus v gi tn hiu HLDA (Hold Acknowledge) bo cho DMAC bit cth s dng cc bus.
- DMAC chuyn d liu t b nhn ngoi vi bng cch: a a ch byte utin ra bus a ch v a tn hiu MEMR c 1 byte t b nh, k tipDMAC a tn hiu IOW ghi d liu ra ngoi vi. Sau , DMAC gim sbyte cn truyn, cp nht a ch b nhv lp li qu trnh cho n khi htbyte cn truyn.
Hnh 1.4 Giao tip DMAC vi h vi x l
Hai tn hiu dng yu cu treo v chp nhn yu cu treo CPU dng cho cchDMA l HOLD v HLDA c th m t nh sau:
Hnh 1.5 Tn hiu HOLD v HLDA
P
DMAC
HRQ
HACK
HOLD
HLDA
I/O
DRQ
DACK
DRQ
DACK
Memory
Address bus
Data bus
Control bus
CLK
HOLD
HLDA
T4 hay T1
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
9/130
Ti liu Lp trnh hthng Chng 1
Phm Hng Kim Khnh Trang 8
3. Bus
Hnh 1.6 - Cc bus trong mt h thng my tnh
Bus l ng truyn tn hiu in ni cc thit b khc nhau trong mt h thngmy tnh. Bus thng c t 50 n 100 dy dn c gn trn mainboard, trn cc dyny c cc u ni a ra, cc u ny c sp xp v cch nhau nhng khong quynh c th cm vo nhng I/O board hay board b nh (bus h thng systembus).
Cng c nhng bus dng cho mc ch chuyn bit, th d ni 1 vi x l vi 1 haynhiu vi x l khc hoc ni vi b nhcc b (local bus).
Trong vi x l cng c mt s bus ni cc thnh phn bn trong ca b vi x lvi nhau. Ngi thit k chip vi x l c th tu la chn loi bus bn trong n, cn vicc bus lin h bn ngoi cn phi xc nh r cc quy tc lm vic cng nh cc cim k thut vin v ckh ca bus ngi thit k mainboard c th ghp ni chipvi x l vi cc thit b khc. Ni cch khc, cc bus ny phi tun theo 1 chun no .Tp cc quy tc ca chun cn c gi l giao thc bus (bus protocol)
Thng c nhiu thit b ni vi bus, mt s thit b l tch cc (active) c thihi truyn thng trn bus, trong khi c cc thit b thng chyu cu t cc thit bkhc. Cc thit b tch cc c gi l ch (master) cn thit b thng l t(slave).
V d: Khi CPU ra lnh cho biu khin a c/ghi mt khi d liu th CPU lmaster cn biu khin a l slave. Tuy nhin, biu khin a ra lnh cho b nhnhn d liu th n li gi vai tr master.
CPURegisters
ALU
ng x l
Memory
board
I/O
board
Bus cc b(local bus)
Bus ni (on-chip bus)
Bus h thng (system bus)
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
10/130
Ti liu Lp trnh hthng Chng 1
Phm Hng Kim Khnh Trang 9
3.1.Bus Driver v Bus Receiver
Tn hiu in trong my tnh pht ra thng khng iu khin bus, nht lkhi bus kh di v c nhiu thit b ni vi n. Chnh v th m hu ht cc bus masterc ni vi bus thng qua 1 chip gi l bus driver, v cbn n l mt b khuch i tnhiu s. Tng t nh vy, hu ht cc slave c ni vi bus thng qua bus receiver.i vi cc thit b khi th ng vai tr master, khi th ng vai tr slave, ngi ta sdng 1 chip kt hp gi l transceiver. Cc chip ny ng vai tr ghp ni v l cc thitb 3 trng thi, cho php n c thtrng thi th 3 hmch (th ni).
Ging nh vi x l, bus c cc ng a ch, ng s liu v ng iu khin.Tuy nhin, khng nht thit c nh x 1 1 gia cc tn hiu cc chn ra ca vi x l vcc ng dy ca bus. Th d: mt s chp vi x l c 3 chn ra, truyn ra cc tn hiubo chp vi x l ang thc hin cc thao tc MEMR , MEMW , IOR , IOW hay thaotc khc. Mt bus in hnh thng c 4 ng trn.
Cc vn quan trng nht lin quan n thit k bus l: xung clock bus (s phnchia thi gian, hay cn gi l bus blocking), cch phn x bus (bus arbitration), x lngt v x l li.
Cc bus c thc chia theo giao thc truyn thng thnh hai loi ring bit lbus ng b v bus khng ng b ph thuc vo vic s dng clock bus.
3.2.Bus ng b (Synchronous bus)
Mi chu k bus bt u bng vic xut a ch b nhhoc I/O port (chu k xungnhp T1). Bus iu khin c 4 tn hiu tc ng mc thp lMEMR , MEMW , IOR vIOW .
Cc chui skin xy ra trong mt chu k bus c b nh:
T1: P xut a ch b nh 20 bit. Cc ng d liu khng hot ng v ccng iu khin b cm
T2: ng iu khin MEMR xung mc thp. n v b nhghi nhn chu kbus ny l qu trnh c b nhv t byte hay word c a ch ln data bus.
T3: P t cu hnh cc ng data bus l nhp. Trng thi ny ch yu bnhc thi gian tm kim byte hay word d liu
T4: P i d liu trn data bus. Do , n thc hin cht data bus v gii phngcc ng iu khin c b nh. Qu trnh ny s kt thc chu k bus.
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
11/130
Ti liu Lp trnh hthng Chng 1
Phm Hng Kim Khnh Trang 10
Hnh 1.7 nh th chu k bus ng b
Trong mt chu k bus, P c th thc hin c I/O, ghi I/O, c b nhhay ghi b
nh. Cc ng address bus v control bus dng xc nh a ch b nhhay I/O vhng truyn d liu trn data bus.
Ch rng P iu khin tt c cc qu trnh trn nn b nhbt buc phi cungcp c d liu vo lc MEMR ln mc cao trong trng thi T4. Nu khng, P scd liu ngu nhin khng mong mun trn data bus. gii quyt vn ny, ta c thdng thm cc trng thi ch(wait state).
Truyn theo khi:Ngoi cc chu kc/ghi, mt s bus truyn d liu ng b cn h trtruyn d
liu theo khi. Khi bt u thao tc c khi, bus master bo cho slave bit s byte cn
c truyn i, th d truyn con s ny i trong chu k T1, sau ng l truyn i 1byte, slave a ra trong mi chu k 1 byte cho ti khi s byte c thng bo. Nhvy, khi c d liu theo khi, n byte d liu cn n+2 chu k clock ch khng phi 3nchu k.
Mt cch khc cho truyn d liu nhanh hn l gim chu k. Tuy nhin, gimchu k bus dn n kh khn v mt k thut, cc tn hiu truyn trn cc ng khcnhau khng phi lun c cng tc , dn n hiu ng bus skew. iu quan trng l thi
T1 T2 T3 T4
a ch
a ch
D liu vo
D liu ra
Clk
Address
bus
Data bus
IOR hay
MEMR
Address
bus
Data bus
IOW hayMEMW
Ghi b
nhhayI/O
c bnhhay
I/O
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
12/130
Ti liu Lp trnh hthng Chng 1
Phm Hng Kim Khnh Trang 11
gian chu k phi di hn so vi skew trnh vic nhng khong thi gian c s holi trthnh cc i lng bin thin lin tc.
3.3.Bus bt ng b( Asynchronous bus)
Bus bt ng b khng s dng xung clockng b, chu k ca n c th ko ditu v c th khc nhau i vi cc cp thit b khc nhau. Lm vic vi cc bus ng
b d dng hn do n c nh thi mt cch gin on , tuy vy chnh c im nycng dn n nhc im. Mi cng vic c tin hnh trong khong thi gian l bi sca xung clock, nu 1 thao tc no ca vi x l hay b nhhon thnh trong 3.1 chuk th n cng s phi ko di trong 4 chu k. Khi chn chu k bus v xy dng bnh, I/O card cho bus ny th kh c th tn dng nhng tin b ca cng ngh. Chnghn sau khi xy bus vi snh thi nh trn, cng ngh mi a ra cc vi x l v bnhc thi gian chu k l 100ns ch khng cn l 750ns nh c, th chng vn chy vitc thp nh cc vi x l, b nhloi c, bi v giao thc bus i hi b nhphi ac d liu ra v n nh trc thi im cnh m ca T3. Nu c nhiu thit b khcnhau cng ni vi 1 bus, trong c th c mt s thit b hot ng nhanh hn hn cc
thit b khc th cn phi t bus hot ng ph hp vi thit b c tc thp nht.Bus bt ng b ra i nhm khc phc nhng nhc im ca bus ng b.
Trc ht master pht ra a ch nhm n mun truy cp, sau pht tn hiu MEMRtch cc xc nh cn truy xut b nhv yu cu qu trnh truy xut l READ xcnh chiu truyn d liu. Tn hiu MEMRc a ra sau tn hiu a ch mt khongthi gian ph thuc tc hot ng ca master. Sau khi 2 tn hiu ny n nh, masters pht ra tn hiu MSYN (master synchrization) mc tch cc bo cho slave bitrng cc tn hiu cn thit sn sng trn bus, slave c th nhn ly. Khi slave nhnc tn hiu ny, n s thc hin cng vic vi tc nhanh nht c thc, a dliu ca nhc yu cu ln bus d liu. Khi hon thnh slave s pht tn hiu SSYN (slave synchronization) tch cc.
Hnh 1.8 nh th chu k bus bt ng b
Address
MEMR(Control)
MSYN
Data
SSYN
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
13/130
Ti liu Lp trnh hthng Chng 1
Phm Hng Kim Khnh Trang 12
Master nhn c tn hiu SSYN tch cc th xc nh c d liu ca slave sn sng nn thc hin vic cht d liu, sau o cc ng a ch cng nh cc tnhiu MEMR v MSYN . Khi slave nhn c tn hiu MSYN khng tch cc, n xcnh kt thc chu k v o tn hiu SSYN lm bus trli trng thi ban u, mi tn hiuu khng tch cc, chbus master mi.
Trn gin thi gian ca bus bt ng b, ta s dng mi tn th hin nguynnhn v kt qu. MSYN tch cc dn n vic truyn d liu ra bus d liu v ng thicng dn n vic slave pht ra tn hiu SSYN tch cc, n lt mnh tn hiu SSYN ligy ra so mc ca cc ng a ch, MEMR v MSYN . Cui cng so mc caMSYN li gy ra so mc tn hiu SSYN v kt thc chu k. Tp cc tn hiu phihp vi nhau nh vy c gi l bt tay ton phn (full handshake), ch yu gm 4 tnhiu sau:
- MSYN tch cc.
- SSYN tch cc p li tn hiu MSYN .- MSYN c o p li tn hiu SSYN (tch cc).
- SSYN c o p li tn hiu MSYN khng tch cc.
Ta c th nhn thy bt tay ton phn l c lp thi gian, mi s kin c gy rabi 1 s kin trc ch khng phi bi xung clock. Nu 1 cp master-slave no hot ng chm th cp master-slave k tip khng h bnh hng.
Tuy u im ca bus bt ng b rt r rng, nhng trong thc t phn ln cc busang s dng l loi ng b. Nguyn nhn l cc h thng s dng bus ng b d thitk hn. Vi x l ch cn chuyn cc mc tn hiu cn thit sang trng thi tch cc l bnhp ng ngay, khng cn tn hiu phn hi. Ch cn cc chn ph hp th mi hotng u tri chy, khng cn phi bt tay.
3.4.Xl ngt
trn, ta ch kho st cc chu k bus thng thng, trong master nhn hay githng tin t / n slave. Mt ng dng quan trng na ca bus l dng x l ngt. KhiCPU ra lnh cho thit b I/O lm mt vic g , n thng chi tn hiu ngt do thitb I/O pht ra khi hon thnh cng vic c CPU yu cu. Khi nhn c tn hiu ngt,CPU sp ng ngay, c th nhn d liu do thit b I/O truyn v, hay gi tip d liu rathit b I/O, hay CPU s s dng bus cho mt thao tc khc. Nh vy chnh ngt pht ra
tn hiu yu cu s dng bus.V c th nhiu thit b ngoi vi cng pht ra ngt, cho nn cn c 1 cch phn
x ging nhi vi cc bus thng thng. Gii php thng dng l gn cc mc utin cho cc thit b v s dng 1 arbiter tp trung trao quyn u tin cho cc thit bquan trng thng xuyn c s dng. Hin trn th trng c nhng chip iu khinngt c tiu chun ha v c s dng rng ri l chip 8259A. C th ni 8 chip iukhin I/O ti cc u IRx (Interrupt request) ca 8259A. Khi c 1 thit b no munngt, n t mc tch cc ln chn Irx, 8259A nhn c tn hiu tch cc 1 hay mt s
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
14/130
Ti liu Lp trnh hthng Chng 1
Phm Hng Kim Khnh Trang 13
u vo Irx th st mc tch cc ln u dy INT. Tn hiu INT s truyn trc tip nchn Interrupt ca CPU. Khi CPU c th x l c ngt, n gi li 1 tn hiu chp nhnngt cho 8259A. Lc ny, CPU ch8259A ch ra I/O no yu cu ngt, bng cch gi shiu ca I/O ln bus d liu (D0-D7) i n CPU. Sau , phn cng CPU s sdng con s tnh ch s trong 1 bng con tr -bng vector ngt (interrupt vector) tm a ch chng trnh con, cho chy chng trnh ny phc v ngt. Cc chng
trnh con ny gi l chng trnh con x l ngt.
4. Cc chip h tr cho b x l trung tm4.1.Mch to xung clock 8284
Hnh 1.9 Mch to xung clock 8284
PCLK(Peripheral Clock): xung clock f = fX/6 (fX l tn s thch anh) vi chu kbn phn 50%.
CSYNC (Clock Synchronisation): ng vo xung ng b chung khi h thng ccc 8284 dng dao ng ngoi ti chn EFI. Khi dng mch dao ng trong th phi niGND.
AEN1 , AEN 2 (Address Enable): cho php chn cc chn tng ng RDY1,RDY2 bo hiu trng thi sn sng ca b nhhay thit b ngoi vi.
RDY1, RDY2 (Bus ready): kt hp vi AEN1, AEN2 to cc chu ki CPU
READY: ni n chn READY ca P.
CLK(Clock): xung clock f = fX/3, ni vi chn CLK ca CPU.
RESET: ni vi chn RESET ca CPU, l tn hiu khi ng li ton h thng.
RES(Reset Input): chn khi ng cho 8284, c ni vi mch RC t khi
ng khi bt ngun.OSC: ng ra xung clock c tn s fX.
F/C (Frequency / Crystal): chn ngun tn hiu chun cho 8284, nu mc caoth chn tn s xung clock bn ngoi, ngc li th dng xung clock t thch anh.
EFI(External Frequency Input): xung clock t b dao ng ngoi.
8284
1234567
89 1011
12131415161718
CSYNCPCLKAEN1RDY1READYRD2AEN2CLKGND RESET
RESOSCF/CEFI
ASYNCX2X1
VCC
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
15/130
Ti liu Lp trnh hthng Chng 1
Phm Hng Kim Khnh Trang 14
ASYNC: chn ch lm vic cho tn hiu RDY. Nu ASYNC = 1, tn hiuRDY c nh hng n tn hiu READY cho n khi c xung m ca xung clock. Ngcli th RDY chnh hng khi xut hin xung m.
X1,X2: ng vo ca thch anh, dng to xung chun cho h thng.
Hnh 1.10 Mch khi ng cho 8284
4.2.Mch nh thi PIT 8253 / 8254 (Programmable Interval Timer)
Hnh 1.11 S chn ca PIT 8253
8284
1
2345678910
11121314151617
18CSYNC
PCLKAEN1RDY1
READYRD2
AEN2CLK
GNDRESETRESOSCF/CEFIASYNCX2X1VCC
Vcc
+
A019
A120 OUT0
10
OUT113
OUT217
D08
D1
7
D26
D35
D44
D53
D62
D71
G011
G114
G2
16
CLK09
CLK115
CLK218
RD22
WR23
CS21
8253
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
16/130
Ti liu Lp trnh hthng Chng 1
Phm Hng Kim Khnh Trang 15
Hnh 1.12 S khi ca PIT 8253
D7 D0: bus d liu
CLK0 CLK2: ng vo xung clock cho cc bm
OUT0 OUT2: ng ra bm
RD , WR : cho php CPU c / ghi d liu t / n cc thanh ghi ca 8253
A1, A0: gii m chn bm hay thanh ghi iu khin, thng c ni vi busa ch ca CPU
A1 A0 Chn
0 0 Bm 0
0 1 Bm 1
1 0 Bm 2
1 1 Thanh ghi tiu khin
G0 G2 (Gate): cho php hay cm cc bm hot ng ( =1: cho php, =0:cm).
PIT 8253 c tt c 5 chm ty thuc vo gi tr trong thanh ghi iu khin.
m dliu
iukhinc/ghi
Thanh
ghi tiukhin
Bm0
Bm1
Bm2
D7 D0
RD
WR
CS
A1
A0 BUSNI
OUT0
CLK0
GATE0
OUT1
CLK1
GATE1
OUT2
CLK2
GATE2
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
17/130
Ti liu Lp trnh hthng Chng 1
Phm Hng Kim Khnh Trang 16
PIT 8253 c 3 bm li 16 bit c th lp trnh v c lp vi nhau. Mi bmc tn hiu xung clock ring (8254 tng t nh 8253 nhng c thm lnh c thanh ghitiu khin CWR).
Cc chm:Ch 0 (Interrupt on Terminal Count): tn hiu ng ra mc thp cho ti khi b
m trn th s chuyn ln mc cao.
Ch 1 (Programmable Monoflop): tn hiu ng ra chuyn xung mc thp ticnh m ca xung clocku tin v s chuyn ln mc cao khi bm kt thc.
Ch 2 (Rate Generator): tn hiu ng ra xung mc thp trong chu ku tinv sau chuyn ln mc cao trong cc chu k cn li.
Ch 3 (Square-Wave Generator): tng t nh ch 2 nhng xung ng ra lsng vung khi gi trm chn v s thm mt chu kmc cao khi gi trm l.
Ch 4 (Software-triggered Pulse): ging nh ch 2 nhng xung Gatekhngkhi ng qu trnh m m sm ngay khi sm ban u c np. Ng ra mccao m v xung mc thp trong chu k xung m. Sau , ng ra s trli mc cao.
Ch 5 (Hardware-triggered Pulse): ging nh ch 2 nhng xung Gatekhngkhi ng qu trnh m m c khi ng bng cnh dng ca xung clock ng vo.Ng ra mc cao v xung mc thp sau mt chu k clock khi qu trnh m kt thc.
SC1
Quy nh phng thcc/ghi00: cht bm01: c/ghi byte thp10: c/ghi byte cao11: c/ghi byte thptrc, byte cao sau
SC0 RW1 RW0 M2 M1 M0 BCD
Chn bm
00: bm 001: bm 110: bm 211: c CWR trong 8254
Hnh 1.13 Dng tiu khin ca 8253
Chm000: ch 0001: ch 1010: ch 2011: ch 3100: ch 4101: ch 5
nh dng m
0: m nh phn1: m BCD (0 999)
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
18/130
Ti liu Lp trnh hthng Chng 1
Phm Hng Kim Khnh Trang 17
Ba chc nng ca 8253 trong PC:Cp nhtng h h thng:bm 0 ca PIT pht tun hon mt ngt cng qua
IRQ0 ca 8259 CPU c th thay i ng h h thng. Bm hot ng trong ch2. Ng vo c cp xung clock tn s 1.19318 MHz. G0 = 1 bm lun c phpm. Gi tr ban u c n p l 0 cho php PIT pht ra xung chnh xc vi tns:1.19318/65536 = 18.206Hz. Cnh dng ca mi xung ny s to ra mt ngt cngtrong 8259. Yu cu ny s dn ti ngt 08h cp nht ng h h thng 18.206 lntrong 1 giy.
Lm ti b nh: PIT ni vi chip DMAC dng lm ti b nhDRAM. Bm1 snh k kch hot knh 0 ca DMAC-8237A tin hnh 1 chu trnh c gi lmti b nh. B nh1 hot ng trong ch 3 pht sng vung vi gi tr np ban u l18. Do sng vung c pht ra c tn s 1,19318 MHz/18 = 66288 Hz (chu k bng0.015s). Nh vy c sau 15 ms cnh dng ca sng vung ny s to 1 chu kc gi lm ti b nh.
Pht sng m vi tn sbin i ra loa ca PC: Bm 2 ca PIT c dng
pht sng m ra loa ca PC.4.3.Mch iu khin bus 8288
Mch iu khin bus 8288 ly mt s tn hiu iu khin ca CPU v cung cp cctn hiu iu khin cn thit cho h vi x l.
Hnh 1.14 Mch iu khin bus 8288
IOB (Input / Output Bus Mode): iu khin 8288 lm vic cc ch buskhc nhau.
CLK(Clock): ng vo ly t xung clock h thng (t 8284) v dng ng bton b cc xung iu khin i ra t mch 8288.
DT/R (Data Transmit/Receive): CPU truyn (1) hay nhn (0) d liu.ALE(Address Latch Enable): tn hiu cho php cht a ch, tn hiu ny thng
c ni vi chn G ca 74573 iu khin cht a ch.
AEN(Address Enable): ch thi gian tr khong 150 ns s to cc tn hiu iukhin u ra ca 8288 m bo rng a ch s dng hp l.
S2 ,S1 , S0 : cc tn hiu trng thi ly trc tip t CPU. Tu theo cc gi tr nhnc m 8288 sa cc tn hiu theo bng:
8288
1234567
89111213
141516171819
10
20IOBCLKS1DT/RALEAENMRDCAMWCMWTC
IOWCAIOWC
IORCINTACENDEN
MCE/PDENS2S0
GND
VCC
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
19/130
Ti liu Lp trnh hthng Chng 1
Phm Hng Kim Khnh Trang 18
S2 1S S0 To tn hiu
0 0 0 INTA
0 0 1 IORC
0 1 0 IOWC , AIOWC
0 1 1 Khng
1 0 0 MRDC
1 0 1 MRDC
1 1 0 MWTC , AMWC
1 1 1 Khng
MRDC(Memory Read Command): iu khin c b nh
MWTC(Memory Write Command): iu khin ghi b nh
AMWC(Advanced MWTC),: ging nh MWTC nhng hot ng sm hn mtcht dng cho cc b nhchm p ng kp tc CPU.
IOWC(I/O Write Command): iu khin ghi ngoi vi
AIOWC (Advanced IOWC),: ging nh IOWC nhng hot ng sm hn mtcht dng cho cc ngoi vi chm p ng kp tc CPU.
IORC(I/O Read Command): iu khin c ngoi vi
INTA (Interrupt Acknowledge): ng ra thng bo CPU ch p nhn yu cu ngtca thit b ngoi vi
CEN(Command Enable): cho php a ra tn hiu DEN v cc tn hiu iu khinkhc ca 8288.
DEN(Data Enable): iu khin bus d liu thnh bus cc b hay bus h thng.
MCE/ PDEN (Master Cascade Enable / Peripheral Data Enable): nh ch lmvic cho mch iu khin ngt PIC 8259 n lm vic ch master.
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
20/130
Ti liu Lp trnh hthng Chng 1
Phm Hng Kim Khnh Trang 19
4.4.Chip iu khin ngt u tin PIC 8259A (Priority Interrupt Controller)
Hnh 1.15 S chn ca 8259A
Trong trng hp nhiu yu cu ngt cn phi phc v, ta thng dng vi mch8259A gii quyt vn u tin. 8259A c th gii quyt c 8 yu cu ngt vi 8mc u tin khc nhau.
Cc khi chc nng:IRR (thanh ghi yu cu ngt): lu tr cc yu cu ngt ti ng vo
ISR (thanh ghi phc v ngt): lu tr cc yu cu ngt ang phc v
IMR (thanh ghi mt n ngt): lu tr mt n ca cc yu cu ngt ti ng vo
Control logic (logic iu khin): gi yu cu ngt ti chn INTR ca CPU khi ctn hiu ngt ti ng vo ca 8259A v nhn tr li chp nhn yu cu ngt hay khngINTA t CPU a kiu ngt vo CPU.
Data bus buffer(m bus d liu): giao tip gia 8259A vi bus d liu ca CPU.
Cascade buffer / comparator(m ni tng v so snh): lu tr v so snh s hiuca cc kiu ngt trong trng hp dng nhiu mch 8259A.
8259A
1110987654
1819202122232425
27
1
32 16
17
26
121315
D0D1D2D3D4
D5D6D7
IR0IR1IR2IR3IR4
IR5IR6IR7
A0
CS
RDWR SP/EN
INT
INTA
CAS0CAS1CAS2
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
21/130
Ti liu Lp trnh hthng Chng 1
Phm Hng Kim Khnh Trang 20
Cc tn hiu iu khin:CAS0 2 (In, Out): cc ng vo chn mch 8259A t(slave) t mch 8259A ch
(master) trong trng hp dng nhiu mch 8259A tng yu cu ngt.
ENSP / (In, Out) (Slave Program / Enable Buffer): nu 8259A hot ng ch khng dng m d liu th tn hiu ny dng xc nh mch 8259A l mch ch(SP = 1) hay t(SP = 0). Nu 8259A hot ng ch c m d liu th tn hiu nydng cho php giao tip gia 8259A v CPU, khi mch 8259A l master hay slave
phi da vo t lnh khi ng ICW4.INT (Out): tn hiu yu cu ngt a n CPU (chn INTR).
INTA (In): nhn tr li chp nhn ngt hay khng t CPU (chn INTA )
A0: cho php chn cc tiu khin ca 8259A.
8259A cho php x l 8 ngt vi 8 mc u tin khc nhau. Trong trng hp hthng c s lng ngt ln hn th c th mc nhiu 8259A lin tng.
Data bus
buffer
Read /Write
Logic
RD
WR
A0
CS
Cascadebuffer /
comparator
CAS0
CAS1
CAS2
ENSP /
Control logic
ISR
(Interrupt
Service
Register)
PR
(Priority
Resolver)
IRR
(Interrupt
Request
Register)
INTERN
ALBUS
IMR (Interrupt Mask Register)
IR0
IR1
IR7
INTINTA
Hnh 1.16 S khi ca PIC 8259A
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
22/130
Ti liu Lp trnh hthng Chng 1
Phm Hng Kim Khnh Trang 21
Hnh 1.17 8259A mc lin tng
4.5.Chip iu khin truy nhp b nh trc tip DMAC 8237 (Direct MemoryAccess Controller)
DMAC 8237 c th thc hin truyn d liu theo 3 kiu: kiu c (t b nh rathit b ngoi vi), kiu ghi (t thit b ngoi vi n b nh) v kiu kim tra.
8259A - Slave
11109876
54
27132161726
181920212223
2425
121315
D0D1D2D3D4
D5D6D7
A0CSRDWR
SP/ENINT
INTA
IR0IR1IR2IR3IR4
IR5IR6IR7
CAS0CAS1CAS2
8259A - Master
11109876
54
27132161726
181920212223
2425
121315
D0D1D2D3D4
D5D6D7
A0CSRDWR
SP/ENINT
INTA
IR0IR1IR2IR3IR4
IR5IR6IR7
CAS0CAS1CAS2
8086
123456
789
1011121314151617181920 21
22232425262728293031323334
353637383940
GNDAD14AD13AD12AD11
AD10AD9AD8AD7AD6AD5AD4AD3AD2AD1AD0NMIINTRCLKGND RESET
READYTEST
INTA (QS1)ALE (QS0)DEN (S0)DT/R (S1)IO/M (S2)
WR (LOCK)HLDA (RQ/GT1)HOLD (RQ/GT0)
RDMN/MX
BHE/S7A19/S6
A18/S5A17/S4A16/S3
AD15VCC
Vcc
8237
34
10
98
5
6
12
13
11
736
12
3233
343537383940
3029
282726232221
25241415
19181716
MEMRMEMW
HRQ
AENASTB
VX
READY
CLK
RESET
CS
HLDAEOP
IORIOW
A0
A1A2A3A4A5A6A7
DB0
DB1DB2DB3DB4DB5DB6DB7
DAK0DAK1DAK2DAK3
DRQ0DRQ1DRQ2DRQ3
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
23/130
Ti liu Lp trnh hthng Chng 1
Phm Hng Kim Khnh Trang 22
Hnh 1.18 S chn v s khi ca DMAC 8237A
Khi Timing and Control (nh thi v iu khin):To cc tn hiu nh thi v iu khin cho bus ngoi (external bus). Cc tn hiu
ny c ng b vi xung clocka vo DMAC (tn s xung clock ti a l 5 MHz).
Khi Priority encoder and rotating priority logic (m ha u tin vquay mc u tin):
DMAC 8237A c 2 m hnh u tin: m hnh u tin cnh (fixed priority) v
m hnh u tin quay (rotating priority). Trong m hnh u tin cnh, knh 0 s cmc u tin cao nht cn knh 3 c mc u tin thp nht. Cn i vi m hnh u tinquay th mc u tin khi khi ng ging nh m hnh u tin cnh nhng khi yu cuDMA ti mt knh no c phc v th sc t xung mc u tin thp nht.
Khi Command Control (iu khin lnh):Gii m cc thanh ghi lnh (xc nh thanh ghi sc truy xut v loi hot ng
cn thc hin).
Timing and
control
EOP
RESET
CS
READY
CLK
AEN
MEMW
ADSTB
MEMR
IOW
IOR
Priority encoder
and rotating
prority logic
Decrementor
Temp word
count register
Incrementor
Temp address
register
I/O buffer
Output buffer
Read buffer
Base
address
Base word
count
R/W buffer
Current
address
Current
word count
Write buffer Read buffer
I/O bufferCommand
Mask
Request
R/W
Mode
Status
Command
control
Temp
Bus 16 bit
A8A15
D0D1
A0 A3
A4 A7
DRQ0 DRQ3
DACK0 DACK3
HLDA
HRQ
DB0 D
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
24/130
Ti liu Lp trnh hthng Chng 1
Phm Hng Kim Khnh Trang 23
Cc thanh ghi:DMAC 8237A c tt c 12 loi thanh ghi ni khc nhau:
Tn Kch thc (bit) S lng
Thanh ghi a ch cs(Base Address Register)Thanh ghi m t cs(Base Word Count Register)
Thanh ghi a ch hin hnh (Current Address Register)
Thanh ghi m t hin hnh (Current Word Count Register)
Thanh ghi a ch tm (Temporary Address Register)
Thanh ghi m t tm (Temporary Word Count Register)
Thanh ghi trng thi (Status Register)
Thanh ghi lnh (Command Register)
Thanh ghi tm (Temporary Register)
Thanh ghi ch (Mode Register)
Thanh ghi mt n (Mask Register)
Thanh ghi yu cu (Request Register)
1616
16
16
16
16
8
8
8
6
4
4
44
4
4
1
1
1
1
1
4
1
1
Chc nng cc chn ca 8237A:CLK (Input): tn hiu xung clock ca mch. Tn hiu ny thng c ly t 8284
sau khi qua cng o.
CS (Input): thng c ni vi b gii m a ch.RESET(Input): khi ng 8237A, c ni vi ng RESET ca 8284. Khi Reset
th thanh ghi mt nc lp cn cc phn sau b xa:
+ Thanh ghi lnh
+ Thanh ghi trng thi
+ Thanh ghi yu cu
+ Thanh ghi tm
+ Flip-flop u/cui (First/Last flip-flop)
READY(Input): ni vi READY ca CPU to chu ki khi truy xut cc thitb ngoi vi hay b nhchm.
HLDA (Hold Acknowledge)(Input): tn hiu chp nhn yu cu treo t CPU
DRQ0 DRQ3 (DMA Request)(Input): cc tn hiu yu cu treo t thit b ngoivi.
DB0 DB7(Input, Output): ni n bus a ch v d liu ca CPU
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
25/130
Ti liu Lp trnh hthng Chng 1
Phm Hng Kim Khnh Trang 24
IOR , IOW (Input, Output): s dng trong cc chu kc v ghiEOP (End Of Process)(Input,Output): bt buc DMAC kt thc qu trnh DMAnu l ng vo hay dng bo cho mt knh bit l d liu chuyn xong(Terminal count TC), thng dng nh yu cu ngt CPU kt thc qu trnhDMA.
A0 A3 (Input, Output): chn cc thanh ghi trong 8237A khi lp trnh hay dng cha 4 bit a ch thp.A4 A7(Output): cha 4 bit a ch
HRQ (Hold Request)(Output): tn hiu yu cu treo n CPU
DACK0 DACK3 (DMA Acknowledge)(Output): tn hiu tr li yu cu DMA chocc knh.
AEN(Output): cho php ly a ch vng nhcn trao i
ADSTB (Address Strobe)(Output): cht cc bit a ch cao A8 A15 cha trongcc chn DB0 DB7
MEMR , MEMW (Output): dng c / ghi b nh.
Cc thanh ghi ni:Cc thanh ghi ni trong DMAC 8237A c truy xut nhcc bit a ch thp A0
A3.
Bit a ch
A3 A2 A1 A0
ach
Chn chc nng R/W?
0
0
00
0
0
0
0
1
1
1
1
11
1
1
0
0
00
1
1
1
1
0
0
0
0
11
1
1
0
0
11
0
0
1
1
0
0
1
1
00
1
1
0
1
01
0
1
0
1
0
1
0
1
01
0
1
X0
X1
X2X3
X4
X5
X6
X7
X8
X9
XA
XB
XCXD
XE
XF
Thanh ghi a ch b nhknh 0Thanh ghi m t knh 0Thanh ghi a ch b nhknh 1Thanh ghi m t knh 1Thanh ghi a ch b nhknh 2Thanh ghi m t knh 2Thanh ghi a ch b nhknh 3Thanh ghi m t knh 3Thanh ghi trng thi / lnhThanh ghi yu cuThanh ghi mt n cho mt knhThanh ghi ch
Xa flip-flop u/cuiXa ton b cc thanh ghi / c thanh ghi tmXa thanh ghi mt nThanh ghi mt n
R/W
R/W
R/WR/W
R/W
R/W
R/W
R/W
R/W
W
W
W
WW/R
W
W
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
26/130
Ti liu Lp trnh hthng Chng 1
Phm Hng Kim Khnh Trang 25
a chcc thanh ghi ni dng ghi /c a ch:
Knh IOR
IOW
A3 A2 A1 A0 Thanh ghi R/W?
0 1
0
10
01
01
00
00
00
00
0
0
00
0
0
11
a ch csv a ch hin hnha ch hin hnh
Bm csv bm hin hnhBm hin hnh
W
R
WR
1 1
01
0
0
10
1
0
00
0
0
0
00
1
1
11
0
0
11
a ch csv a ch hin hnha ch hin hnhBm csv bm hin hnhBm hin hnh
W
R
W
R
2 1
0
10
0
1
01
0
0
0
0
1
1
1
1
0
0
0
0
00
1
1
a ch csv a ch hin hnha ch hin hnhBm csv bm hin hnhBm hin hnh
WR
W
R
3 1
01
0
0
10
1
0
000
1
111
1
111
0
01
1
a ch csv a ch hin hnh
a ch hin hnhBm csv bm hin hnhBm hin hnh
W
RW
R
a chcc thanh ghi trng thi v iu khin:
IOR ` IOW A3 A2 A1 A0 Thanh ghi
1
01
11
11
0
0
1
0
00
0
01
1
1
1
11
1
1
1
00
0
001
1
1
0
00
11
00
0
0
0
1
01
0
11
Ghi thanh ghi lnhc thanh ghi trng thiGhi thanh ghi yu cu
Ghi thanh ghi mt nGhi thanh ghi chXa flip-flop u/cuiXa tt c cc thanh ghi ni
1
01
0
0
1
01
1
1
11
1
1
11
1
1
1
1
0
0
1
1
a ch csv a ch hin hnha ch hin hnhBm csv bm hin hnhBm hin hnh
Mch 8273A-5 cha 4 knh trao i d liu DMA vi mc u tin lp trnh c.8237A-5 c tc truyn 1 MBps cho mi knh v 1 knh c th truyn 1 mng c di64 KB. c th s dng mch DMAC 8237A, ta cn to tn hiu iu khin nh sau:
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
27/130
Ti liu Lp trnh hthng Chng 1
Phm Hng Kim Khnh Trang 26
Hnh 1.19 Tn hiu iu khin cho h thng lm vic vi DMAC 8237A
Tn hiu AEN t 8237A dng cm cc tn hiu iu khin t CPU khi DMAC nm quyn iu khin bus.
4.6.Chip iu khin mn hnh CRTC 6845 (Cathode Ray Tube Controller)
RST (Reset): khi ng li 6845.
MA0 MA13 (Memory Address): 14 a ch nhcho RAM mn hnh.
DE(Display Enable): cho php (=1) hay khng (=0) cc tn hiu iu khin v ach vng hin ln mn hnh.
LPSTD (Light Pen Strobe): lu tra ch hin hnh ca RAM mn hnh trongthanh ghi bt sng. CPU c thanh ghi v xc nh v tr bt sng trn mn hnh.
CURSOR: v tr con tr qut (=1) hay cha (=0).
Hnh 1.20 S chn ca 68456845
4567891011121314151617
19
25
24
23
22
21
32
3332313029282726
3837
363534
183940
MA0MA1MA2MA3MA4MA5MA6MA7MA8MA9
MA10MA11MA12MA13
CURSOR
CS
RS
E
R/W
CLK
LPSTDRST
D0D1D2D3D4D5D6D7
RA0
RA1RA2RA3RA4
DEHSVS
Vcc
74LS257
2356
11101413
151
4
7
9
12
1A1B2A2B3A3B4A
4B
GA/B
1Y
2Y
3Y
4Y
RD
WR
AEN
IO/M
IOR
IOW
MEMR
MEMW
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
28/130
Ti liu Lp trnh hthng Chng 1
Phm Hng Kim Khnh Trang 27
VS(Vertical Synchronization): ng ra tn hiu ng b qut dc
HS(Horizontal Synchronization): ng ra tn hiu ng b qut ngang
RA0 RA4 (Row Address): phn nh hng qut ca k t trong ch vn bn(32 hng qut). Trong ch ha, chng kt hp vi MA0 MA13 to cc a ch chocc bank RAM mn hnh.
D0 D7: ng d liu.
CS: chn chip.
RS(Regigter Select): chn thanh ghi a ch (=0) hay thanh ghi d liu (=1).
E: xung m kch hot bus d liu v dng nh xung clock cho 6845 c / ghi dliu vo cc thanh ghi bn trong.
R/W : c / ghi d liu vo cc thanh ghi.
CLK: dng ng b vi tn hiu ca mn hnh v thng bng tc hin k ttrn mn hnh.
4.7.Chip ng xl ton hc 8087/80287/80387 (Mathematical co-processor)
Cc bng x l ton 80x87 h trCPU trong vic tnh ton cc biu thc dngdu chm ng nh cng, tr, nhn, chia cc s du chm ng, cn thc, logarit, Chng cho php x l cc php ton ny nhanh hn nhiu so vi CPU. Thi gian x lgia 8087 v 8086 nh sau (dng xung clock 8 MHz):
Php ton 8087 [s] 8086 [s]Cng / tr
Nhn
Chia
Cn bc hai
Tang
Ly tha
Lu tr
10.6
11.9
24.4
22.5
56.3
62.5
13.1
1000
1000
2000
12250
8125
10680
750
8087:8087 gm mt n viu khin (CU Control Unit) dng iu khin bus v
mt n v s hc (NU Numerical Unit) thc hin cc php ton du chm ngtrong cc mch tnh ly tha (exponent module) v mch tnh phn nh tr (mantissamodule). Khc vi 8086, thay v dng cc thanh ghi ri rc l mt ngn xp thanh ghi.
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
29/130
Ti liu Lp trnh hthng Chng 1
Phm Hng Kim Khnh Trang 28
n viu khin nhn v gii m lnh, dc v ghi cc ton hng, chy cc lnhiu khin ring ca 8087. Do , CU c thng b vi CPU trong khi NU ang thchin cc cng vic tnh ton. CU bao gm biu khin bus, bm d liu v hnglnh.
Hnh 1.22 S kt ni 8087 v CPU 8086
Tiu khin
T trng thi
m d liu
iu khin bus
Biukhin s
Module lytha
Module
nh tr
T th Thanh ghi
ngn xp
Bus d liu
a ch trng thi
Hnh 1.21 S khi ca 8087
CU - Control Unit NU - Numerical Unit
CLK (8284)
INT (8259)
IRx (8259)
8087
34
32
2524
19
23
161514131211109
876543239
38373635
262728
3133
22
21
BHE/S7 INT
QS0QS1
CLK
BUSY
AD0AD1AD2AD3AD4AD5AD6AD7
AD8AD9
AD10AD11AD12AD13AD14AD15
A16/S3A17/S4A18/S5A19/S6
S0S1S2
RQ/GT0RQ/GT1
READY
RST
8086
34
32
292524
3130
17
23
33
22
19
21
18
161514131211109
876543239
38373635
262728
BHE/S7
RD
LOCKQS0QS1
RQ/GT0RQ/GT1
NMI
TEST
MX
READY
CLK
RST
INTR
AD0AD1AD2AD3AD4AD5AD6AD7
AD8AD9
AD10AD11AD12AD13AD14AD15
A16/S3A17/S4A18/S5A19/S6
S0S1S2
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
30/130
Ti liu Lp trnh hthng Chng 1
Phm Hng Kim Khnh Trang 29
Ngn xp thanh ghi c tt c 8 thanh ghi t R0 R7, mi thanh ghi di 80 bit trong bit 79 l bit du, bit 64 78 dng cho s m v phn cn li l phn nh tr. D liutruyn gia cc thanh ghi ny c thc hin rt nhanh do 8087 c rng bus d liu l84 bit v khng cn phi bin i nh dng.
Ngay sau khi reset PC, bng x l kim tra xem n c c ni vi PC hay
khng bng cc ng BHE /S7. 8087 siu chnh di ca hng lnh cho ph hp viCPU (nu dng 8086 th di l 6 byte).
8087 c mt thanh ghi trng thi l thanh ghi t th (tag word) gm cc cp bitTag0 Tag7 lu tr cc thng tin lin quan n ni dung ca cc thanh ghi R0 R7 cho php thc hin mt s tc v nhanh hn. Mi thanh ghi t th c 2 bit xc nh 4gi tr khc nhau ca cc thanh ghi Ri.
Tag = 00: xc nh
Tag = 01: zero
Tag = 10: NAN, gi tr bt thng
Tag = 11: rng
80287:
Hnh 1.23 S kt ni gia 80286 v 80287
S0
82284
1516
78
117
23
5
116
4
10
12
13S0S1
X1X2
ARDYAYEN
SRDY
SYEN
EFI
RESF/C
READY
CLK
RESET
PCLK
80287
2322212019181716151412118765
262524
40
32
35
37
21
38
36
39
2728
3433
29313
D0D1D2D3D4D5D6D7D8
D9D10D11D12D13D14D15
ERRORBUSY
PEREQ
READY
CLK
RESET
CLK286
S0S1
HLDA
PEACK
CKM
NPRDNPWR
NPS1NPS2
CMD0CMD1COD/INTA
S1
S0
8228819
3
18
1
2
1514
76
131211
17165
4
89
S0S1
M/IO
READY
CLK
CEN/AENCENLCMDLYMB
INTAIORCIOWC
DT/RDENALE
MCE
MRDCMWTC
80286
3433322827262524232221201918171615141312111087
54
1666568676
63
31
29
5957645354
61
52
36384042444648503739414345474951
A0A1A2A3A4A5A6A7A8A9
A10A11A12A13
A14A15A16A17A18A19A20A21A22A23
S0S1
BHECOD/INTA
HLDALOCKM/IO
PEACK
READY
CLK
RST
NMIINTRHOLDERRORBUSY
PEREQ
CAP
D0D1D2D3D4D5D6D7D8D9D10D11D12D13
D14D15
S1
82284
1516
78
117
23
5
116
4
10
12
13S0S1
X1X2
ARDYAYEN
SRDYSYEN
EFI
RESF/C
READY
CLK
RESET
PCLK
S
S0
S1
S
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
31/130
Ti liu Lp trnh hthng Chng 1
Phm Hng Kim Khnh Trang 30
Do 80286 c ch mch bo v nn mch ghp ni gia 80286 v 80287 cthit k khc 8087 n viu khin CU. Bng x l y khng thc hin truyxut b nhtrc tip. truy xut c b nh, 80287 khng nhng cn mt c vnha chn gin ca n m cn phi c tng cng thm chc nng qun l b nhca80286. Cu trc bn trong ca 80287 cng tng t nh 8087, ch c n v bus thay icho ph hp vi 80286. Khc vi 8087, 80287 hot ng khng ng b vi CPU nn c
th dng xung clock ring. 80387:
u im ca 80387 so vi 80287 l c th thc hin cc php ton s hc nhanhhn. No c bus d liu 32 bit nh CPU v s dng cng ngh CMOS nn cng sut tiuth thp hn.
5. B thanh ghiP 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)
5.1.Cc thanh ghi dliu
Cc thanh ghi d liu gm c cc thanh ghi 16 bit AX, BX, CX v DX trong na cao v na thp ca mi thanh ghi c thnh a ch mt cch c lp. Cc nathanh ghi ny (8 bit) c tn l AH v AL, BH v BL, CH v CL, DH v DL.
Cc thanh ghi ny c s dng trong cc php ton s hc v logic hay trong qutrnh chuyn d liu.
Bng 2.8:
Thanh ghi Sdng trongAX MUL, IMUL (ton hng ngun kch thc word)
DIV, IDIV (ton hng ngun kch thc word)IN (nhp word)OUT (xut word)
CWDCc php ton x l chui (string)AL 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)
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
32/130
Ti liu Lp trnh hthng Chng 1
Phm Hng Kim Khnh Trang 31
DAA, DAS (s thp phn)Cc php ton x l chui (string)
AH MUL, IMUL (ton hng ngun kch thc byte)DIV, IDIV (ton hng ngun kch thc byte)CBW (i sang word)
BX XLAT
CX LOOP, LOOPE, LOOPNE
Cc php ton string vi tip du ng REPCL RCR, RCL, ROR, ROL (quay vi sm byte)
SHR, SAR, SAL (dch vi sm byte)DX 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 cs
CX (Count): m
DX (Data): thanh ghi d liu
5.2.Cc thanh ghi ch s v con tr
Bao gm cc thanh ghi 16 bit SP, BP, SI v DI, thng cha cc gi tr offset (lch) cho cc phn tnh a ch trong mt phn on (segment). Chng c thc sdng trong cc php ton s hc v logic. Hai thanh ghi con tr (SP Stack Pointer v BP Base Pointer) cho php truy xut d dng n cc phn tang trong ngn xp (stack)hin hnh. Cc thanh ghi ch s (SI Source Index v DI Destination Index) c dng
truy xut cc phn t trong cc on d liu v don thm (extra segment). Thngthng, cc thanh ghi con tr lin hn on stack hin hnh v cc thanh ghi ch s linhn don d liu hin hnh. SI v DI dng trong cc php ton chui.
5.3.Cc thanh ghi on
Bao gm cc thanh ghi 16 bit CS (Code segment), DS (Data segment), SS (stacksegment) v ES (extra segment), dng nh a ch vng nh 1 MB bng cch chiathnh 16 on 64 KB.
Tt c cc lnh phi trong on m hin hnh, c nh a ch thng qua thanhghi CS. Offset ( lch) ca m c xc nh bng thanh ghi IP. D liu chng trnh
thng c t on d liu, nh v thng qua thanh ghi DS. Stacknh v thng quathanh ghi SS. Thanh ghi on thm c th s dng nh a ch cc ton hng, d liu,b nhv cc phn t khc ngoi on d liu v stack hin hnh.
5.4.Cc thanh ghi iu khin v trng thi
Thanh ghi con tr lnh IP (Instruction Pointer) ging nh bm chng trnh(Program Counter). Thanh ghi iu khin ny do BIU qun l nhm lu tr offset t btu on m n lnh thc thi k tip. Ta khng th x l trc tip trn thanh ghi IP.
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
33/130
Ti liu Lp trnh hthng Chng 1
Phm Hng Kim Khnh Trang 32
Thanh ghi c(Flag register) hay t trng thi 16 bit cha 3 bit iu khin (TF, IFv DF) v 6 bit trng thi (OF, SF, ZF, AF, PF v CF) cn cc bit cn li m 8086/8088khng s dng th khng th truy xut c.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
X X X X OF DF IF TF SF ZF X AF X PF X CF
- OF (Overflow - trn): OF = 1 xc nh trn s hc, xy ra khi kt qu vt rangoi phm vi biu din
- DF (Direction- hng): xc nh hng chuyn string, DF = 1 khi P lm vicvi string theo th t t phi sang tri.
- IF (Interrupt - ngt): cho php hay cm cc interrupt c mt n- TF (Trap - by): t P 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 nhph): dng trong cc s thp phn ch nht 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 nhhay mn t bit cao nht ca kt qu. Cny
cng dng cho cc lnh quay.
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
34/130
Ti liu Lp trnh hthng Chng 2
Phm Hng Kim Khnh Trang 34
Chng 2NGT V S KIN
1. Khi nim
Ngt (interrupt) l qu trnh d
ng ch
ng trnh chnh
ang ch
y
u tin th
c hinmt chng trnh khc, chng trnh ny c gi l chng trnh phc v ngt (ISR
Interrupt Service Routine). ISR hon ton ging vi mt chng trnh bnh thng trn mytnh, ngha l n c kh nng truy xut n tt c cc lnh ngn ng my ca P. Tuy nhincui ISR s kt thc bng lnh IRET (Interrupt Return) P tip tc thc hin lnh ktthc trc y.
Cc nguyn nhn dn n ngt l:
- Bn thn chng trnh ang thc hin b li, v d nh: chia cho 0, - Do tc ng ca thit b ngoi vi, v d nh: thc hin lnh in nhng my in li,
ghi d liu vo a nhng khng c a,
- Do lp trnh vin chng gi cc ngt c sn.Mt cch n gin, chng ta c th xem ngt nh l qu trnh gi chng trnh con
nhng cc chng trnh con ny c to ra sn trong my tnh v qu trnh gi ny c thxy ra ti thi im khng xc nh trc.
S kin (Event) l mt tc ng ln mt i tng trong mi trng Windows. Khic mt s kin xy ra, Windows s gi thng ip (message) n i tng. Cc s kinthng xy ra l:
- S kin chut: Click, Double Click, - S kin bn phm: nhn phm, nh phm, - S kin ca s: Activate, Load, Unload,
2. Cc loi ngt v bng vector ngtQu trnh ngt c th m t nh sau:
Hnh 2.1 Qu trnh thc hin ngt
Lu tr cc thanh ghi cn thit
Khi phc cc thanh ghiQuay v chng trnh chnh (IRET)
Chng trnh chnh ISR
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
35/130
Ti liu Lp trnh hthng Chng 2
Phm Hng Kim Khnh Trang 35
Trong cc qu trnh ngt, ta phn bit thnh 2 loi: ngt cng v ngt mm. Ngtmm l ngt c gi bng mt lnh trong chng trnh ngn ng my. Ngt mm cthc hin trn h p ng thng qua lnh INT. i vi cc ngn ng bc cao hn, vn cho
php thc hin gi ngt nhng phi c bin dch thnh lnh INT trong hp ng ri mithc hin.
Khc vi ngt mm, ngt cng khng c khi ng bn trong my tnh m do cc
linh kin in t tc ng ln h thng. Ngt cng cng c chia thnh 2 loi: ngt chec v ngt khng che c. Ngt che c l ngt c th cho php hay khng cho phpthc thi bng phn mm thng qua c ngt IF (Interrupt Flag): lnh CLI (Clear InterruptFlag) s cm ngt v lnh STI (Set Interrupt Flag) s cho php cc ngt ny hot ng.
Cc loi ngt khc nhau c th m t nh sau:
Hnh 2.2 Cc loi ngt
Khi thc hin lnh gi mt ngt no , chng trnh con phc v cho ngt scgi. thc hin cc ngt tng ng, a ch thc hin cc chng trnh con phc v ngtc t trong mt bng, gi l bng vector ngt.
Bng vector ngt gm c 256 phn t, mi phn t gm 4 byte ng vi 256 ngt (tngt 0 n ngt 0FFh). Mi phn t trong bng vector ngt cha 2 a ch: a ch thanh ghion a vo CS v a ch offset ca chng trnh phc v ngt a vo IP.
Ngt
Ngt mm Ngt cng
Ngt h thng Ngt do ngis dng
Trong Ngoi
HH BIOS Che c Khngche c
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
36/130
Ti liu Lp trnh hthng Chng 2
Phm Hng Kim Khnh Trang 36
Bng vector ngt c th m t nh sau:
a ch a ch ISR S thtngt
0000h:0000h CS
0000h:0002h IP0
0000h:0004h CS
0000h:0006h IP1
0000h:0008h CS
0000h:000Ah IP2
0000h:03FCh CS
0000h:03FEh IP255
Khi c mt qu trnh ngt xy ra, CPU s tm a ch bt u ca chng trnh ngtc cha trong bng vector ngt theo s th t ngt. Do mt phn t trong bng vectorngt chim 4 byte nn tm gi tra ch trong bng vector ngt, ta ch cn nhn s th tngt vi 4.
Danh sch cc ngt m t nh sau:
STT a ch Chc nng
00h 0000h 0003h CPU: chia cho 0
01h 0004h 0007h CPU: thc hin tng lnh
02h 0008h 000Bh CPU: Li RAM
03h 000Ch 000Fh CPU: thc hin n im dng
04h 0010h 0013h CPU: trn s
05h 0014h 0017h In trang mn hnh (Print Screen)
06h, 07h 0018h 001Fh Dnh ring
08h 0020h 0023h IRQ0: ngt ng h (18.2 ln / giy)
09h 0024h 0027h IRQ1: ngt bn phm0Ah 0028h 002Bh IRQ2: Dnh ring
0Bh 002Ch 002Fh IRQ3: Giao tip ni tip 1
0Ch 0030h 0033h IRQ4: Giao tip ni tip 2
0Dh 0034h 0037h IRQ5: a cng
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
37/130
Ti liu Lp trnh hthng Chng 2
Phm Hng Kim Khnh Trang 37
0Eh 0038h 003Bh IRQ6: a mm
0Fh 003Ch 003Fh IRQ7: My in
10h 0040h 0043h BIOS: mn hnh
11h 0044h 0047h BIOS: xc nh cu hnh my tnh
12h 0048h 004Bh BIOS: xc nh kch thc RAM
13h 004Ch 004Fh BIOS: truy nhp a cng / a mm
14h 0050h 0053h BIOS: truy nhp giao tip ni tip
15h 0054h 0057h BIOS: truy nhp cassette hay mrng ngt
16h 0058h 005Bh BIOS: kim tra bn phm
17h 005Ch 005Fh BIOS: truy nhp my in
18h 0060h 0063h Chng trnh xm nhp ROM BASIC
19h 0064h 0067h BIOS: khi ng h thng (khi nhn Ctrl-Alt-Del)
1Ah 0068h 006Bh BIOS: c / ghi ngy / gi1Bh 006Ch 006Fh Nhn phm Break
1Ch 0070h 0073h Gi sau INT 08h
1Dh 0074h 0077h a ch bng tham s mn hnh
1Eh 0078h 007Bh a ch bng tham sa mm
1Fh 007Ch 007Fh a ch bng font c k t mrng
20h 0080h 0083h DOS: kt thc chng trnh
21h 0084h 0087h DOS: gi cc hm ca DOS
22h 0088h 008Bh a ch kt thc chng trnh
23h 008Ch 008Fh Nhn Ctrl-Break
24h 0090h 0093h a ch chng trnh x l li
25h 0094h 0097h DOS: c a mm / a cng
26h 0098h 009Bh DOS: ghi a mm / a cng
27h 009Ch 009Fh DOS: kt thc chng trnh v thng tr
28h 3Fh 00A0h 00FFh Dnh ring cho DOS
40h 0100h 0103h BIOS: phc va mm41h 0104h 0107h a ch bng tham sa cng 1
42h 45h 0108h 0117h Dnh ring
46h 0118h 011Bh a ch ca bng tham sa cng 2
47h 49h 011Ch 0127h Dnh cho user
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
38/130
Ti liu Lp trnh hthng Chng 2
Phm Hng Kim Khnh Trang 38
4Ah 0128h 012Bh Hn gi
4Bh 67h 012Ch 019Fh Dnh cho user
68h 6Fh 01A0h 01BFh Khng dng
70h 01C0h 01C3h IRQ8: ng h thi gian thc
71h 01C4h 01C7h IRQ9
72h 01C8h 01CBh IRQ10
73h 01CCh 01CFh IRQ11
74h 01D0h 01D3h IRQ12
75h 01D4h 01D7h IRQ13: t 80x87
76h 01D8h 01DBh IRQ14: a cng
77h 01DCh 01DFh IRQ15
78h 7Fh 01E0h 01FFh Dnh ring
80h F0h 0200h 03C3h Dng cho b thng dch BASICF1h FFh 03C4h 03FFh Khng s dng
3. Gi ngt v chn ngtQu trnh gi ngt t hp ngn gin l thc hin lnhINT STT_ngtsau khi np
cc tham s cn thit cho ngt. Khi thc hin lnh gi ngt, CPU s tm kim trong bngvector ngt a ch ca chng trnh phc v ngt. Ngi s dng cng c th xy dng mtchng trnh csnh cc chng trnh x l ngt. Sau , cc chng trnh khc c thgi ngt ra s dng. Mt chng trnh c th gi chng trnh con loi ny m khng cn
bit a ch ca n.Nh vy, nu mun thay i ngt, ta c th thay i ni dung trong bng vector ngt
chn chng trnh phc v do ngi s dng t xy dng v chng trnh ny scthc hin khi ngt c gi. lm iu ny, ta ch cn tm v tr ca vector ngt tng ngtrong bng v thay i gi tr ca n. iu ny thc hin c do bng vector ngt t trongRAM v c np mi khi khi ng h thng.
Qu trnh ly v gn a ch ca chng trnh con phc v ngt c th thc hinthng qua ngt 21h bng cc hm sau:
Hm 35h: ly a ch ca ngt
Vo: AL = s th t ngtRa: ES:BX = a ch ca chng trnh phc v ngt
Hm 25h: gn a ch ca mt chng trnh phc v cho mt ngt
Vo: AL = s th t ngt, DS:DX
Ra: khng c
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
39/130
Ti liu Lp trnh hthng Chng 2
Phm Hng Kim Khnh Trang 39
thc hin chn mt ngt, ta cn thc hin nh sau:
Hnh 2.2 Qu trnh chn mt ngt
Mt v d cho qu trnh chn ngt nh sau:
;*******************************************************************************
;*
;* LAB6-2.ASM - Assembler Laboratory ZMiTAC
*
;*
;* Sample program that converts lowercase to uppercase when key pressed
*
;*
;*******************************************************************************.MODEL SMALL
.STACK 100h
.CODE
;*******************************************************************************
;* Variables
;*******************************************************************************
old_proc dd 0 ; address of original interrupt handler
dot_flag db 0 ; dot flag
;*******************************************************************************
;* 09h interrupt handler
;*******************************************************************************
segment_kb EQU 40h ; beggining of keyboard data segment
wsk_kb EQU 1Ch ; offset of pointer to keyboard bufferkb_buf_begin EQU 80h ; offset of address of begining of the
buffer
kb_buf_end EQU 82h ; offset of address of end of the buffer
keys PROC FAR
;-------------------------------------------------------------------------------
; Calling of original interrupt handler
;-------------------------------------------------------------------------------
Dng hm 35h lya ch ca ngt
Dng hm 25h gn
a ch mi cho ngt
Dng hm 25h khi
phc li a ch ccho ngt
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
40/130
Ti liu Lp trnh hthng Chng 2
Phm Hng Kim Khnh Trang 40
int 60h
;-------------------------------------------------------------------------------
; Prepare registers
;-------------------------------------------------------------------------------
push ax ; push registers on the stack
push bx
push dx
push ds
mov ax,segment_kb ; address of keyboard data segment to DS
mov ds,ax
;-------------------------------------------------------------------------------
; Read the character and check ASCII code
;-------------------------------------------------------------------------------
mov bx,ds:[wsk_kb] ; actual pointer to BX
mov ax,ds:[kb_buf_begin] ; buffer beggining to AX
cmp bx,ax ; is the beggining of the buffer ?
jne mid_buf
mov bx,ds:[kb_buf_end] ; last character is at the end of the
buffer
mid_buf:
mov ax,ds:[bx-2] ; read last character
cmp al,'.' ; compare with dotje dot_found ; if dot
cmp al,'Z' ; compare with 'Z'
ja check_lowercase ; if above check lowercase
cmp al,'A' ; compare with 'A'
jb keys_end ; end if less
mov dot_flag,0 ; uppercase - clear flag
jmp keys_end ; return
check_lowercase:
cmp al,'z' ; compare with 'z'
ja keys_end ; end if above
cmp al,'a' ; compare with 'a'
jb keys_end ; end if less
cmp dot_flag,0 ; was dot pressed?
je keys_end ; end if not
;-------------------------------------------------------------------------------
; Change lowercase to uppercase
;-------------------------------------------------------------------------------
sub al,'a'-'A' ; sub difference between cases
mov ds:[bx-2],ax
mov dot_flag,0 ; uppercase - clear flag
jmp keys_end ; return
dot_found:
mov dot_flag,1 ; set flag
jmp keys_end ; return
;-------------------------------------------------------------------------------
; Pop registers and return from interrupt
;-------------------------------------------------------------------------------
keys_end:
pop ds
pop dx
pop bx
pop ax
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
41/130
Ti liu Lp trnh hthng Chng 2
Phm Hng Kim Khnh Trang 41
iret
keys ENDP
;*******************************************************************************
;* Main program
;*******************************************************************************
;-------------------------------------------------------------------------------
; Get interrupt
;-------------------------------------------------------------------------------
start proc
mov ah,35h ; function 35h - read handler address
mov al,09h ; of interrupt 09h
int 21h
mov word ptr old_proc,bx ; store 32-bit address
mov word ptr old_proc+2,es ; of original interrupt handler
push cs
pop ds ; handler code segment to DS
mov dx,offset keys ; offset of handler address to DX
mov ah,25h ; function 25h - set new handler
mov al,09h ; of interrupt 09h
int 21h
mov dx,word ptr old_proc+2
mov ds,dxmov dx,word ptr old_proc
mov ah,25h ; function 25h - set new adress
mov al,60h ; of original interrupt handler
int 21h ; 60h instead of 09h
;-------------------------------------------------------------------------------
; Main loop
;-------------------------------------------------------------------------------
looping:mov ah,08h ; function 08h - read character
int 21h ; ASCII code is returned in AL
cmp al,1Bh ; ESC
je ending ; if ESC end of the loop
mov dl,al ; not ESC - move char to DL
mov ah,02h ; function 02h - display character
int 21h ; ASCII code of char in DL
jmp looping
;-------------------------------------------------------------------------
ending: mov dx,word ptr old_proc+2
mov ds,dx
mov dx,word ptr old_proc
mov ah,25h ; function 25h - set old handler
mov al,09h ; of interrupt 09h
int 21h
mov ah,4Ch ; end of the program
int 21h
start endp
END start
4. To v bt cc s kinTrong hiu hnh Windows, hook (cu mc) l cch cho php mt hm chn mt
s kin (thng ip, chut, phm nhn) trc khi a n i tng cn x l. Hm ny chophp thay i hoc thm ch cm s kin xy ra. Chng c gi l hm lc (filter) v c
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
42/130
Ti liu Lp trnh hthng Chng 2
Phm Hng Kim Khnh Trang 42
phn loi da theo loi s kin b chn. gi c hm lc, ta cn phi thc hin qu trnhgn (attach) vo qu trnh cu mc (nh cu mc bn phm). Vic gn mt hay nhiu hmlc vo mt qu trnh cu mc c gi l thit lp (setting) mt qu trnh cu mc.
Nu mt qu trnh cu mc c nhiu hn mt hm lc, Windows s duy tr mt chuicc hm lc trong hm c ci t vo gn nht s nm u chui v hm ci t lunht s nm cui chui. Nu s kin xy ra lm khi ng qu trnh cu mc, Windows s
gi hm lc u tin trong chui. Qu trnh cu mc vo mt s kin c s dng bnghm SetWindowsHookEx v hm UnhookWindowsHookEx dng xa b hm lc khiqu trnh.
Cch cu mc cung cp cc kh nng mnh m cho mt ng dng Windows. Ccng dng ny c th dng qu trnh cu mc :
- X l v thay i cc thng ip gi n cc dialog box, message box, scroll barv menu ca mt ng dng (WH_MSGFILTER).
- X l v thay i cc thng ip gi n cc dialog box, message box, scroll barv menu ca h thng (WH_SYSMSGFILTER).
-
X l v thay i cc thng ip ca h thng bt c khi no hm GetMessagehay PeekMessagec gi (WH_GETMESSAGE).
- X l v thay i cc thng ip ca h thng bt c khi no hm SendMessagec gi (WH_CALLWNDPROC).
- Ghi hay thc hin li cc s kin bn phm v chut (WH_JOURNALRECORD,WH_JOURNALPLAYBACK).
- X l, sa i hay cm s kin chut (WH_MOUSE).- X l, sa i hay cm s kin bn phm (WH_KEYBOARD).- p ng vi cc hot ng no ca h thng, c kh nng pht trin CBT
(computer-based training) cho ng dng (WH_CBT).- Cm cc hm lc khc (WH_DEBUG).Cc ng dng thng dng qu trnh cu mc :
- Dng phm F1 h tr cho menu, dialog box v message box(WH_MSGFILTER).
- Lu li qu trnh thc hin khi nhn phm hay chut (thng dng cho macro). Vd nh Windows Recorder s dng hook h trchc nng record v playback(WH_JOURNALRECORD, WH_JOURNALPLAYBACK).
- Qun l thng ip xc nhn thng ip c gi ti ca s hay c to ra(WH_GETMESAGE, WH_CALLWNDPROC).
- M phng ng vo chut v bn phm (WH_JOURNALPLAYBACK). Qu trnhcu mc l phng php tin cy thc hin hot ng ny. Nu ta thc hin m
phng bng cch gi thng ip, Windows s khng thc hin cp nht trng thica bn phm hay chut dn n cc hot ng khng mong mun. Nu qu trnhcu mc thc hin iu ny, n sc x l ging nh s kin chut hay bn
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
43/130
Ti liu Lp trnh hthng Chng 2
Phm Hng Kim Khnh Trang 43
phm xy ra. V d nh Microsoft Excel dng hook thc hin macroSENDKEYS.
- Cung c p kh nng CBT cho ng dng thc hin trn mi trng Windows(WH_CBT) lm cho qu trnh pht trin ng dng CBT d dng hn.
Phm vi sdng: Mt trong nhng c trng ca Win32 Hook l cho php chnhqu trnh cu mc l h thng hay dng lung (thread). Hook h thng cho php tc ng
n cc ca s khc trong h thng cn hook lung ch cho php tc ng n ca s hinhnh.
Cch thc sdng qu trnh cu mc:
s dng qu trnh cu mc, ta cn phi bit:
- Lm th no dng hm cu mc ca Windows thm vo hay xa b mt hmlc trong chui hm x l ca mt qu trnh cu mc.
- Cn phi thc hin cc hot ng g ci t mt hm lc.- C th thc hin c hm cu mc no v chng c th lm c g, gi nhng
thng tin no.
4.1. Hm cu mc ca WindowsCc ng dng trn nn Windows s dng cc hm SetWindowsHookEx,
UnhookWindowsHookEx v CallNextHookEx qun l chui hm lc trong mt qutrnh cu mc. Trc phin bn 3.1, Windows thc hin qun l bng cc hmSetWindowsHook, UnhookWindowsHookv DefHookProc. Mc d cc hm ny cngc kh nng thc hin c trn nn Win32 nhng s c mt sc trng khng s dngc nh cc phin bn mi (Ex).
4.1.1. Hm SetWindowsHookEx
Dng thm mt hm lc vo mt qu trnh cu mc.Khai bo:
Public Declare Function SetWindowsHook Lib "user32" Alias "SetWindowsHookA" (ByVal nFilterType As Long, ByValpfnFilterProc As Long) As Long
Public Declare Function SetWindowsHookEx Lib "user32"Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfnAs Long, ByVal hmod As Long, ByVal dwThreadId As Long) AsLong
Hm SetWindowsHookEx gm c 4 tham s:
- idHook: xc nh loi hm cu mc s ci t. Thng s ny gm cc gi tr sau:WH_KEYBOARD: ci t hm cu mc qun l thng ip gi i khi nhn phm
(ngoi tr t hp Ctrl Alt Del).
WH_MOUSE: ci t hm cu mc qun l thng ip khi iu khin chut.
WH_CALLWNDPROC: ci t hm cu mc qun l thng ip trc khi h thnggi n ca s, ch cho php x l thng ip m khng c thay i thng ip.
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
44/130
Ti liu Lp trnh hthng Chng 2
Phm Hng Kim Khnh Trang 44
WH_CALLWNDPROCRET: ci t hm cu mc qun l thng ip sau khi ca s x l. Loi ny cho php thay i gi tr tr v ca thng ip.
WH_MSGFILTER: ci t hm cu mc qun l cc thng ip c to ra gingnh c mt s kin ca dialog box, message box, menu hay scroll bar.
WH_GETMESSAGE: ci t hm cu mc qun l cc thng ip c gi ti hngi.
WH_CBT: ci t hm cu mc nhn thng bo tng dng CBT.
WH_DEBUG: ci t hm cu mc gri mt hm cu mc khc.
WH_FOREGROUNDIDLE: ci t hm cu mc trong hm ny c gi khilung (thread) foreground ca ng dng rnh (idle). Qu trnh ny thng s dng thcthi cc tc v c u tin thp khi lung u tin rnh.
WH_JOURNALPLAYBACK: ci t hm cu mc gi cc thng ip clu bng hm cu mc WH_JOURNALRECORD.
WH_JOURNALRECORD: ci t hm cu mc lu li cc thng ip gi nhng i.
WH_KEYBOARD_LL: ci t hm cu mc qun l s kin bn phm mc thp(dng cho Windows NT/2000/XP).
WH_MOUSE_LL: ci t hm cu mc qun l s kin chut mc thp (dng choWindows NT/2000/XP).
WH_SHELL: ci t hm cu mc cho mt ng dng shell.
WH_SYSMSGFILTER: ci t hm cu mc qun l cc thng ip c to raging nh c mt s kin ca dialog box, message box, menu hay scroll bar. Hm ny qunl cho tt cng dng trong cng mt desktop.
-
lpfn:Con tr chn a ch ca hm lc. Nu tham sdwThreadId= 0 hay chn mt
lung c to bi mt tin trnh (process) khc, tham s lpfn phi chn mt hm cumc trong mt th vin lin kt ng (DLL). Ngc li, lpfn chn hm cu mc chatrong bn thn tin trnh hin hnh.
- hMod:handle chn DLL cha hm x l xc nh bng tham slpfn. Tham shModphi
t l NULL nu hm cu mc nm trong tin trnh hin hnh
- dwThreadId:Xc nh ID ca lung thc hin qu trnh cu mc. Nu dwThreadId= 0, hm cumc s tc ng n tt c cc lung. ng dng c th dng hm GetCurrentThreadId
xc nh ID ca lung hin hnh.
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
45/130
Ti liu Lp trnh hthng Chng 2
Phm Hng Kim Khnh Trang 45
Phm vi thc hin ca hm cu mc m t nh sau:
Hook Phm vi
WH_CALLWNDPROC Lung hay h thng
WH_CBT Lung hay h thng
WH_DEBUG Lung hay h thngWH_GETMESSAGE Lung hay h thng
WH_JOURNALRECORD H thng
WH_JOURNALPLAYBACK H thng
WH_FOREGROUNDIDLE Lung hay h thng
WH_SHELL Lung hay h thng
WH_KEYBOARD Lung hay h thng
WH_MOUSE Lung hay h thng
WH_MSGFILTER Lung hay h thng
WH_SYSMSGFILTER H thng
Hm SetWindowsHookEx tr v handle ca qu trnh cu mc ci t v tr vNULL nu qu trnh ci t khng thnh cng. Handle ny c dng xa qu trnh cumc khi s dng hm UnhookWindowsHookEx . Cc thng bo li khi qu trnh cu mckhng thnh cng l:
- ERROR_INVALID_HOOK_FILTER: m cu mc sai- ERROR_INVALID_FILTER_PROC: hm lc sai- ERROR_HOOK_NEEDS_HMOD: mt qu trnh cu mc ton cc s dng tham
s hMod = NULL hay chn mt lung khng tn ti.- ERROR_GLOBAL_ONLY_HOOK: mt qu trnh cu mc ch dng c cho
h thng nhng c ci t cho mt lung xc nh.
- ERROR_INVALID_PARAMETER: ID ca lung sai.- ERROR_JOURNAL_HOOK_SET: Ci t thm mt qu trnh cu mc dng
nht k (WH_JOURNALRECORD v WH_JOURNALPLAYBACK) trong khimt qu trnh dng ny ang tn ti (ti mt thi im ch cho php mt qu trnhdng nht k).
- ERROR_MOD_NOT_FOUND: Tham s hMod chn mt hm khng xc nhc.
- Khc: khng cho php do bo mt ca h thng hay b nhtrn.
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
46/130
Ti liu Lp trnh hthng Chng 2
Phm Hng Kim Khnh Trang 46
4.1.2. Hm UnhookWindowsHookEx:Dng xo mt hm lc ra khi chui x l mt qu trnh cu mc. Hm ny ly
handle ca qu trnh cu mc tr v t lnh gi hm SetWindowsHookEx v lun tr v gitr TRUE.
Khai bo:
Public Declare Function UnhookWindowsHook Lib "user32"
Alias "UnhookWindowsHook" (ByVal nCode As Long, ByVal
pfnFilterProc As Long) As Long
Public Declare Function UnhookWindowsHookEx Lib
"user32" Alias "UnhookWindowsHookEx" (ByVal hHook As Long)
As Long
4.1.3. Hm CallNextHookEx:Dng chuyn thng tin cu mc n hm cu mc k tip trong chui x l.
Declare Function CallNextHookExLib "user32" (ByVal hHookAs Long, ByVal ncode As Long, ByVal wParam As Long, lParam As
Any) As Long
- hHook: handle ca qu trnh cu mc, l gi tr tr v t lnh gi hmSetWindowsHookEx. Thng thng Windows b qua gi tr ny.
- nCode: m ca qu trnh cu mc, hm cu mc dng m ny xc nhphng php x l thng tin.
- wParam: xc nh tham sc x l bi hm cu mc.- lParam: ging nh wParam.Khi mt qu trnh cu mc khi ng, Windows gi hm u tin trong chui hm
lc v kt thc qun l qu trnh, cc hm lc pha sau s khng x l. thc hin cc
hm pha sau trong chui hm, Windows cung c p hm CallNextHookEx cho php gimt hm k tip trong chui hm lc. Nh vy, nu mt hm lc no khng thc hinhm CallNextHookEx th cc hm lc pha sau s khng thc hin.
Mt v d s dng cc hm x l cu mc nh sau:
'Cha trong mt file module
Public Const WH_KEYBOARD = 2
Public Const VK_SHIFT = &H10
Public Const VK_CONTROL = &H11
Public Const VK_MENU = &H12
Declare Function CallNextHookExLib "user32" (ByVal hHookAs Long, ByVal ncode As Long, ByVal wParam As Long, lParam AsAny) As Long
Declare Function GetKeyState Lib "user32" (ByVal nVirtKeyAs Long) As Integer Xc nh trng thi ca mt phm (Bit15)
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
47/130
Ti liu Lp trnh hthng Chng 2
Phm Hng Kim Khnh Trang 47
Declare Function SetWindowsHookEx Lib "user32" Alias"SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn AsLong, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Declare Function UnhookWindowsHookExLib "user32" (ByValhHook As Long) As Long
Public hHook As Long
Public Function KeyboardProc(ByVal idHook As Long, ByValwParam As Long, ByVal lParam As Long) As Long
If idHook < 0 Then
'Gi hm x l k tip
KeyboardProc = CallNextHookEx(hHook, idHook, wParam,ByVal lParam)
Else
'Nu nhn Shift-C
If (GetKeyState(VK_SHIFT) And &H8000) And wParam =Asc("C") Then
'th hin th kt qu
Form1.Print "Shift-C pressed ..."
End If
If (GetKeyState(VK_CONTROL) And &H8000) And wParam =Asc("C") Then
Form1.Print "Ctrl-C pressed ..."
End If
If (GetKeyState(VK_MENU) And &H8000) And wParam =Asc("C") Then
Form1.Print "Alt-C pressed ..."
End If
'Gi hm x l k tip
KeyboardProc = CallNextHookEx(hHook, idHook, wParam,ByVal lParam)
End If
End Function
-----------------------------------------------
'Cha trong form
Private Sub Form_Load()
't qu trnh cu mc
hHook = SetWindowsHookEx(WH_KEYBOARD, AddressOfKeyboardProc, App.hInstance, App.ThreadID)
End Sub
Private Sub Form_Unload(Cancel As Integer)
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
48/130
Ti liu Lp trnh hthng Chng 2
Phm Hng Kim Khnh Trang 48
'Xo qu trnh cu mc
UnhookWindowsHookEx hHook
End Sub
4.2. Hm lcHm lc thng c dng nh sau:
Function FilterFunc (ByVal nCode As Integer, ByVal wParamAs Long, ByVal lParam As Long)
Hm lc nhn 3 tham s:
- nCode: m ca qu trnh cu mc, l mt s nguyn xc nh hm lc, v d nhloi s kin lm khi ng qu trnh cu mc. M ny c xc nh khi hm lcx l s kin hay gi hm DefHookProc. Nu m cu mc < 0 th hm lc skhng x l s kin m s gi hm DefHookProc truyn 3 tham s cn li chohm lc k tip trong chui hm lc bng hm CallNextHookEx.
- Tham s th hai wParam v th ba lParam cha cc thng tin cn thit cho hmlc. Mi qu trnh cu mc dng cc gi tr wParam v lParam khc nhau. V dnh, qu trnh cu mc bn phm WH_KEYBOARD cha m phm nhn trongwParam v trng thi bn phm trong lParam. Hay qu trnh cu mcWH_MSGFILTER cha gi tr NULL trong wParam v mt con tr ch nthng ip cha trong lParam.
Hm lc dng trong DLL:
i vi cc qu trnh cu mc cc b, hm lc c tht ngay trong m lnh ca ngdng nhng i vi cc qu trnh cu mc h thng, hm lc phi c t trong mt DLL.Ch c qu trnh cu mc dng nht k (WH_JOURNALRECORD vWH_JOURNALPLAYBACK) l ngoi l. Hm lc ca qu trnh cu mc h thng phichia s d liu cho tin trnh thc hin qu trnh cu mc. Cc bin ton cc s dng trongDLL phi c xc nh r hay phi t trong vng d liu chia s.
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
49/130
Ti liu Lp trnh hthng Chng 3
Phm Hng Kim Khnh Trang 49
Chng 3GIAO TIP THIT B CHUN
1. Giao tip bn phm
1.1. Nguyn l hot ng
Hnh 3.1 - S nguyn l v cc ghp ni ca bn phm
Chip x l bn phm lin tc kim tra trng thi ca ma trn qut (scan matrix)
xc nh cng tc ti cc ta X, Y ang c ng hay mv ghi mt m tng ng vobm bn trong bn phm. Sau m ny sc truyn ni tip ti mch ghp ni bnphm trong PC. Cu trc ca SDU (Serial Data Unit) cho vic truyn s liu:
0 10
STRT DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 PAR STOP
STRT: bit start (lun bng 0)DB0 - DB7: bit s liu t 0 n 7.PAR: bit parity (lun l)STOP: bit stop (lun bng 1).
X
-
Deco
der
D7
11 bits SDU
D5
Keyboard Interface
IRQ1 Y- Decoder
D2
Keyboard
ScanEnable
Keyboard cableKey
boar
d
chip(PC/XT)
or
Keyboard
Controller
D1Serial
Interface
ScanMatrix
IRQ Logic
D6
8042/8741/8742(AT ect)
D3
D0
D4
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
50/130
Ti liu Lp trnh hthng Chng 3
Phm Hng Kim Khnh Trang 50
Mi phm nhn sc gn cho 1 m qut (scan code) gm 1 byte. Nu 1 phm cnhn th bn phm pht ra 1 m make code tng ng vi m qut truyn ti mch ghp ni
bn phm ca PC. Ngt cng INT 09h c pht ra qua IRQ1.
Chng trnh x l ngt s x l m ny tu theo phm SHIFT c c nhn haykhng. V d: nhn phm SHIFT trc, khng ri tay v sau nhn C:
make code c truyn - 42(SHIFT) - 46 (C).
Nu ri tay nhn phm SHIFT th bn phm s pht ra break code v m ny ctruyn nh make code. M ny ging nh m qut nhng bit 7 c t ln 1, do vy ntng ng vi make code cng vi 128. Tu theo break code, chng trnh con x lngt s xc nh trng thi nhn hay ri ca cc phm. Th d, phm SHIFT v C c ritheo th t ngc li vi th d trn:
break code c truyn 174 ( bng 46 cng 128 tng ng vi C) v 170(bng 42 cng 128 tng ng vi SHIFT).
Phn cng v phn mm x l bn phm cn gii quyt cc vn vt l sau:
- Nhn v nh phm nhng khng c pht hin.
Chn 1: clock
Chn 2: d liu
Chn 3: Reset
Chn 4: GND
Chn 5: Vcc
Hnh 3.2 u cm bn phm AT
Chn 1: d liu
Chn 2: khng dngChn 3: GND
Chn 4: Vcc
Chn 5: clock
Chn 6: khng dng
Hnh 3.3 u cm bn phm PS/2
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
51/130
Ti liu Lp trnh hthng Chng 3
Phm Hng Kim Khnh Trang 51
- Kh nhiu rung c kh v phn bit 1 phm c nhn nhiu ln hay cnhn ch 1 ln nhng c gi trong mt khong thi gian di.
1.2. Lp trnh giao tip qua cc cngBn phm cng l mt thit b ngoi vi nn v nguyn tc c th truy xut n qua cc
cng vo ra.
Cc thanh ghi v cc port:S dng 2 a ch port 60h v 64h c th truy xut bm vo, bm ra v thanh
ghi iu khin ca bn phm.
Port Thanh ghi R/W60h m ng ra R60h m ng vo W64h Thanh ghi iu khin W64h Thanh ghi trng thi R
Thanh ghi trng thixc nh trng thi hin ti ca biu khin bn phm. Thanhghi ny chc (read only) v c bng lnh IN ti port 64h.
7 0
PARE TIM AUXB KEYL C/D SYSF INPB OUTB
PARE: Li chn l ca byte cui cng c vo t bn phm; 1 = c li chn l, 0= khng c.
TIM: Li qu thi gian (time-out); 1 = c li, 0 = khng c.AUXB: m ra cho thit b ph (ch c my PS/2); 1 = gi s liu cho thit b,
0 = gi s liu cho bn phm.KEYL: Trng thi kha bn phm; 1 = khng kha, 0 = kha.C/D: Lnh/d liu; 1 = Ghi qua port 64h, 0 = Ghi qua port 60h.SYSF: ch thng; 1 = t kim tra thnh cng, 0 = reset khi cp inINPB: Trng thi m vo; 1 = d liu CPU trong bm vo, 0 = m vo rng.OUTB: Trng thi m ra; 1 = d liu biu khin bn phm trong bm ra, 0
= m ra rng.
Thanh ghiiu khinCc lnh cho biu khin bn phm:
M M tA7h Cm thit b phA8h Cho php thit b phA9h Kim tra giao tip thit b ph v lu m kim tra vo bm ra
00h: khng li01h: CLKmc thp02h: CLKmc cao03h: DATA mc thp
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
52/130
Ti liu Lp trnh hthng Chng 3
Phm Hng Kim Khnh Trang 52
04h: DATA mc caoFFh: li khc
AAh T kim tra (ghi 55h vo bm ra nu khng liABh Kim tra giao tip bn phm v lu m kim tra vo bm raADh Cm bn phmAEh Cho php bn phm
C0h c cng vo v truyn d liu n bm raC1h c cc bit 3 0 ca cng vo v truyn n cc bit 3- 0 ca thanh ghi trng thicho n khi INPB = 1
C2h c cc bit 7 4 ca cng vo v truyn n cc bit 7- 4 ca thanh ghi trng thicho n khi INPB = 1
D0h c cng raD1h Ghi cng raD2h Ghi vo bm ra v xo AUXBD3h Ghi vo bm ra v set AUXBD4h Ghi byte d liu tip theo vo thit b ph
Kha bn phm:
Start:IN AL, 64h ; c byte trng thiTEST AL, 02h ; kim tra bm c y hay khngJNZ startOUT 64h, 0ADh ; kha bn phm
Output
Buffer
64h
60h
Status
Registe
r
Keyboard
Output
Port
PCSystemBus
60h
PS/2 only
64h
Input
Buffer
Control
Register
Input
Port
Keyboard Controller
Hnh 3.4 - Biu khin bn phm
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
53/130
Ti liu Lp trnh hthng Chng 3
Phm Hng Kim Khnh Trang 53
Cc lnh cho bn phm:M Lnh M tEDh Bt/tt LED Bt/tt cc n led ca bn phmEEh Echo Tr v byte EEhF0h t/nhn dng m qut t 1 trong 3 t p m qut v nhn din cc m qut
tp m qut hin ti.F2h Nhn din bn phm Nhn din ACK = AT, ACK+abh+41h=MF II.F3h t tc lp li/tr t tc lp li v thi gian tr ca bn phmF4h Enable Cho php bn phm hot ngF5h Chun/khng cho php t gi tr chun v cm bn phm.F6h Chun/cho php t gi tr chun v cho php bn phm.FEh Resend Bn phm truyn k t cui cng mt ln na ti b
iu khin bn phmFFh Reset Chy reset bn trong bn phm
Th d: lnh bt n led cho phm NUMCLOCK, tt tt c cc n khc.MOV AL,0EDh
OUT 60H, ALWAIT:
IN AL, 64H ; c thanh ghi trng thiJNZ WAIT
MOV AL,02h
OUT 60H, AL ; bt n cho numclock
Cu trc ca byte ch th nh sau:
7 2 1 00 0 0 0 0 CPL NUM SCR
CPL: 1 = bt n Caps Lock; 0 = tt NUM: 1 = bt n Num Lock; 0 = ttSCR: 1 = bt n Scroll Lock; 0 = tt
1.3. Lp trnh giao tip qua cc hm ca DOS, BIOSBIOS ghi cc k t do vic nhn cc phm vo bm tm thi c gi l bm
bn phm (keyboard buffer), c a ch 40h:1Eh, gm 32 byte v kt thc a ch 40h:3Dh.Mi k tc lu tr bng 2 byte, byte cao l m qut, v byte thp l m ASCII. Chngtrnh x l ngt s xc nh m ASCII t m qut bng bng bin i v ghi c 2 m vo bm bn phm. Bm bn phm c t chc nh bm vng (ring buffer) v c qunl bi 2 con tr. Cc gi tr con trc lu tr trong vng d liu ca BIOS a ch40h:1Ah v 40h:1Ch. Con tr ghi (40h:1Ch) cho bit v tr cn trng k tip ghi k tnhp, con trc (40h:1Ah) cho bit v tr k tu tin sc. T, bm bn phmrng khi con tr ghi v con trc trng nhau bm ch cha c 15 k t.
Ti liu ny c upload & download min ph ti website: http://hutonline.net
8/14/2019 Lap%20trinh%20he%20thong
54/130
Ti liu Lp trnh hthng Chng 3
Phm Hng Kim Khnh Trang 54
Cc hm ca ngt 16h:
Hm 0h - c k t t bn phm, nu khng nhn th s ch
Ra: AH = scancode, AL = m ASCII. Nu phm nhn l cc phm c bit th AL = 0
Hm 1h - ZF = 1 nu khng c k t trong bm. Gi tr tr v ging nh hm00h nhng khng xo k t ra khi bm
Hm 2h - Tr v trng thi ca cc phm, kt qu cha trong AL
7 6 5 4 3 2 1 0
INS CAPS
LOCK
NUM
LOCK
SCROLL
LOCK
ALT CTRL LEFT
SHIFT
RIGHT
SHIFT
Hm 10h - Ging hm