Download as pdf or txt
Download as pdf or txt
You are on page 1of 92

Hpv

HVKTMM

Mc lc
Chng I. Tng quan ....................................................................................................... 5
1. Kin trc h thng ........................................................................................................ 6
1.1. Kin trc phn cng................................................................................................. 6
1.1.1. M hnh v nguyn l my Von Neumaan ....................................................... 6
1.1.2. Cu trc CPU intel 80x86 ................................................................................. 6
1.1.2.2. M t .......................................................................................................... 7
1.1.2.3. B thanh ghi............................................................................................... 8
1.1.3. Phng thc qun l b nh ............................................................................. 9
1.1.3.1. S phn on b nh ................................................................................ 9
1.1.3.2. a ch vt l v a ch logic ................................................................. 10
1.1.3.3. a ch lgic v cc thanh ghi................................................................. 11
1.1.4. CPU giao tip vi thit b ngoi vi ................................................................. 12
1.2. Hot ng ca h iu hnh MS-DOS................................................................... 12
1.2.1. Cc thnh phn ca MS-DOS ......................................................................... 13
1.2.2. B tr HH trong b nh trung tm................................................................ 14
1.2.3. Chng trnh mc ni (Bootstrap Loader) ..................................................... 15
1.2.4. Chng trnh vo/ra c s BIOS .................................................................... 16
1.2.4.1. ROM.BIOS .............................................................................................. 16
1.2.4.2. BIOS.COM .............................................................................................. 16
1.2.3. Khi iu hnh a DOS.COM....................................................................... 17
1.2.4.Tp lnh COMMAND.COM ........................................................................... 19
2. T tng chung ca lp trnh vi thit b ngoi vi .................................................. 24
2.1. Cc thng s phn cng ca thit b ngoi ........................................................... 24
2.1.1. Cng vo/ra..................................................................................................... 24
2.1.2. Cc vng nh tham s..................................................................................... 24
2.2. T tng lp trnh.................................................................................................. 26
2.2.1. Gii thiu ........................................................................................................ 26
2.2.2. Qui tc chung lp trnh cho thit b ngoi vi................................................... 27
2.2.2.1. Trao i tin gia CPU vi thit b ngoi vi ............................................. 27
2.2.2.2. Khi ghp ni iu khin trao i tin ...................................................... 28
2.2.2.3. Lp trnh trao i tin ................................................................................ 28
2.2.3. Dng tng qut ca chng trnh phc v thit b ngoi s dng ngt .......... 30
Chng II. H thng ngt .............................................................................................. 32
1. Ngt v b iu khin PIC 8259 ................................................................................ 33
1.1. Mt s khi nim.................................................................................................... 33
1.2. Phn loi ngt........................................................................................................ 33
1.3. PIC 8259 v h thng ngt cng ........................................................................... 33
1

Hpv

HVKTMM
1.3.1. Ngt cng........................................................................................................ 34
1.3.2. Thit b iu khin PIC 8259 v c ch hot ng ca h thng ngt cng... 34

2. Cc ngt ca MS-DOS dnh cho thit b ngoi vi ................................................... 37


2.1. Cc ngt ca BIOS v ROMBIOS ......................................................................... 37
2.2. Cc ngt ca DOS (gi cc chc nng) ................................................................ 38
2.2.1. Cc chc nng ca ngt INT 21h ca DOS .................................................... 38
Chng III. Lp trnh cho cc thit b vo ra .............................................................. 41
1. Lp trnh bn phm..................................................................................................... 42
1.1. Cu trc v nguyn l hot ng ca bn phm .................................................... 42
1.2. Cc ngt dng cho bn phm ................................................................................. 43
1.3. Lp trnh phc v bn phm s dng ngt ............................................................. 45
1.3.1. Quy tc chung ................................................................................................. 45
1.3.2. Mt s v d .................................................................................................... 46
1.4. Lp trnh trc tip cho bn phm ........................................................................... 46
1.4.1. c im ca khi iu khin bn phm......................................................... 46
1.4.2. Qui tc chung ca lp trnh trc tip bn phm............................................... 47
1.4.3. Cc v d ......................................................................................................... 48
2. Lp trnh cho chut .................................................................................................... 50
2.1. Cu trc v hot ng ca chut........................................................................... 50
2.1.1. Cu to v hot ng ca chut ...................................................................... 50
2.1.2. Mch ghp ni chut....................................................................................... 50
2.1.3. iu khin chut ............................................................................................. 50
2.1.4. Mn hnh o cho chut.................................................................................... 50
2.2. Ngt dnh cho chut .............................................................................................. 51
2.3. Lp trnh cho chut................................................................................................ 52
2.3.1. Kch hot v xc nh loi chut..................................................................... 52
2.3.1.1. Cc chc hm nng .................................................................................. 52
2.3.1.2. Chng trnh v d................................................................................... 52
2.3.2. Trng thi chut ............................................................................................. 53
2.3.2.1. Cc hm chc nng v trng thi chut ................................................... 53
2.3.2.2. Chng trnh v d................................................................................... 54
2.3.3. iu khin con tr chut................................................................................. 54
2.3.3.1. Cc hm chc nng v con tr chut ....................................................... 54
2.3.4. Phm nhn ....................................................................................................... 58
2.3.4.1 Cc hm chc nng ................................................................................... 58
2.3.4.2. Chng trnh v d................................................................................... 59
2.3.5. Tc di chuyn ca con tr chut ................................................................ 59
2.3.5.1. Cc hm chc nng .................................................................................. 59
2.3.5.2. Chng trnh v d................................................................................... 59

Hpv

HVKTMM
2.3.6. Ci t chng trnh x l khi dng chut ..................................................... 59
2.3.6.1. Ci t chng trnh x l s kin........................................................... 59
2.3.6.2. Chng trnh v d................................................................................... 60

3. Lp trnh mn hnh..................................................................................................... 62
3.1. Cu trc, hot ng ca mn hnh v ba( card) ghp ni.................................... 62
3.1.1. Mn hnh ......................................................................................................... 62
3.1.2. B ghp ni mn hnh ..................................................................................... 62
3.1.3. Cc ch ca mn hnh ................................................................................ 63
3.2. Cc ngt v cc chc nng cho mn hnh ............................................................. 64
3.3. Lp trnh cho mn hnh s dng ngt.................................................................... 65
3.3.1. Nhim v......................................................................................................... 65
3.3.2. Phng php ................................................................................................... 65
3.3.3. Lp trnh chung cho mn hnh ........................................................................ 65
3.3.3.1. Xc nh ch v trng thi mn hnh .................................................. 65
3.3.3.2. Xc nh trang mn hnh.......................................................................... 67
3.3.3.3. Xc nh v tr, kch thc con tr ........................................................... 67
3.3.3.4. Xc nh kch thc ca ca s mn hnh ............................................... 68
3.3.4. Lp trnh ch vn bn.............................................................................. 68
3.3.4.1. Ghi ch iu khin .............................................................................. 68
3.3.4.2. Xc nh mu cho ba CGA ..................................................................... 68
3.3.4.3. Xc nh mu cho EGA/VGA( c th khng cn) .................................. 68
3.3.4.4. c ghi k t vi ngt INT 10h............................................................... 68
3.3.4.5. Ghi k t dng ngt INT 21h ca DOS ................................................... 70
3.3.5. Lp trnh ch ho ............................................................................... 70
3.4. Lp trnh trc tip cho mn hnh........................................................................ 71
3.2.6.1. Cu trc v nguyn l hot ng ca card mn hnh............................... 71
3.2.6.2. Lp trnh trc tip mn hnh .................................................................... 73
4. Lp trnh cho my in .................................................................................................. 75
4.1. Vi mch cng song song ........................................................................................ 75
4.2. Lp trnh trc tip cho my in song song .............................................................. 75
4.2.1. Khi pht my in............................................................................................. 75
4.2.2. a k t cn in ra my in.............................................................................. 76
4.3. Lp trnh s dng ngt cho my in ........................................................................ 78
4.3.1. a ni dung mn hnh ra my in: s dng ngt INT 5h ............................... 78
4.3.2. S dng ngt INT 17h..................................................................................... 78
4.3.3. Chng trnh v d .......................................................................................... 79
Bi tp .............................................................................................................................. 81
Chng IV. Lp trnh thao tc a v file .................................................................... 82
1. T chc lu tr file trn a....................................................................................... 83

Hpv

HVKTMM

1.1. Cu trc a ........................................................................................................... 83


1.2. Dung lng a: (byte) .......................................................................................... 83
1.3. Truy nhp a:........................................................................................................ 83
1.4. S phn b cc file: ............................................................................................... 83
1.4.1. Cluster (lin cung): ......................................................................................... 84
1.4.2. Bng FAT: ...................................................................................................... 84
1.5. Tin trnh c ghi file ca DOS ............................................................................. 84
1.5.1. Dos c mt file:............................................................................................. 84
1.5.2. Dos ghi mt file: ............................................................................................. 85
2. Lp trnh X l file ..................................................................................................... 85
2.1. Th file: .................................................................................................................. 85
2.2. c/ghi file............................................................................................................. 85
2.3. Thay i thuc tnh file:......................................................................................... 85
3. c v ghi cc sector trc tip ca a: .................................................................... 86
Ph lc: ............................................................................................................................ 88
Debug ca MsDOS ....................................................................................................... 88
Assembly c bn............................................................................................................ 88
Tp lnh 82086 ............................................................................................................. 88
Bi tp ln........................................................................................................................ 92

Hpv

HVKTMM

CHNG I. TNG QUAN


Mc ch: hiu c mt cc tng quan v h thng, hot ng ca h thng, t
tng chung ca lp trnh vi thit b ngoi vi
Ni dung: H thng li mt cch khi qut cu trc my tnh hiu c tng
quan v:
 Kin trc chung ca h thng phn cng: cc khi trong h thng, nguyn
l hot ng ca my tnh, cch thc CPU giao tip vi cc thnh phn
khc
 H thng phn mm: cu trc h iu hnh, tin trnh hot ng ca my t
khi bt u khi ng, cc mc phn mm
 Cc tng tng tng quan ca lp trnh h thng cho thit b ngoi vi

Hpv

HVKTMM

1. KIN TRC H THNG


1.1. KIN TRC PHN CNG
1.1.1. M HNH V NGUYN L MY VON NEUMAAN
M hnh:

n v x
l

B nh
Trao i thng
tin
iu khin
H thng
vo/ra

D liu

Chng trnh

Nguyn l:
 Kin trc phn cng gm 3 khi c bn : n v x l, b nh v h thng
vo/ra; cc khi lin lc vi nhau qua h thng bus
 L my tnh nh chng trnh:
Chng trnh iu khin, x l d liu cng c xem l d liu v
c lu tr trong b nh
B nh chia lm nhiu , mi c 1 a ch (s th t) c th chn
la nh trong qu trnh c ghi d liu
 L my tnh tun t: cc lnh c thc hin tun t, ti mi thi im ch
c mt lnh c thc hin

1.1.2. CU TRC CPU INTEL 80X86


1.1.2.1. M hnh

Hpv

HVKTMM

1.1.2.2. M T
L vi x l 16 bit.
Cc php ton x l bn trong CPU l php ton thc hin trn s nh phn 8 v
16 bit.
Bus a ch c 20 ng nn c th qun l ln n 1Mb(=220bit) b nh (phm vi
a ch t 00000h n FFFFFh).
Bus d liu ca 80x86 c 16 bit.
Cho php s dng h thng ngt v c ch DMA (Direct Memory Access). Qu
trnh chuyn d liu trc tip gia thit b ngoi vi v b nh chnh khng thng
qua CPU gi l qu trnh(c ch) DMA.
S khi vi x l 80x86 gm hai phn chnh : khi giao tip Bus (BIU:Bus
interface unit) v khi thc thi (EU:Execution unit).
Khi BIU chu trch nhim ly lnh v giao tip ra bn ngoi iu khin b nh
v I/O.
Khi EU c nhim v thi hnh lnh, nh th, kim tra cc tn hiu trng thi, cc
tn hiu yu cu ngt, c ch DMA, tn hiu RESET, tn hiu READY.

Hpv

HVKTMM

Cc lnh trong b nh c khi BIU ly vo lin tc v ct trong hng i lnh


(c chiu di 6 byte i vi 8086 hoc 4 byte i vi 8088). Sau khi EU ly
lnh t hng i lnh ra gii m v thi hnh.
Hot ng ca hai khi BIU v EU din ra c lp vi nhau nn qu trnh ly lnh
v thi hnh lnh c vi x l thc hin ng thi theo c cu ng ng
(pipeline). iu ny tuy khng lm tng tc x l ca CPU (gii hn bi tn s
xung ng b) nhng lm gim bt thi gian thi hnh ca c chng trnh. Ngha
l n ch lm gim thi gian thc thi chng trnh ch khng lm tng tc ca
CPU. Tc CPU do phn cng quy nh v gii hn bi xung nhp ng b.
1.1.2.3. B THANH GHI
B thanh ghi a nng:
Gm 8 thanh ghi 16 bit.
Cc thanh ghi AX, BX, CX, DX c th dng phn
na nh cc thanh ghi 8 bit AH, AL, BH, BL, CH,
CL, DH, DL.

Thanh ghi AH l na cao ca thanh ghi AX.


Thanh ghi AL l na thp ca thanh ghi AX.
Chng hn nu AX= 1234h th AH=12h v
AL=34h.
AX l thanh ghi b tch ly 16 bit (ACC).
AL l thanh ghi b tch ly 8 bit.
BX l thanh ghi c s (base register).
CX l thanh ghi b m (counter).
DX l thanh ghi d liu (data).
SI l thanh ghi ch s ngun (source index).
DI l thanh ghi ch s ch (destination index).
BP l thanh ghi con tr nn (base pointer).
SP l thanh ghi con tr ngn xp (stack pointer).
B thanh ghi on v con tr lnh:
Gm 4 thanh ghi on 16 bit dng qun l b
nh theo phng php phn on.
CS l thanh ghi on chng trnh (code segment).
DS l thanh ghi on d liu (data segment).
SS l thanh ghi on ngn xp (stack segment).
ES l thanh ghi on m rng (extra segment).
IP l thanh ghi con tr lnh (instruction pointer).
Thanh ghi c (thanh ghi trng thi):
SF l c du (sign flag).
CF l c nh (carry flag).

Hpv

HVKTMM

ZF l c khng (zero flag).


OF l c trn (overflow flag).
AF l c trung gian (auxiliary flag) hay cn gi l c nh na (half-carry
flag).
AF = 0 khi khng c s trn v dung lng 4 bit.
AF = 1 khi c s trn v dung lng 4 bit.
V d : php ton 00001001 + 00000111 = 00010000 s lp c AF ln 1.
C AF thng c dng trong cc php ton BCD (l cc s dng h nh
phn 4 bit biu din s thp phn t 0 9).
PF l c kim tra chn l (parity flag).
PF = 1 nu s bit 1 ca kt qu l s chn.
PF = 0 nu s bit 1 ca kt qu l s l.
V d : sau khi thc hin (00000101 AND 00000101) th PF = 1.
DF l c nh hng (direction flag).
DF = 0 : nh hng gim a ch cho cc lnh x l chui.
DF = 1 : nh hng tng a ch cho cc lnh x l chui.
IF l c ngt (interrupt enable flag).
IF = 0 : cm ngt cng INTR.
IF = 1 : cho php ngt cng INTR.
TF l c by (trap flag). Dng chy tng bc khi cn kim tra hot
ng ca CPU.

1.1.3. PHNG THC QUN L B NH


1.1.3.1. S PHN ON B NH
Trong ch thc, b nh c qun l theo c ch phn on. Mc lgic, b
nh c nh v theo on, mi on nh c phn thnh nhiu nh; chng
trnh khng c xem l chui lin tc ca m lnh, d liu m c chia thnh
cc on: m lnh, d liu, ngn xp. Mi on c cha trong b nh c a ch
xc nh.
C 4 loi on khc nhau:
on m lnh (code segment): cha m lnh ca chng trnh
on d liu (data segment): cha d liu ca chng trnh
on ngn xp (stack segment): cha thng tin v d liu phc v chng
trnh con
on m rng (extra segment): cha d liu m rng
CPU 8086 dng phng php phn on b nh qun l b nh 1Mb ca n.
- a ch 20 bit ca b nh 1MB khng th cha trong cc thanh ghi 16 bit ca
CPU 8086 v vy b nh 1 MB c chia ra thnh cc on (segment) 64KB.
- a ch trong cc on 64KB ch c 16 bit nn CPU 8086 d dng x l bng cc
thanh ghi ca n.

Hpv

HVKTMM

1.1.3.2. A CH VT L V A CH LOGIC
- a ch 20 bit c gi l a ch vt l. a ch vt l c dng trong thit k
cc mch gii m a ch cho b nh v xut nhp.
- Ngc li, trong lp trnh, a ch vt l khng c dng m n c thay th
bng a ch lgic.
- a ch lgic l a ch gm c hai thnh phn : a ch on (segment) v a
ch trong on (offset).
- Mi a ch thnh phn ch c 16 bit v c vit theo cch sau :
SEGMENT:OFFSET
- Segment v offset l cc s h 16.
- Cch tnh a ch vt l t a ch lgic nh sau :

Hoc theo cng thc :


V d : tnh a ch vt l tng ng vi a ch lgic B001:1234
a ch vt l = B0010h + 1234 = B1244h
- a ch segment cn c gi l a ch nn ca on. N cho bit im bt u
ca on trong b nh.
- Trong khi , a ch offset th hin khong cch k t u on ca nh cn
tham kho. Do offset c 16 bit nn chiu di ti a ca mt on l 64K. Trong
mi on, nh u tin c offset l 0000h v nh cui cng c offset l
FFFFh.

- Mi nh ch c duy nht mt a ch vt l nhng c th c nhiu a ch logic.


Chng hn cc a ch lgic 1234:1234, 1334:0234, 1304:0534, ... u c
chung a ch vt l 13574h.
- hiu r ti sao, ta ln lt xem quan h gia a ch vt l vi cc thnh phn
segment v offset.
- Vi a ch lgic 0000:0000 ta c a ch vt l l 00000h.

10

Hpv

HVKTMM

- By gi ta gi nguyn phn segment v tng phn offset ln 1 thnh ra a ch


lgic 0000:0001. a ch vt l tng ng l 00001h.
- Tng t vi a ch lgic 0000:0002 ta c a ch vt l 00002h.
- Ta nhn thy khi offset tng 1 n v th a ch vt l tng 1 a ch hoc l tng
1 byte. Nh vy c th xem n v ca offset l byte.
- By gi ta lm li qu trnh trn nhng khng tng offset na m tng phn
segment. Ta c :
a ch lgic 0001:0000 tng ng vi a ch vt l 00010h.
a ch lgic 0002:0000 tng ng vi a ch vt l 00020h.
- Ta nhn thy khi segment tng 1 n v th a ch vt l tng 10h a ch hoc l
tng 16 byte. Ngi ta gi n v ca segment l paragraph.
1 paragraph = 16 bytes
- iu ny cng c th c gii thch l do cch tnh a ch vt l t a ch lgic
nu trn.

- T cc a ch vt l tnh ra trn, ta thy segment 0000 nm u vng nh


nhng segment 0001 bt u cch u vng nh ch c 16 bytes, segment 0002
bt u cch u vng nh 32 bytes . . .
- Phn chng chp ca c ba segment 0000, 0001 v 0002 trn hnh v l vng b
nh m bt k nh no nm trong (a ch vt l t 00020h n 0FFFFh) u
c th c a ch lgic tng ng trong c 3 segment. Chng hn nh c a
ch vt l 0002Dh s c a ch lgic trong segment 0000 l 0000:002D, trong
segment 0001 l 0001:001D v trong segment 0002 l 0002:000D.
- Nh vy nu vng b nh no cng c nhiu segment chng chp ln nhau th
cc nh trong cng c nhiu a ch lgic (mt nh c t nht 1 a ch lgic
v nhiu nht l 65536/16=4096 a ch lgic).
1.1.3.3. A CH LGIC V CC THANH GHI
- tham chiu n b nh trong chng trnh, vi x l
8086 cho php s dng cc a ch lgic mt cch trc
tip hoc thng qua cc thanh ghi ca n.
- Cc thanh ghi on dng cha a ch on
segment.
- Cc thanh ghi tng qut dng cha a ch trong
on offset.
11

Hpv

HVKTMM

- tham chiu n a ch lgic c segment trong thanh ghi DS, offset trong
thanh ghi BX, ta vit DS:BX. Nu lc tham chiu, DS=2000h, BX=12A9h th a
ch lgic DS:BX chnh l tham chiu n nh 2000:12A9.
- Trong cch s dng a ch lgic thng qua cc thanh ghi ca vi x l 8086, c
mt s cp thanh ghi lun lun phi dng chung vi nhau mt cch bt buc nh
sau :
CS:IP : ly lnh (a ch lnh sp thi hnh).
SS:SP : a ch nh ngn xp.
SS:BP : thng s trong ngn xp (dng cho chng trnh con).
DS:SI : a ch chui ngun (ch c ngha trong cc lnh x l chui).
ES:DI : a ch chui ch (ch c ngha trong cc lnh x l chui).
- Chng trnh m vi x l 8086 thi hnh thng c 3 on : on chng trnh c
a ch trong thanh ghi CS, on d liu c a ch trong thanh ghi DS v on
chng c a ch trong thanh ghi SS.

1.1.4. CPU GIAO TIP VI THIT B NGOI VI


 M hnh minh ho:

MONITOR

CPU

MEMORY

VIDEO
CONTR
OLLER

KEYBOARD

KEYBOARD
CONTROLLE
R

HARD
DISK

FLOPPY
DISK

HARDDI
SK
CONTR
OLLER

FLOPPY
DISK
CONTR
OLLER

BUS

 CPU nhn bit mt thit b I/O:


Mi I/O c mt a ch ring( thng gi l cng); mi khi truy xut
n mt I/O no, CPU xut ra a ch(cng) ca I/O ra bus a ch
Thng qua B gii m a ch s xc nh I/O m CPU mun truy xut
s c chn (tn hiu chip select mc tch cc cao)
 Trn thc t, vic iu khin vo ra c thc hin thng qua h thng
ngt( c th l ngt cng hoc ngt mm) l cc chng trnh vit sn ca
h iu hnh hoc ca cc khi iu khin. H thng ngt s c tm hiu
chi tit trong chng II.

1.2. HOT NG CA H IU HNH MS-DOS


12

Hpv

HVKTMM

1.2.1. CC THNH PHN CA MS-DOS


 H MS-DOS c 6 thnh phn:
Chng trnh ng dng

DOS

Command.com

BIOS

Mc ni

ROM BIOS

CPU

Lnh ngoi

 ROMBIOS: l h chng trnh cha trong ROM, thc hin ngay sau khi bt
ngun nui ca my vi tnh, cha nhng chng trnh iu khin cc b
phn ca my (bn phm, mn hnh, b nh, my in).
 Chng trnh khi ng (Boot Sector-rnh ghi khi ng): nm trn cung
u tin ca mi a cng v khi pht tin trnh np vo b nh hai tp
nm trn a l BIOS v DOS ca HH MS-DOS.
 Khi BIOS: (cn gi BIOS.COM) vi ui COM, cung cp mt giao din
mc thp vi ROM-BIOS v iu khin vo/ra ca nhng thit b ngoi
(bn phm, mn hnh).
 Khi DOS: cung cp mt giao din mc cao vi cc chng trnh p
dng, n iu khin th mc ca cc tp cng nh s ngn cn ghi ln a.
Chnh khi ny gi cc chc nng DOS bi s trung gian ca ngt INT
21h.
 Khi x l COMMAND.COM: x l nhng lnh khc nhau m ngi s
dng g vo bn phm ra lnh cho HH.
 Nhng lnh ngoi (external): l nhng lnh khc ca MS-DOS m
khng c trong b phin dch (interpreter) ca lnh COMMAND.COM
hoc v cc lnh ny t dng, hoc kch thc ca lnh rt ln chim nhiu
a ch nh. m rng, ngi ta gi cc lnh ngoi l tt c cc tp thc
hin c ca a (ui .EXE hay .COM).
13

Hpv

HVKTMM

 Ghi ch:
 Khi BIOS l giao din mc thp nn phi vit li cho mi my vi tnh
khc nhau.
 Khi DOS, giao din mc cao ca mi my v nh nhau i vi mi my
tnh. Vy cc giao din l nh nhau (DOS duy nht), nhng chng trnh
ng dng nh vy c th chuyn t my ny sang my khc.

1.2.2. B TR HH TRONG B NH TRUNG TM


H iu hnh c chng trnh mc ni (Bootstrap) trn a (cng, mm)
cung u tin, np vo b nh trung tm (t a h thng mm hay cng) theo cc
vng ca b nh trung tm nh hnh 2.6.
Bng vct ngt l 256 byte nh dng cha cc a ch (byte thanh ghi on
v byte offset- lch) ca tt c cc chng trnh con phc v ngt, tc cc
chng trnh phc v ca BIOS, DOS, COMMAND.COM v ROM.BIOS. Mi
mt chng trnh phc v ngt ny m bo thc hin mt nhim v xc nh
r rng ca MS-DOS (xem chi tit di mc di).
ROM BIOS: 8KB

FFFFFh
FE000h
....

ROM: 32KB
(ROM basic iu khin a cng)
RAM trnL 640KB dnh cho HH
nh mn hnh
Phn na thng ch ca
command.com
RAM dnh ghi v chy chng
trnh ngoi
Phn thng tr ca command.com
DOS
BIOS
Vng lin lc DOS
Vng lin lc BIOS
Bng vect ngt
00400h

Hai khi DOS v BIOS c hai vng lin lc (communication), mi vng c


b rng 100h = 256D a ch nh ging nh vct ngt, dng lm a ch lin lc
hay bc cu ti phn c bn ca DOS v BIOS.
Chng trnh x l lnh COMMAND.COM chim hai vng nh tch bit:
- Phn thng tr.
14

Hpv

HVKTMM

- Phn na thng tr.


Nh vy , HH cha hai phn:
+ ROM BIOS c sn trong my, iu khin my khi ng sau khi bt ngun.
+ Cc vng cn li l RAM, c np vo bi chng trnh Bootstrap (mc
ni c cung u tin ca a h thng), dng np phn c bn ca HH
(DOS, BIOS v COMMAND.COM).

1.2.3. CHNG TRNH MC NI (BOOTSTRAP LOADER)


Nhim v ca chng trnh ny l np cc tp BIOS (hng IBM gi l IBM
BIO.COM, cn hng Microsoft gi l IO.SYS) v DOS (hng IBM gi l IBM
DOS.COM, hng Microsoft gi l DOS.SYS).
Chng trnh ny nm rnh 0, cung 1, mt 0 ca a mm hoc cung 1, a 0,
tr u tin trong a cng.
Chng trnh ny c ROMBIOS np t a vo RAM nh hnh 2.7 a ch
07C00h, sau s iu khin np li chuyn cho chnh chng trnh ny. Chng
trnh ny np vo b nh RAM gm cc khi:
+ IBMBIO.COM mt 1, rnh 0, cung 3 ti cung 6.
Boot

Np h thng

ROM BIOS
Sector 1, r 0, m0
r 0, m1
7C00h
RAM

+ IBMDOS.COM mt 1, rnh 0, cung 7 ti 8 (hnh 2.7). Vi phin bn


(version) khc nhau ca DOS, c s khc nhau v vic ghi chng trnh mc ni.
Nu c tin ch DISKLOOK, ta c th xem vn bn ca chng trnh BOOT bng
cch chy DISKLOOK, n nm chc nng F7, g v tr ghi chng trnh BOOT
(mt 0, rnh 0 v cung 1) ri n phm F6 chng trnh BOOT hin ln mn
hnh.
15

Hpv

HVKTMM

1.2.4. CHNG TRNH VO/RA C S BIOS


BIOS (Basic Input Output System) l chng trnh:
- iu khin h (cc ngt cng v ngt ca h - xem chi tit di).
- iu khin vo/ra ca cc thit b ngoi nh bn phm mn hnh, my in.
- iu khin ngt do lnh ca chng trnh bi CTRL-BREAK hay bi b
nh thi (timer).
- iu khin truy cp ti bng cc thng s ca mn hnh (trong ROM cho
khi iu khin MC 6845), ca a hay bng d liu ca cc k t ph (k
t ha).
BIOS c chia thnh hai khi:
- ROM.BIOS: cha trong nh ROM, c sn trong b nh trung tm.
- BIOS.COM: (ui .COM) cha trn a h thng (mm, cng) c np
vo b nh RAM ca b nh trung tm.
1.2.4.1. ROM.BIOS
Cha trong ROM, dung lng 8KB t a ch FE000h ti FFFFFh.
ROM.BIOS bao gm cc chng trnh khc nhau:
- Chng trnh t kim tra PST: (Power on Self-Test) c thc hin sau khi
bt ngun in nui hay mi ln hi phc h (Ctrl-Alt-Del). Chng trnh
ny thc hin:
+ Kim tra b nh v cc thit b ngoi (mi trng) ca my vi tnh.
+ c v chp chng trnh mc ni t a vo b nh RAM (hnh 2.7).
Nu khng c a hoc c li trong chng trnh c pht hin, vic iu
khin c chuyn cho chng trnh phin dch (interpreter) Basic c a
ch OF6000h n OFE00h trong ROM-basic.
- Cc chng trnh iu khin thit b ngoi: (gi cc ngt cng bi vi mch
8259A vi mc ngt 8 n F) nh ng h (timer), bn phm, lin lc
khng ng b, a cng, a mm, my in.
- Cc chng trnh gi ngt ca h (mc 0 7) gm:
+ Cc ngt logic: chia cho 0, tng bc, dng, trn.
+ Cc ngt cng: NMI (v d sai s chn l trong khi nh, vi x l khng
tip tc lm vic, chp ni dung mn hnh ra my in).
1.2.4.2. BIOS.COM
-

BIOS.COM ra i nhm:
Khc phc nhc im ca ROM.BIOS nh:
16

Hpv

HVKTMM

+ Khng ph hp vi DOS, c cu chnh ca HH.


+ Pht hin li ca ROM.BIOS v c th sa li nh BIOS.COM.
+ ROM.BIOS khng th iu khin c cc thit b ngoi mi.
- M rng cc chc nng ca ROM.BIOS bng cch ngt (10h 1Fh)
iu khin mn hnh, xc nh kch thc b nh, hnh ng c v ghi a
mm, cassette, bn phm, my in, kim tra ng h, truy cp bng s liu
ca cc k t ha.
- Chun on li ca cc thit b ngoi.
c tnh chnh ca BIOS l:
- Xc nh trng thi ca thit b ngoi.
- Hi phc cc a.
- Khi ng cc thit b ngoi.
- Np cc chng trnh iu khin thit b ngoi.
- nh ngha nhng vct ngt c s hiu ngn hn (10h 1Fh).
- Thuc tnh cho a ch nh ca DOS.COM.
- Gi DOS.COM.
V cu trc, BIOS c hai phn:
- Phn lin lc BIOS chim a ch nh t 00400h ti 00500h m cc a ch
con (t 00400h) nh bng 2.2.
- Phn li ca BIOS.

1.2.3. KHI IU HNH A DOS.COM


Khi DOS.COM ny l phn c bn ca HH gm:
- Khi lin lc ca DOS c a ch nh u l 00500h ti 00600h.
- Khi c bn ca DOS c a ch u l 00B00h.
Bng 2.2. a ch nh dnh cho BIOS lin lc (bt u t 0400h)
a ch
01
08
10
12
13
15
17
18

Bin s
RS232 base
PRINTER-base
EQUIP-Flag
MFG-T&T
Memory-Size
10-RAM-SIZE
KB-Flag
KB-Flag1
17

My in khng ng b
(ni tip)

Hpv

19
1A
1C
1E
3E
3F
40
41
42
49
4A
4C
4E
50
60
62
63
65
66
67
69
6B
6C
6E
70
71
72
74 n 76
78 n 83

HVKTMM

ALT-INPUT
BUFFER-HEAD
BUFFER-TAIL
KB-BUFFER
SEEK-STATUS
MOTOR-STATUS
MOTOR-COUNT
DISKETTE-STATUS
NEC-STATUS
CRT Mode
CRT-COLS
CRT-LEN
CRT-START
Cursor-POSN
Cursor-Mode
ACTIVE-PAGE
ADDR-6845
CRT-MODE-SET
CRT-PALETTE
EDGE-CNT
CRC-REG
LAST-VAL
TIMER-LOW
TIMER-HIGH
TIMER-OFF
BIOS-BREAK
RESET-BREAK

Bn phm

a mm

Vi deo

Mn hnh

ng h
a cng
Khc

Khi ny l giao din mc cao vi nhng chng trnh ca ngi dng, n


cha:
+ Cc chng trnh iu khin tp (t chc th mc v tp trn a, kha v
gii kha vic ghi).
+ Cc chng trnh gi cc chc nng cho cc n v vo/ra theo k t (bn
phm, mn hnh, my in).
18

Hpv

HVKTMM

+ Cc chng trnh iu khin b nh.


+ Cc chng trnh gi thi gian (ngy, gi, thng, nm).
+ Chng trnh iu khin vic thc hin chng trnh (dng, kt thc).
Khi mt chng trnh ca ngi dng thc hin mt chng trnh vo/ra,
cc hnh ng ny pht cc chc nng (function) mc cao (DOS.COM) bi
trung gian ca ni dung cc thanh ghi v cc khi iu khin. Nhng chc nng
c hon thin bi cc li gi ti BIOS.COM nh hnh 2.8.
HNH V 2.8
Cc ngt ca DOS (gi cc chc nng) c s hiu t 20h n 3Fh v c 67h
ua vo thanh ghi ngt AL trc khi gi lnh ngt chng trnh INT nh. Ngt
INT 21h gm nhiu chc nng con, chnh l b phn ch yu ca HH MS-DOS.

1.2.4.TP LNH COMMAND.COM


a) i cng
Ngoi BIOS v DOS, COMMAND.COM cng l thnh phn quan trng ca
HH, n tng ng CCP (Control Command Processor b x l lnh bn
iu khin). Khi ny c hai chc nng:
- Phin dch dng lnh nh vo t bn phm.
- iu khin nhng ngt.
Khi lnh g vo sai v c php, lnh COMMAND.COM ny ch ra mn hnh
l khng thy lnh (Command not found) v li quay v du nhc (C>) ca mn
hnh ch lnh mi g vo t bn phm.
Trong b nh trung tm, COMMAND.COM c np thnh hai on v cha
ba phn:
+ Phn lu tr: nm ngay trn DOS. Phn ny cha:
Nhng khi x l nhng ngt 22h, 23h v 24h (kt thc chng trnh,
dng khn cp CTRL-BREAK v do sai s).
Chng trnh np li phn bn tr.
iu khin li v thng bo li.
Nhng lnh ni (lu tr).
+ Phn khi pht: phn ny ch dng lc khi ng my vi tnh, v tr ca n
c gii phng. Sauk hi thc hin (nguyn tc ph: overlay). Phn ny c:
Chng trnh np AUTOEXE.BAT.
Hin th ngy thng.
Xc nh a ch np hay HH s np nhng chng trnh trc khi
thc hin chng.
19

Hpv

HVKTMM

+ Phn bn tr: nm bn trn phn b nh ca ngi dng (RAM). N cha


hu ht cc khi (mun) iu khin nhng tp ca lnh. BAT (x l theo l).
Phn ny c th b chia nh nu HH cn ch, v c mt chng trnh ca ngi
dng ang chy. N s c np li khi b x l lnh iu khin my (phn lu
tr ca COMMAND.COM).
b) Phn loi lnh theo chc nng
Vi quan im chc nng, MS DOS c 4 nhm lnh (hay chng trnh) vi cc
ui: .COM, . EXE, .SYS v .BAT.
- Cc lnh loi .COM
Nhng chng trnh loi .COM (lnh COMMAND) m phng nhng chng
trnh CP/M c nhng mng (segment) ca m lnh (CS), ca s liu (DS v ES) v
ca ngn xp (SS) l trng nhau, ngha l chng cng mt gi tr. M lnh v s
liu ca mt chng trnh l xen nhau bn trong mng 64KB v m lnh c
bt u t a ch 0100h trong mng. Nhng chng trnh loi ny c th quay
vng bn trong mt mng duy nht; ln ca n, bao gm vng hot ng
khng qu 64KB. Chng trnh loi c ui .COM ny c th chy trc tip trn
my, khng cn mt s bin i no.
- Cc lnh loi . EXE
Cc lnh loi . EXE (EXEcute) l c th chuyn i c, chng nm u
mt thng tin chuyn, dnh cho chng trnh np. Cc thanh ghi mng s liu
(DS v ES) c np vi gi tr (hng) u mt vng nh c th s dng,
trong khi cc thanh ghi m lnh (CS v IP) v ngn xp (SS v SP) nhn gi tr
do chng trnh kt ni (LINKER) truyn cho. Vi cch ny,ngi lp trnh c
th khi pht nhng thanh ghi mi gi tr mong mun. Khi hnh ng np
din ra lu hn.Nhng tp .EXE thng sinh ra bi chng trnh dch
assembler ca MS- DOS. Chng trnh tin ch EXE2BIN ca MS-DOS cho
php bin i tp .EXE sang tp .COM chy chng trnh.
- Cc lnh .SYS
y l cc lnh lin quan ti cu trc thuc nhm CONFIG.SYS. l cc lnh
iu khin thit b ngoi (ANSI.SYS, DISPLAY.SYS, EGA.SYS, Keyboard.SYS)
iu khin khi nh (HIMEM.SYS, RAMDRIV.SYS) v cc iu khin khc
(CHKSTATE.SYS, DBLSPACE.SYS).
- Cc lnh loi .BAT
Nhng lnh loi BAT (batch) l nhng tp ca vn bn cha cc lnh, tng
ng vi cc tp .SUB ca CP/M. Mt s tc gi gi chng l cc tp ca cc
chng trnh con (th tc procedures). Nhng lnh c mt trong cc tp ny
20

Hpv

HVKTMM

c th l tt c cc lnh vit ng ca MS-DOS, ca loi .COM hay .EXE hoc


c loi . BAT vi cc thng s ca chng, cc lnh l c lp tuyt i vi
nhau.
Nhng th tc l tng ng ca ch x l theo l (Batch Processing),
trong , nhiu chng trnh (hay cc lnh) c mc ni vi nhau mt cch
t ng, khng c s can thip ca ngi iu hnh (hay ngi s dng).
Nhng lnh c d kin cho php mt iu khin no c din ra bi
ngi dng MD-DOS nh ECHO, REM, PAUSE.
- ECHO (ting vang): hin th ln mn hnh nhng yu t ca mt th tc
dn dn trong qu trnh thc hin chng.
- REM (ghi ch): cho php lm hin th mt ghi ch trong khi tin hnh
kim tra mt s im truyn qua.
- PAUSE (ngh): cho php treo s thc hin mt th tc thc hin mt s
hnh ng ngoi (nh np a vo n v vo/ra; np li giy ln my in )
Bn loi chng trnh hay lnh trn ca MS-DOS ch cn g vo bn phm tn
ca chng (khng cn ghi ui m rng) v n ENTER (CR) s c
COMMAND.COM phin dch v c vi x l thc hin.
c) Phn loi lnh theo v tr
Theo v tr ta chia:
- Lnh ni tr nm trong b nh trung tm
- Lnh ngoi tr, ch np vo b nh khi gi n.
Nhng lnh ni (intern)
Nhng lnh c gi l ni dung l nhng lnh c nhn bit v x l tc
th bi chng trnh phin dch (interpreter) COMMAND.COM.
Nhng lnh loi ny chia thnh 7 nhm (version 2):
+ Nhng lnh khi pht
MODE: i thit b u cui ch.
PROMPT: i k t ch (cho a A, C)
DATE: gi ngy
TIME: gi gi
+ Nhng lnh iu khin th mc
DIR: hin th ni dung th mc
CHDIR: i th mc hin hnh
PATH: ch ng dn ti tp hin hnh
MKDIR: to th mc mi
RMDIR: xa b th mc
21

Hpv

HVKTMM

+ Nhng lnh iu khin tp


COPY: chp ni dung mt tp
TYPE: hin th ni dung mt tp
RENAME: i tn mt tp
ERASE: xa mt tp
+ Nhng lnh iu khin hot ng
BREAK: thc hin CTRL C
CLS: xa mn hnh
SET: thay ni dung mt bin chui
EXIT: ra khi DOS
+ Nhng lnh iu khin hin th v ghi ln a
VER: hin th s phin bn ca DOS.
VERYFY : Kim tra li vic ghi ln a.
+ Nhng lnh ca cc th tc
ECHO: hin th ln mn hnh nhng phn t ca th tc.
PAUSE: dng, treo mt th tc.
REM: hin th nhng ghi ch.
+ Nhng lnh lp trnh cc th tc
FOR IN DO: cho mt hnh ng lp li.
GO TO: phn nhnh ti.
IF: thc hin cc iu kin.
SHIFT: b qua nhng bin x l.
Nhng lnh ngoi ( externe):
y l nhng lnh khng thc hin bi b phin dch lnh, nhng c tp
COMMAND.COM iu khin trong sut thi gian thc hin.
MS-DOS cn chia hai loi lnh ngoi l:
+ Lnh ngoi do DOS cung cp.
+ Lnh ngoi cng khng do DOS cung cp.
- Lnh ngoi ca h:
+ Lnh ca phin bn 1
EDLIN: son tho dng.
DEBUG.COM: hiu chnh chng trnh.
CHKDSK.com: kin tra ni dung ca a.
FORMAT.COM: to dng a.
SYS.COM: chp li chng trnh h thng ln a.
EXE2BIN.COM: bin i mt tp EXE thnh COM.
22

Hpv

HVKTMM

COMP.COM: so snh cc tp trn a.


+ Lnh ca phin bn 2
CONFIG.SYS: thay i cu hnh ca h.
DISCOPY.COM: chp mt a ln a khc.
MORE.COM: hi th ln mn hnh.
PRINT.COM: a ni dung mn hnh ln my in.
RECOVER.COM: ly mt tp a hng.
FIND.EXE: tn mt vn bn trong mt tp.
SORT.EXE: tm ni dung ca mt tp.
EXEFIX.COM: bin i tp t COM sang EXE.
CAT.COM: tm mt th mc.
- Lnh ngoi cng
Cc lnh ny cn chia thnh:
+ Lnh nhm 1: lnh c bit , tham gia vo hot ng ca h.
LIB.EXE: iu khin th vin ca cc khi.
LINK.EXE: kt ni ( son tho kt ni).
CREF.EXE: pht cc hnh ch thp.
MASM.EXE: macro assembler.
+ Lnh nhm 2: c to thnh bi cc b dch cc ngn ng ( bin dch
hay phin dch): Basic,Pascal
+ Lnh nhm 3: c th t tt c cc phn mm p dng vi s lng
khng hn ch.

23

Hpv

HVKTMM

2. T TNG CHUNG CA LP TRNH VI THIT B NGOI


VI
2.1. CC THNG S PHN CNG CA THIT B NGOI
2.1.1. CNG VO/RA
Cc thit b ngoi vi giao tip vi CPU thng qua cc cng vo/ra; mi cng
vo ra u c mt a ch do MS-DOS( h iu hnh) qui nh. Do , lp trnh
trc tip bng hp ng cn phi bit a ch cng vo/ra ni vi thit b ngoi
vi.Thng ng nht cng chnh l a ch ca cng vo/ra ni vi thit b ngoi
vi. Mt s cng vo/ra ca mt s thit b ngoi vi thng dng cho h my IBM
PC nh sau:
a ch
Thit b
000-03F
B iu khin DMA 8237A 1
020-03F
B iu khin ngt 8259A 1
060-06F
B iu khin bn phm 8042
0A0-0BF
B iu khin ngt 8029A 2
0C0-0CF
B iu khin DMA 8237A 2
170-177
a cng 1
1F0-1F7
a cng 2
200-207
Gy iu khin tr chi
2F8-2FF
Vo/ra ni tip COM2
370-377
a mm 2
378-37F
My in song song LPT1, LPT2
380-38F
Cng cho mng SDLC
3B0-3DF
Mn hnh VGA
3F8-3FF
Vo/ra ni tip COM1
3D0-3DF
Card mn hnh mu CGA, EGA
3F0-3F7
iu khin a mm

2.1.2. CC VNG NH THAM S


Vng nh tham s ca cc ngt l cc bin hay cc tham s ca cc ngt BIOS,
DOS; c nhim v cha d liu cho cc ngt. C cc a ch dnh ring cho tng
ngt hoc tng thit b ngoi tr ti vng nh tham s ny. Khi lp trnh trc
tip cn bit a ch ca cc bng tham s ny cung cp tham s cho chng
trnh cn khi lp trnh s dng ngt th cc chng trnh con c cc tham s nn
ngi lp trnh c th khng cn bit.
a ch nh cho cc tham s ca BIOS cho cc thit b ngoi:
a ch
Kch thc Ni dung
0000:0400
2 byte
a ch c s ca khi ghp ni RS233(COM1)
0000:0402
2 byte
a ch c s ca khi ghp ni RS232(COM2)
24

Hpv

HVKTMM

0000:0404
0000:0406
0000:0408

2 byte
2 byte
2 byte

0000:040A
0000:040C
0000:040E
0000:0410
0000:0412
0000:0413
0000:0415
0000:0417
0000:0419
0000:041A
0000:041C
0000:041E

2 byte
2 byte
2 byte
2 byte
1 byte
2 byte
2 byte
2 byte
1 byte
2 byte
2 byte
32 byte

0000:0449
0000:044A
0000:044C
0000:044E

1 byte
2 byte
2 byte
2 byte

0000:0450
0000:0460

16byte
2 byte

0000:0462
0000:0463
0000:0465
0000:0466
0000:0478
0000:047C
0000:0480

1 byte
2 byte
1 byte
1 byte
4 byte
2 byte
2 byte

0000:0482
0000:0484
0000:0485
0000:0487
0000:0488
0000:0496
0000:0497

2 byte
1 byte
2 byte
1 byte
1 byte
1 byte
1 byte

0000:0498

4 byte

a ch ...................................................(COM3)
a ch ...................................................(COM4)
a ch c s ca khi ghp ni my in song
song 1 (LPT1)
a ch .................................................(LPT2)
a ch ..................................................(LPT3)
a ch .................................................(LPT4)
Danh sch cc trang thit b phn cng
Cc li trong phn kt ni bn phm
Tng b nh theo Kbyte
m dng cho kim tra cc li ch to
Cc c trng thi bn phm
Gi tr ca cc phm Alt + S
a ch u vng m bn phm
a ch cui vng m bn phm
Vng m bn phm (mim a ch: 0000:041E0000:043D)
Ch mn hnh hot ng
Chiu rng mn hnh tnh theo ct vn bn
Chiu di vng nh mn hnh
Ofset tnh t phn on mn hnh ca trang vng
nh mn hnh
V tr con tr (8 cp byte)
Kch thc con tr (byte thp=dng qut cui,
byte cao=dng u)
S hiu trang mn hnh hot ng hin hnh
a ch cng chip MC 6845
Gi tr hin ti ch mn hnh ca MC 6845
Gi tr hin ti ca mu mn hnh ca MC 6845
Gi tr vt thi gian ca my in (0478h:LPT1..)
Gi tr vt thi gian ca RS 232 (47Ch:COM1)
a ch Ofset bt u vng m bn phm cho
AT v PS/2
a ch Ofset kt thc...........................................
Hng k t ca EGA cao nht
S byte cho mi k t EGA(s dng qut/k t)
Thng tin ph v EGA dng mn hnh n sc
Thng tin ph v EGA dng mn n sc
Bit 4 ca trng thi c ca bn phm AT=1
Trng thi c ca bn phm AT hin cc phm
LOCK
Con tr n trng thi i 8 bit ca ngi dng
25

Hpv

HVKTMM

0000:049C

4 byte

0000:04A0

1 byte

0000:04A8
0000:04F0
0000:0500

4 byte
16byte
1 byte

Mt Micro giy trc khi ngi dng my AT


ch xong
Trng thi c hnh ng ch ca ngi dng
(1=bn, 80h= qua, 0=nhn bit)
a ch bng con tr SAVE-PTR ca EGA
Vng trao i tin ca cc chng trnh ng dng
Trng thi in mn hnh( 00h:cho php in, 01h:
ang in, 0FFh: li trong khi in)

Bng cc tham s:
Lu tr thng tin chi tit ng vi mi thit b ngoi vi. Gi chc nng ca ngt ->
bit c a ch ca bng -> c c ni dung ca bng. Thc cht y chnh l
cc ofset ng vi a ch on (a ch c s) ca a ch nh cho thit b ngoi vi.

2.2. T TNG LP TRNH


2.2.1. GII THIU
Cc chng trnh iu khin thit b ngoi vi thng dng c vit sn trong h
iu hnh MS-DOS di dng cc ngt (INT nh n: k hiu s ngt; h: dng
hexa). Khi gi cc chng trnh phc v ngt ch cn vit lnh INT nh bng hp
ng; cui mi chng trnh phc v ngt u c lnh tr v ch b ngt ca
chng trnh.
C 2 phng php lp trnh cho cc thit b ngoi vi:
 Lp trnh trc tip cho phn cng: iu khin cc khi iu khin ca thit b
ngoi vi. Phng php ny i hi nm vng cu trc v hot ng ca cc
khi iu khin; a ch cc thanh ghi, cu trc cc thanh ghi trng thi, a ch
cc ngn nh m dnh cho thit b ngoi vi.
 Lp trnh s dng ngt: s dng cc ngt INT nh trong ROM-BIOS v DOS
ca h iu hnh MS-DOS hay phn mm h thng. Phng php ny cn bit
cch dng cc ngt vi cc tham s vo(np vo cc thanh ghi) v tham s
ra(a ra cc thanh ghi bit kt qu thc hin ca cc chng trnh phc v
ngt). Thc cht chnh cc chng trnh iu khin trc tip tng t vi cc
chng trnh (cc hm chc nng) phc v ngt m h iu hnh vit sn
phc v, iu khin thit b ngoi vi m s c thc hin khi gi ngt.
Nguyn l chung ca lp trnh tr c ti p cc thit b ngoi vi nh sau:
 Vi lp trnh trc tip can thip vo phn cng:
Bc 1: Np a ch ca cc cng vo/ra (thng thng ni n cng
vo/ra chnh l a ch ca cng m thit b ngoi vi tng ng oc
ghp ni vo)
Bc 2: Kim tra trng thi sn sng hay yu cu trao i tin ca cc
thit b ngoi vi
Bc 3: Np d liu cn a ra vo thanh ghi AX

26

Hpv

HVKTMM

Bc 4: a s liu ra bng lnh OUT hoc c s liu vo bng lnh


IN
 Vi phng php s dng cc ngt INT nh ca h iu hnh:
Bc 1: Np cc chc nng hay cc hm phc v ng vi tng nhim
v ca thit b ngoi vi tng ng vo thanh ghi AH; cc chc nng con
vo thanh ghi AL
Bc 2: Np cc tham s vo cn thit vo cc thanh ghi thng dng
Bc 3: Gi ngt INT nh tng ng

2.2.2. QUI TC CHUNG LP TRNH CHO THIT B NGOI VI


Phng php trao i tin ca CPU vi thit b ngoi vi v cu trc chung ca khi
iu khin ghp ni thit b ngoi vi
2.2.2.1. TRAO I TIN GIA CPU VI THIT B NGOI VI
 Trnh t trao i tin: khi trao i tin vi thit b ngoi vi, vi x l thc hin
thng qua cc lnh theo trnh t:
 CPU a ra a ch cng (a ch thanh ghi m ca khi ghp ni thit b
vo ra) ln bus a ch(A0-An) chn vi mch tng ng vi loi tin( iu
khin, trng thi hay d liu)
 Nu a tin ra thit b ngoi vi, CPU s ghi d liu vo thanh ghi tch lu
AX(ca CPU). Sau , CPU a lnh ghi s liu WR(tch cc thp) vo
thanh ghi. Sau tn hiu ny d liu s c ghi vo thanh ghi m d liu
ca khi iu khin thit b ngoi vi.
 Nu CPU cn c d liu t thit b ngoi vi, CPU phi a tn hiu c
RD sau khi a a ch. D liu trn thanh ghi m c( trng thi, d liu)
c a ln bus d liu v ghi vo thanh ghi tch lu AX
 Ch trao i tin
 Trao i trc tip (ng b): Do CPU thc hin bng cch a a ch, d
liu v lnh cho cng m khng cn bit thit b ngoi vi c yu cu trao
i khng hoc sn sng cha. Nhanh nhng khng tin cy
 Trao i tin c kim tra trng thi: Ging nh trc tip nhng CPU c kim
tra trng thi sn sng ca thit b ngoi vi. Do CPU cn:
c d liu ca thanh ghi trng thi
Kim tra bit sn sng trao i tin ca thit b ngoi vi.
Nu sn sng th thc hin lnh trao i tin ngay sau lnh kim tra trng
thi. Nu cha sn sng th: chuyn sang kim tra trng thi ca thit b
ngoi vi khc theo vng kn (hi vng trng thi)
 Trao i tin theo ngt chng trnh:
Do thit b ngoi vi khi xng bng cch a yu cu trao i tin, yu cu
ngt chng trnh INTR( Interrup Request) ca CPU ngay khi CPU ang thc
hin mt chng trnh no . Tin trnh nh sau:
1. Lm th tc ngt chng trnh
27

Hpv

HVKTMM

2. Pht tn hiu xc nhn ngt to v c vecto ngt( a ch cha a


ch ca lnh bt u ca chng trnh con phc v trao i tin) t khi
ghp ni iu khin thit b ngoi vi vo thanh ghi cha AX.
3. Chuyn sang thc hin chng trnh phc v ngt cho n khi thc
hin lnh RET( tr v) hoc IRET( tr v t ngt). Tr iu khin v
cho chng trnh chnh
4. Thc hin tip chng trnh chnh b ngt
 Dng tin trao i
 Dng song song: Mi bit tin c truyn trn mt ng dy ring r ti
cng mt thi im. Nhanh nhng tn ng dy v b nhiu khi thit b
ngoi vi xa
 Dng ni tip: Tin trao i c truyn tng bit trn mt ng dy 2 chiu
hoc 2 ng dy( ng pht Tx, ng thu Rx)
2.2.2.2. KHI GHP NI IU KHIN TRAO I TIN
Gia CPU v thit b ngoi vi phi lp khi ghp ni(cn gi l interface: giao
din hoc adaptor: b iu hp) iu khin trao i tin
 Cu trc ca khi ghp ni:
 Khi ghp ni song song: gm
Khi m ng dy cho cc ng a ch, d liu, iu khin tng
cng cng sut v cch ly CPU vi thit b ngoi vi.
Khi gii m a ch v lnh cho cc thanh ghi m
Cc thanh ghi m iu khin, trng thi, d liu
Khi x l ngt: mc ch chnh l pht tn hiu yu cu ngt( INTR),
to vc t ngt khi nhn xc nhn ngt INTA t CPU
 Khi ghp ni ni tip: ngoi cc thnh phn ging khi ghp ni song
song khi ghp ni tip cn c:
Cc thanh ghi dch: bin i tin song song thnh ni tip v ngc li
Khi iu khin Modem cho tin truyn xa trn in thoi
Khi pht nhp thi gian cho tn hiu pht v thu
Khi pht hin cc bit bt u( start) v kt thc( Stop) ca byte tin
Khi kim tra li cho truyn tin
 Hot ng ca khi ghp ni
Theo trnh t:
Khi pht: khi ghp ni c ghi cc thng tin v ch , lnh iu
khin( c ghi b nh m v c a ch dnh ring cho tng thit b
ngoi vi)
c, kim tra v ch trng thi sn sng ca thit b ngoi vi
Trao i tin vi thit b ngoi vi
2.2.2.3. LP TRNH TRAO I TIN
28

Hpv

HVKTMM

 Lp trnh trc tip:


Cn: nm vng cu trc, hot ng ca CPU, khi ghp ni v thit b ngoi vi.
Phi bit r a ch cc thanh ghi ca khi ghp ni
Bng vng a ch dnh cho thit b ngoi vi trong IBM-PC
Loi thit b
Vng a ch
B iu khin thi gian
040-05F
B ghp ni song song( 8255A)
069-063

Cc lnh hp ng dng lp trnh trc tip:


Lnh chuyn: MOV A, B (trng hp np a ch cng: A l DX, B l a ch ofset
, trng hp gn s liu a ra cho AX: A l AX, B l gi tr d liu)
Lnh IN A, B (trng hp np trng thi vo AX vi A l AX, D l a ch ca
thanh ghi trng thi; hoc trng hp c d liu t thanh ghi m d liu vo AX
vi A l AX, D l a ch ca thanh ghi m s liu)
OUT A, B (trng hp a d liu v iu khin - lnh, ch t B ra thanh ghi
iu khin A; hoc trng hp a d liu t B ra thanh ghi m d liu A)
Lnh chn lgic AND AX, d liu ( lc cc bit v trng thi-ch li cc bit cn
thit ca trng thi cn xt)
Lnh kim tra trng thi:
TEST AX, d liu (Nu cc bit ca trng thi trng vi cc bit ca d liu th c
ZF=1, hiu AX-d liu =0, nhng khng a hiu vo AX)
CMP AX, d liu (tng t TEST nhng gi hiu AX-d liu vo AX)
Lnh nhy:
JNZ A (nhy v nhn A; s dng nhy v lnh c trng thi nu trng thi
cha sn sng)
 Lp trnh s dng ngt INT nh

29

Hpv

HVKTMM

n gin hn lp trnh trc tip, khng cn phi hiu r cu trc ca cc khi


ghp ni v:
Cc chng trnh con phc v ngt thc cht chnh l cc chng trnh trc tip
vit cho cc khi ghp ni
Cc s liu cho lp trnh trc tip ghi sn trong b nh m dnh cho cc khi
ghp ni
Lp trnh s dng ngt cn:
Hiu r ngt v cc chc nng ph c dng cho khi ghp ni no v lm g
Ghi y cc tham s vo cho cc thanh ghi thng dng ca VXL m ngt yu
cu
c cc tham s ra bit kt qu thc hin
Cc lnh hay dng:
MOV A, B (A thng l cc thanh ghi, B l cc con s ch ngt hay cc hm chc
nng)
INC A, DEC A (tng, gim gi tr ca thanh ghi A)
Cc lnh kim tra: TEST, CMP
Cc lnh nhy: JNZ, JZ, LOOP
INT nh (gi s hiu ngt cho tng thit b ngoi vi tng ng)
Lnh kt thc chng trnh INT 20h, hoc MOV AH, 4Ch INT 21h

2.2.3. DNG TNG QUT CA CHNG TRNH PHC V THIT B


NGOI S DNG NGT
Cc chng trnh phc v trao i tin ca cc thit b ngoi vi u c cu trc
sau:
Ghi chc nng( hm phc v) vo thanh ghi AH, chc nng con vo thanh ghi AL
ca CPU bng lnh MOV
Ghi cc tham s vo cn thit cho chc nng vo cc thanh ghi BX, CX, DX
Gi ngt h thng INT nh cho thit b ngoi vi
Kt thc chng trnh c th dng cc ngt:
Ngt INT 20h: Kt thc chng trnh v tr iu khin cho DEBUG
Ngt INT 21h: C mt s hm chc nng ring; trc khi gi ngt INT 21h
phi np chc nng c th vo thanh ghi AH. Cc chc nng c bn:
AH=00h: Kt thc tng t nh INT 20h
AH=4Ch: Kt thc v tr iu khin v cho MS-DOS
AH=31h: Tng t nh 4Ch nhng cn ghi m tr v vo thanh ghi AL,
lu vo DX kch thc ca b nh trong on m lnh CS v lu tr chng trnh
trong b nh.
Ngt INT 27h: Kt thc ny li thng tr trong b nh; DX ghi ofset ca
m lnh. Nu khng cn ghi chng trnh thng tr trong b nh th khng nn
dng ngt ny v n s xo chng trnh ghi trong vng nh m tr bi a ch
CS:IP.

30

Hpv

HVKTMM

Chng trnh cha ghi thng tr trong b nh s b xo i khi thot khi


DEBUG

31

Hpv

HVKTMM

CHNG II. H THNG NGT


 Mc ch: nhm hiu r khi nim, c ch hot ng, ca h thng ngt
s dng ngt trong lp trnh h thng
 Ni dung chnh:
Khi nim ngt
Phn loi
H thng ngt cng
H thng ngt mm
Gii thiu cc ngt ca MsDos

32

Hpv

HVKTMM

1. NGT V B IU KHIN PIC 8259


1.1. MT S KHI NIM
Ngt(Interrup) l c ch bt CPU dng cng vic ang thc hin chuyn
sang thc hin qu trnh phc v ngt. Bn cht ca qu trnh phc v ngt l qu
trnh gi v thc thi cc chng trnh con phc v ngt. Do , khi ni n ngt l
hm ni n cc chng trnh ny. Tt c cc chng trnh phc v ngt u c
chung c im: th nht l hu ht c vit sn ( l cc chng trnh ca h
iu hnh) v c php s dng ; th hai l a ch ca cc chng trnh con ny
phi c t mt vng nh xc nh gi l bng vc t ngt , nm trong b nh
chnh.
 Bng vc t ngt
Bng vc t ngt l bng cha a ch ca cc chng trnh phc v ngt.
Bng ny c 256 , cc c nh s th t ln lt t 00h, 01h, ., 08h,,
0Fh, .10h,.,FFH. S th t ca tng trong bng c gi l s hi u ngt. N
i dung mi cha a ch logic ca mt chng trnh phuc v ngt xc nh,
cc a ch ny cn c gi l vc t ngt.
Cu to ca mt bng vc t ngt ch thc;

1.2. PHN LOI NGT


 Cch 1: Phn loi da vo vic kch hot ngt: c ngt cng, ngt mm, ngt
lgic( ngoi l)
 Ngt cng: s dng lm phng php vo / ra d liu, trong thit b vo
/ ra (thit b vt l: bn phm, my in , ng h nhp thi gian v.v..) ch
ng khi ng qu trnh vo / ra. Qu trnh phc v ngt cng c kch
hot bng mt tn hiu vt l t bn ngoi.
 Ngt mm: l ngt c kch hot bng cc chng trnh gi cc chng
trnh con phc v ngt thng qua ch th INT.
 Ngt lgic(Ngoi l): l ngt do chnh CPU pht ra khi n gp li. V d
php chia cho 0, trn b nh...
 Cch 2: Theo s nhn bit ngt ca CPU: ngt che c v ngt khng che
c
 Ngt che c(Maskable): c th thit lp CPU nhn bit hoc khng
th nhn bit c ngt da vo c IF. Nu IF=1, CPU c th nhn bit
ngt, IF=0, CPU khng th nhn bit c; ngha l khi c yu cu ngt
CPU vn lm vic bnh thng
 Ngt khng che c( Non Maskable): CPU lun nhn bit c khi c
yu cu ngt, vic thit lp c IF khng nh hng g

1.3. PIC 8259 V H THNG NGT CNG

33

Hpv

HVKTMM

1.3.1. NGT CNG


Cc chng trnh con phc v ngt cng thng c iu khin qu trnh
vo/ra vi cc thit b vo ra chun mc vt l. Cc trng trnh con phc v
ngt cng c kch hot bi cc tn hiu vt l IQR t thit b vo ra. Cc
chng trnh con phc v ngt mm c kch hot bi lnh INT trong h lnh ca
CPU. Cc chng trnh con phc v ngt logic cng phc v cho hot ng ca h
thng, nhng chng ch c kch hot khi CPU thc hin lnh pht sinh v thc
hin mt ngoi l no .
CPU c thit k p ng c vi cc qu trnh ngt cng. CPU c mt
u vo nhn tn hiu ngt INT, khi nhn c tn hiu ny CPU s phn ng theo
c ch ngt cng. Trong thc t c nhiu thit b ngoi vi yu cu c phc v
theo Phng php ngt cng (bn phm, ng h h thng, my in v.v..) v sinh ra
nhiu yu cu ngt. Do vy cn c b iu khin gip CPU qun l v phc v cc
yu cu ngt, l b iu khin ngt PIC (Programmable Interrupt Controller).
 Cu trc h thng ngt cng (h.48):

 H thng ngt cng c xy dng trn c s hai b iu khin ngt PIC


8259, mi PIC 8259 c th nhn 8 tn hiu yu cu ngt IRQ t thit b vo
/ ra. Hai PIC ny c kt ni vi nhau theo kiu ghp tng, kt hp hot
ng c th thc hin c 16 yu cu ngt Q.
 Chc nng c bn ca PIC 8259 : PIC 8259 l mt vi mch in t kh
trnh c thit k gip CPU thc hin qu trnh ngt cng. PIC 8259
thc hin cc chc nng sau:
Ghi nhn c 8 yu cu ngt IRQi , i = 0,1,2,.,7.
Cho php chn v phc v cc yu cu ngt theo mc u tin.
Cung cp cho CPU s ngt tng ng vi yu cu ngt IRQi s ngt
ny i din cho a ch ca chng trnh con phc v thit b yu
cu ngt IRQi
Cho php hoc khng cho php cc yu cu ngt IRQi kch hot h
thng ngt.

1.3.2. THIT B IU KHIN PIC 8259 V C CH HOT NG CA


H THNG NGT CNG.
 Cu trc bn ngoi ca PIC 8259 (h.49)
34

Hpv

HVKTMM

 Cu trc bn ngoi ca PIC 8259 (h.50)

Cc khi chc nng:


 Thanh ghi yu cu ngt IRR (Interrupt Request Register) : l thanh ghi 8
bit. IRR cha ghi nhn tt c cc yu cu ngt IRQi i phc v. Nu tn
hiu IRQi = 1 th bit IRRi tng ng c t bng 1.
 B gii quyt u tin PR (Priority Resolver) : l thanh ghi 8 bt. PR xc
nh mc u tin ca cc yu cu ngt. Ngt c u tin cao nht c chn
v t vo bit tng ng trong ISR trong chu k INTA.
 Thanh ghi ngt ang c phc v ISR (In service Rigister): l thanh ghi 8
bit. ISR ghi nhn cc ngt ang c phc v. yu cu ngt IRQi no ang
c phc v th bit ISRi tng ng c t bng 1.
 Khi logic iu kin a ra th nghim INT c ni thng vis chn ca
CPU khi INT c mc cao l i CPU l phc v ngt khid\s logic iu
khin nhn INTA t CPU khi nhn c tn hiu INTA, PIC 8259 s cung
cp s ngt ra BUS d liu cho CPU khi m Bus l loi 8 bit, hai hng ,
3 trng thi c t iu khin ICWPCW c a vo PIC 8259 qua khi
ny xc lp ch ca 8259 s ngt v trng thi hot ng ca PIC
cng c a ra BUS d liu qua khi ny.
 Khi ghp tng
 PIC 8259 c c cu cho php ni ghp tng cc PIC 8259 vi nhau v khi
hot ng ca khi PIC ny . tng th nht c u ra ni trc tip vi CPU,
gi l PIC 8259 - ch u vo IRQi ca PIC ch c ni vi u ra ca
PIC 8259 ra. PIC ny c gi l PIC 8259 - th c ch ghp tng cho
php xy dng mt h thng ngt cng qun l c n 64 yu cu ngt
IRQ.
 Khi logic ghi / c v gii m: Thc hin gii m cc t iu khin ICW
(Initialization Command Word - t iu khin khi ng) v OCW
(Operation Command Word - t iu khin hot ng) qua hai li t iu
khin ny ngi s dng c th lp trnh xc lp ch hot ng cho PIC.
 Thanh ghi IMR: l thanh ghi 8 bit, cho php t / xo mt n ngt.
35

Hpv

HVKTMM

 Bng cc tn hiu CS, AO, RD, WR, v cch ghi / c PIC 8259
CS
0
0
0
0
0
0

AO
0
1
0
0
0
1

RD
0
0
1
1
1
1

WR
1
1
0
0
0
0

D4
X
X
0
0
1
X

D3
X
X
0
1
X
X

Hng thng tin


IRR, ISR => BUS
(IMR) = OCW1 => BUS
BUS => OCW2
BUS => OCW3
BUS => ICW1
BUS => ICW2, ICW3, ICW4, OCW1

 C ch hot ng ca h thng ngt cng:


iu kin ban u: PIC 8259 cn c khi ng qua cc t iu khin ICW.
Sau khi cc t iu khin ICW c np th PIC 8259 sn sang hot ng.
 Mt hoc nhiu thit b vo ra c yu cu c phc v pht tn hiu
IRQi = 1 (mc tch cc) cho PIC. PIC ghi nhn cc yu cu ngt IRQi
ny bng cch t cc bit IRRi tng ng ln 1.
 PIC 8259 chn IRQi c mc u tin cao nht phc v PIC gi tn hiu
INC cho CPU, i CPU phc v.
 CPU thc hin cc thao tc
Thc hin nt lnh ca qu trnh hin hnh
Lu a ch tr v (ni dung ca cc thanh ghi CS, IP) v thanh ghi
c FLAGS vo ngn xp.
Gi hai tn hiu ngt INTA cho PIC.
 Khi PIC 8259 nhn c tn hiu INTA th 1 : bit ISRi ng vi IRQi c
mc u tin cao nht c thit lp (ISRi = 1) v bit IRRi tng ng b
xo (IRRi = 0) trong chu k INTA th nht ny PIC 8259 khng gi cho
CPU qua BUS d liu.
 Khi PIC 8259 nhn c tn hiu INTA th 2: PIC 8259 gi s ngt tng
ng vi IRQi dang c phc v qua BUS d liu cho CPU.
 CPU nhn s ngt trn c s ca s ngt ny vo v tr tng ng trong
bng vc t ngt xc nh a ch ca chng trnh phc v ngt . CPU
np a ch chng trnh phc v ngt vo cc thanh ghi CS, IP, v bt u
thc hin chng trnh phc v ny
 Khi thc hin xong chng trnh phc v ngt (khi CPU thc hin lnh
IRET) th qu trnh phc v ca CPU cng kt thc. CPU khi phc a ch
tr v vo cc thanh ghi CS, IP, khi phc ni dung thanh ghi FLAGS v
tip tc thc hin qu trnh va b ngt.
 H thng ngt cng c th kt thc phc v ngt hin thi theo hai ch :
 Kt thc ngt bnh thng EOI (End Interrupt): khi PIC c t ch
kt thc ngt bnh thng EOI th CPU phi pht lnh bo kt thc
ngt EOI (qua t iu khin OCW2 cho PIC trc khi ri khi chng

36

Hpv

HVKTMM

trnh con phc v ngt. Khi bit ISRi ca ngt ang c phc v s
c dt xung 0.)
 Kt thc ngt t ng AEOI (Automantic EOI): khi PIC c dt ch
kt thc ngt t ng AEOI th ti chu k INTA th 2 bit ISRi ca
ngt ang c phc v s c t xung 0.
Bng cc cnh ni trn h thng ngt cng c th phc v yu cu ngt ny
nhng phn tip theo.

2. CC NGT CA MS-DOS DNH CHO THIT B NGOI VI


Cc chng trnh phc v ngt ca h iu hnh MS-DOS gn bi cc s hiu
ngt (t 00h-FFh). Khi cn ch cn gi s hiu ngt bi lnh gi ngt INT nh (n: s
hexa); t s hiu ngt trong bng vecto ngt s ly c a ch ca ngt trong b
nh; t c th gi thc hin chng trnh phc v ngt.
Cc s hiu chc nng ca MS-DOS nh sau:

2.1. CC NGT CA BIOS V ROMBIOS


 Cc ngt ca h 0 n 7 ( ROM, BIOS)
 Ngt logic:
0 - Chia cho 0
1 - Ch tng bc
3 - im dng thc hin chng trnh
4 - Trn dung lng
 Ngt cng:
2 - NMI: ngt khng che c
5 - In mn hnh ( print screen)
 Ngt di s iu khin ca PIC 8259A
S hiu ngt t 8 n F ( ROM.BIOS) n vo INTR ca VXL, cc ngt c
du * l ch yu.
8* Dao ng ca ng h ( ngt 18,2 ln/1 sec)
9* Ch phm n ca bn phm dng ch ngy gi ( INT 1Ah) v kim
tra tc ca a
A Khng dng
B Lin lc khng ng b ( ca ni tip)
C B phi hp ca lien lc khng ng b
D a c nh
E* - a mm
F My in
37

Hpv

HVKTMM

 Ngt iu khin thit b ngoi


10 iu khin mn hnh
11 Xc nh cu hnh ca my vi tnh
12 Xc nh kch thc b nh
13 Hnh ng c v ghi ln a
14 Vo/ra cho lin lc ni tip
15 Hnh ng vo/ra ca cassette
16 Bn phm; b xung cho INT9h
17 My in
18 im vo ca Basic cha trong ROM
19 im vo ca khi mc ni (BOOT: a ch 7C00h)
1A Gi ca ngy.
 Ngt pht bi chng trnh
1B Ngt chng trnh bi CTRL-BREAK
1C iu khin b m ng h.
 Ngt truy cp bng cc thng s
1D Bng cc thng s mn hnh c trong ROM
(dng khi pht khi iu khin 6845)
1E Bng cc thng s ca a
1F Bng cc s liu ca cc k t ph.

2.2. CC NGT CA DOS (GI CC CHC NNG)


20 Kt thc chng trnh, tr iu khin cho DOS
21 Gi cc chc nng DOS (ch s chc nng trong AH)
22 im kt thc chng trnh
23 im dng khn cp
24 im dng khi c li
25 c trc tip trn a vi a ch trc tip
26 Ghi trc tip ln a vi a ch trc tip
27 t ch thng tr ca mt chng trnh
28 3F Cc ngt dng bn trong chng trnh.
67 Ngt iu khin khi nh.

2.2.1. CC CHC NNG CA NGT INT 21H CA DOS


Ring ngt INT 21h ca DOS cho php truy cp ti 94 chc nng
(function) tnh ti phin bn 3.0 trong c 13 chc nng c dng bn trong
38

Hpv

HVKTMM

DOS, cn 81 chc nng c th gi c t mt chng trnh s dng. Trc khi


gi lnh ngt INT 21h, s hiu chc nng phi np vo thanh ghi AH ca vi x l
v c th mi chc nng ny cn c s hiu chc nng con np vo AL (xem
chng 5).
Danh sch cc chc nng ca ngt INT 21h nh sau:
S hiu chc nng
Chc nng
00h
Kt thc chng trnh
01h
Nhp vo t bn phm
02h
a ra mn hnh
03h
Vo ph (ba khng ng b)
04h
Ra ph (ba khng ng b)
05h
a ra my in
06h
Vao/ra trc tip t bn iu khin
07h Vo trc tip t bn iu khin khng a ra mn hnh
08h Vo t bn iu khin khng a ra mn hnh
09h
In
0Ah
Vo t bn phm b nh m
0Bh
Kim tra trng thi ca n v vo
0Ch
Xa b m bn phm
0Dh
Hi phc a
0Eh
Chn a
0Fh
M tp
10h
ng tp
11h
Tm s liu vo u tin trong th mc
12h
Tm s liu vo th hai
13h
Bi b tp
14h
c ni tip
15h
Ghi ni tip
16h
To tp mi
17h
Thay i tn tp
18h
Bn trong DOS
19h
c ch s a hin hnh
1Ah
Ch a ch ca b m ca a (DTA)
1Bh
Cc tin tc v bng cc tp (FAT)
1Ch
Tin tc ca bng cc tp ca a
1Dh
Bn trong DOS
39

Hpv

HVKTMM

1Eh
1Fh
20h
21h
22h
23h
24h
25h
26h
27h
28h
29h
2Ah
2Bh

Bn trong DOS
Bn trong DOS
Bn trong DOS
c mt tp
Ghi mt tp
c kch thc mt tp
Khi pht vng ghi c chn la trong mt FCB
Khi pht vct ngt
To mt tip u mng (segment) mi ca chng trnh (PSP)
c nhiu khi ghi
Ghi nhiu khi, CX=0: thay i kch thc mt tp
Phn tch tn ca tp
c ngy trong CX:DX
Ghi ngy trong CX:DX

40

Hpv

HVKTMM

CHNG III. LP TRNH CHO CC THIT B VO RA


 Mc ch:
Hiu c cu trc, nguyn l hot ng ca cc thit b vo ra thng
dng
Trn c s , lp trnh cho cc thit b ny
 Ni dung:
Lp trnh bn phm
o Cu trc v nguyn l hot ng
o Lp trnh bn phm
Lp trnh cho chut
o Cu trc, hot ng ca chut
o Lp trnh
Lp trnh mn hnh
Lp trnh my in...

41

Hpv

HVKTMM

1. LP TRNH BN PHM
1.1. CU TRC V NGUYN L HOT NG CA BN PHM
(B sung phn cu to v nguyn l hot ng)
C 2 loi bn phm:
Bn phm iu khin trc tip: t phm, thng t bn t ng ho dng my vi
tnh
Bn phm thng thng: cha vi x l v b nh m; c nhiu phm n
Cc nhm phm:
Cc phm m ASCII( American national Standard Code Infomation
Interchange)....
Trong bn phm c mt vi x l (8048 cho PC XT, 8042 cho PC AT) to m
qut v m ASCII khi mt phm nhn v th. Cn c b nh m ghi m qut
trc khi truyn vo CPU. B iu khin bn phm c thanh ghi iu khin, thanh
ghi trng thi CPU ghi lnh iu khin hoc c thng bo trng thi (cc c).
Thanh ghi m s liu ghi d liu a vo/ra.
C mt s loi bn phm s dng cho IBM PC. Bn phm chun c 83 phm; mt
s loi m rng s dng 101 phm. Cc phm c chia thnh ba nhm chnh:
Cc phm m ASCII (American national Standard Code Infomation Interchange): l cc
phm tng ng vi cc k t hin th ASCII v cc k t iu khin bao gm: cc
ch ci, cc ch s, cc du cu, du s hc v mt s biu tng c bit; cc
phm iu khin nh: ESC, Enter, Backspace, Tab.
Cc phm chc nng: F1-F10 (hoc F1-F12 vi cc phm m rng), cc phm mi
tn, cc phm Home, PgUp, PgDn, End, Ins, Del. Cc phm ny thng c dng
trong chng trnh thc hin chc nng c bit.
Cc phm dch: Shift tri, Shift phi, Caps Lock, Ctrl, Alt... Cc phm ny thng
dng kt hp vi cc phm khc.
 M Scan:
Mi phm trn bn phm c gn mt s duy nht gi l m scan ca phm. Khi
mt phm c nhn, vi mch bn phm gi m scan tng ng n CPU. Gi tr
cc m scan bt u t 1.
phn bit mt phm nhn c nh, vi mch phm s gi mt m mi bng
m scan c cng 80h (128) gi l m kt thc. V d m scan ca ESC l 1h th m
kt thc ca n l 81h.
Khi nhn t hp cc phm s thu c m scan v m ASCII khc.
B m bn phm: bn phm c mt b nh m lu tr cc phm nhn
nhng cha c c b chng trnh. Mi phm nhn c cha trong mt t
vi: byte cao cha m scan; byte thp cha m ASCII nu l phm ASCII hoc
cha 0 nu l phm chc nng. Mt phm dch khng c lu trong b m; khi
phm dch kt hp vi cc phm khc s to ln mt m scan t hp v c lu
vo b m.
42

Hpv

HVKTMM

Cc phm c lu tr trong b m theo cu trc hng i (Queue). Nu c yu


cu nhp phm m b m rng, h thng s i cho n khi mt phm c nhn.
Khi b m y, nu nhn phm, my tnh s pht ting ku bo li.
 Hot ng:
Khi nhn mt phm v chng trnh thi hnh ang c n; tin trnh nh sau:
1. Bn phm gi ngt 09h n CPU yu cu trao i tin
2. Chng trnh phc v ngt 09h c t cng vo/ra v cha vo trong b
m.
3. Chng trnh c th s dng cc ngt ca h iu hnh c cc gi tr
ny

1.2. CC NGT DNG CHO BN PHM


Bng cc ngt bn phm:
Ngt
Ngun gc
INT 09h
T thit b bn phm
Do chng trnh
INT 16h
ROM-BIOS
INT 01Bh
ROM-BIOS
INT 21h
DOS
INT 23h
DOS

Cng dng
Bo bn phm yu cu trao i
tin
Yu cu phc v bn phm
To ngt khi c t hp Ctrl-c
Yu cu phc v bn phm
Yu cu x l ngt Ctrl-c

 Ngt INT 9h
Sinh ra do nhn phm, c a vo CPU qua vi mch x l ngt PIC 8259
(ngt cng); yu cu h vi x l 86 trao i tin
 Ngt INT 16h
Thuc ROM-BIOS, thuc chng trnh vo ra c s ghi trong ROM. Kt
thc chng trnh, tr iu khin v cho chng trnh trc , khng tr v
DOS
Cc hm chc nng
Chc nng
M t
00h
c k t bn phm tip theo
Tham s vo:AH=00h
Tham s ra: AH=m qut ca phm; AL=m ASCII ca
phm
01h
c v kim tra s sn sng ca mt phm. S dng c ZF:
1 cha sn sng, 0: sn sng( c mt phm n)
Tham s vo: AH=01h
Tham s ra: AH=m qut, ZF=0; AL=m ASCII
02h
c trng thi phm Shift hay kim tra trng thi mt s
phm iu khin v mt s ch vo ca phm

43

Hpv

03h

04h
05h

06-0Fh
10h
11h

12h

HVKTMM

Tham s vo: AH=02h


Tham s ra: AH=trng thi phm Shift vi cc bt trng
thi: bit 7 = 1( phm Insert c nhn); bit 6 = 1( phm
Caps Lock c nhn); bit 5 = 1( phm Num Lock
nhn); bit 4 = 1( phm Scroll nhn); bit 3 = 1( phm Alt
nhn); bit 2 = 1( phm Ctrl nhn); bit 1 = 1( phm
dch tri nhn); bit 0 = 1( phm dch phi c nhn)
t tc g phm v thi gian tr
Tham s vo: AH=03h; AL=05h; BL=vn tc g t ng(
vi 00h:30ln/s; 01h:26.7ln/s; ...); BH=thi gian tr( vi
01h: 500ns; 02h:750ns; 03h:1000ns)
Tham s ra: khng c
Dnh ring
Ghi m ca mt phm vo b nh m
Tham s vo: AH=05h; CH=m qut ca phm; CL=m
ASCII
Tham s ra: AL=00h( ghi); AL=01h( b m y)
Dnh ring
c bn phm m rng
Tham s vo: AH=10h
Tham s ra: AH=m qut ca phm; AL=m ASCII
c trng thi ca bn phm m rng
Tham s vo: AH=11h
Tham s ra: ZF=1( khng c hnh ng); ZF=0( c hnh
ng); AH=m qut ca phm; AL=m ASCII
c trng thi m rng ca phm Shift
Tham s vo: AH=12h
Tham s ra: AH=trng thi ca Shift (vi cc bit m t
trong chc nng 02h); AL=trng thi Shift m rng: bit 7 =
1( SysReg c nhn); bit 6 = 1( Caps Lock c nhn);
bit 5 = 1( Num Lock c nhn); bit 4= 1( Scroll Lock
c nhn); bit 3 = 1( Alt phi c nhn); bit 2=1( Ctrl
phi c nhn); bit 1 = 1( Alt tri c nhn); bit 0 = 1(
Ctrl tri c nhn)

 Ngt INT 21h( ca DOS) vi cc hm cho bn phm


So vi INT 16h ca ROM-BIOS, INT 21h c c im:
Thc hin chm hn
C th a vo/ra trc tip mn hnh m khng qua b nh m ca bn phm
C th hin k t a vo/ra mn hnh
Cc chc nng:

44

Hpv

Chc nng
01h
06h

07h

08h
0Ah

0Bh

0Ch

HVKTMM

M t
Vo k t c in ra mn hnh
Tham s vo: AH=01h
Tham s ra: AH=m scan; AL=m ASCII
Vo trc tip t bn iu khin, c in ra mn hnh
Tham s vo: AH=06h, DL=m ASCII ca k t
mun a ra, DL=FFh nu mun a k t vo t
bn phm
Tham s ra: AL=m ASCII ca phm nhn
Vo trc tip t bn iu khin, khng in ra mn
hnh
Tham s vo: AH=07h
Tham s ra: AL=m ASCII ca phm nhn
Vo cc k t t b m, khng a ra mn hnh
Tham s vo: AH=08h
Tham s ra: AL=m ASCII ca phm nhn
c vo mt chui cc k t t bn phm, ghi b
m, c a ra mn hnh, ti a 254 k t
Tham s vo: AH=0Ah
Tham s ra: m ca chui k t c a vo b
nh c a ch DS:DX
c v kim tra trng thi ca bn phm
Tham s vo: AH=0Bh
Tham s ra: AL=m ASCII ca phm nhn nu c,
nu khng AL=0; AL=FF nu c t nht 1 phm
nhn
Xo b m bn phm v c bn phm
Tham s vo: AH=0Ch, AL=mt trong cc chc
nng c bn phm trn (01h, 06h, 07h, 08h, 0Ah)
Tham s ra: AL=m ASCII ca phm nhn tng
ng vi cc chc nng ph ca AL trong tham s
vo

1.3. LP TRNH PHC V BN PHM S DNG NGT


1.3.1. QUY TC CHUNG
Khi s dng cc ngt ca h iu hnh lp trnh phc v bn phm nhn chung
cc chng trnh u theo tin trnh sau:
Np s hiu ca hm chc nng vo thanh ghi AH, s hiu hm chc nng con
vo AL v cc tham s vo tng ng vi mi hm chc nng vo cc thanh ghi

45

Hpv

HVKTMM

Gi ngt tng ng dung cho phm: thng dng ngt INT 21h ca DOS hoc
INT 16h ca ROM BIOS
Cc thng tin trng thi sau khi thc hin c lu tr nh cc tham s ra

1.3.2. MT S V D
Trong mi v d gm cc bc: M t, v lu thut ton
Ex1: Nhp vo t bn phm mt k t, a ra mn hnh k t v cc k t khc
c m tng dn k t k t
Lu
Code:
MOV AH, 01H
INT 21H
MOV BH, AH
;chuyn m qut vo thanh ghi BH
MOV BL, AL
;chuyn m ASCII vo BL
PRINT:
MOV AH, 02H
MOV DL, BH
;chuyn m ASCII vo DL in
INT 21H
INC BH
INC BL
CMP BL, FFH
;so snh BL vi FFh
JLE PRINT
;Kt thc chng trnh
BT vit ctr s dng MASM bin dch v chy
Ex2: vit chng trnh kim tra trng thi sn sng ca phm nu c k t s nhy
ti chng trnh a ra mn hnh; nu cha th ch nhn phm
MOV AH, 01H
INT 16H ;gi ngt 16 kim tra
JNZ CHECK
;nhy n phn kim tra nu c k t
MOV AH, 00H
INT 16H

1.4. LP TRNH TRC TIP CHO BN PHM


Khng s dng ngt INT 16h hoc INT 21h ca h iu hnh. Thc cht ca vic
lp trnh trc tip l vit cc chng trinh can thip trc tip phn cng tng t
nh cc chng trnh con phc v ngt.

1.4.1. C IM CA KHI IU KHIN BN PHM


 Mt s loi my nh PC XT v PC Portable c b iu khin bn phm l vi x
l 8048 vi cc a ch cng:
 Cng 60h, cng ghi s liu, ghi m qut.
 Cng 61h, cng trng thi, ghi trng thi ca bn phm
46

Hpv

HVKTMM

 My PC AT c trang b b iu khin l vi x l 8042 vi cc cng nh sau:


 Cng 60h: l cng d liu, s dng ghi m t bn phm hoc t CPU.
CPU phi a lnh c cng IN AL, 60h bit phm no c nhn.
 Cng 64h: l cng iu khin v trng thi vi cc lnh t CPU:
 Ghi li iu khin: OUT 64h, AL (hoc OUT DX, AL - vi iu kin
np 64h vo DX) iu khin hot ng bn phm. C th nh sau:
0

1: bin i
m qut
thnh gi tr
ca PC

1: cho php
bn phm AT
hot ng

1: cm bn
phm hot
ng

Cho php/
cm ghi .
Ging Insert

Dng
c c

0: cm
1: cho php
ngt ca thit
b ph

0: cm
1: cho php
bn phm
a yu cu
ngt

Vi t hp cc bit 0-6 ca thanh ghi iu khin s thu c tp hp cc


lnh ca bn phm AT; mt s lnh ph bin:
M lnh
M t
20h
t byte lnh vo thanh ghi m ra
60h
Vit byte lnh vo cng 60
AAh
T kim tra; kt qu 55h cng 60h nu khng li
ADh
Cm bn phm hot ng
C0h
c cng vo ti cng 60h
D0h
c ni dung ca cng xut ti cng 60h
 c trng thi bn phm: IN AL, 64h (hoc IN AL, DX - vi iu kin

np 64h vo DX). Li iu khin trng thi cho bit hin trng hot
ng ca bn phm. nh dng nh sau:

0: sai
s l
1: chn

1: c li
nhn tin qu
thi gian

1: c li
trong khi
truyn tin

0:
keyboard
b kho.

1: ch d liu
l lnh
0: ch s liu

1: t kim
tra xong
0: bt ngun
or xo

0: b m
vo rng
1: c s liu

0: b m ra
rng
1: c s liu

1.4.2. QUI TC CHUNG CA LP TRNH TRC TIP BN PHM


 Nhim v:
 iu khin bn phm hot ng (cm, cho php, t tc tr, tc
truyn)
 Trao i d liu vi khi iu khin bn phm qua cng 64h
 Trao i d liu vi bn phm qua cng 60h
D liu trao i c th l: cc lnh( ghi ra), trng thi( c vo), s liu ca
m( m qut, ASCII)
 Thao tc ch yu:
1. Gn a ch cng cho thanh ghi DX
2. c trng thi ca bn phm( vo AL): IN AL, 64h
3. Kim tra v ch trng thi sn sng trao i d liu ca bn phm
TEST AL, trng thi cn( AL cha trng thi c vo; trng thi cn
l mt s tng ng vi thanh ghi trng thi trnh by). S dng
TEST th ni dung ca AL khng thay i sau khi so snh
C th s dng CMP AL, trng thi cn (nhng ni dung mi ca AL
sau khi thc hin lnh s l hiu s ca AL v trng thi cn)
47

Hpv

HVKTMM

JNZ a ch lnh nhy ti (thng l lnh c trng thi ch trng


thi sn sng)
Trao i d liu: s dng lnh:
OUT a ch cng, AL ( a d liu t CPU ra bn phm hay khi
iu khin- thng l cc lnh iu khin)
IN AL, a ch cng ( c d liu t b m vo CPU)

1.4.3. CC V D
V d 1: vit chng trnh thc hin vic cm ngt, c, ch trng thi sn sng
ca bn phm v cm bn phm hot ng
M lnh nh sau:
CLI ;cm ngt
MOV CX, 0FFFFh ;np s ln lp vo CX
WAIT:
IN
AL, 64h ;c trng thi ti cng 64h
TEST AL, 00000010h ;kim tra b m vo b y?
LOOPNZ
WAIT ;ch b m y
MOV AL, 0ADh ;gi m lnh cm phm hot ng
OUT 64h, AL
STI ;cho php ngt tr li
INT 20h
V d 2: vit chng trnh ghi byte s liu hay lnh vo cng 60h
M lnh nh sau:
MOV CX, 40h
;offset ca on nh s liu ES
MOV ES, CX
;
MOV BH, AL
;luu tam AL trong BH
MOV BL, 03h
;so lan lap
START_LOOP:
CLI
;cam ngat
MOV CX, 0FFFFh ;so lan lap de cho trang thai san sang
MOV AL, 01001111b ;xoa bit 4 va bit 5
AND ES:[0097h], AL ;chan bit 4, 5, 7 cua ngan nho ES:[0097h]
WAIT1:
IN
AL, 64h
;doc trang thai
TEST AL, 00000010b ;kiem tra trang thai bo dem day (bit1=1)
LOOP WAIT1
;tro ve WAIT1 neu chua san sang
MOV AL, DATA ;DATA la du lieu can ghi vao phim
OUT 60h, AL
;ghi ra cong 60h
STI ;cho phep ngat
MOV CX, 0FFFFh ;so lan lap de cho trang thai san sang
WAIT2:

48

Hpv

HVKTMM

TEST
JNZ
DEC
JNZ
OR

BYTE PTR ES:[[0097h]], 0001000b ;kiem tra bit4=1


EXIT ;nhay den EXIT neu bit4=0
BL
;tro lai WAIT2 neu CX!=0 and bit4=1
START_LOOP
;tro lai START_LOOP
BYTE PTR ES:[[0097h]], 1000000h ;xac lap sai so bit7=1

INT

20h

EXIT:

49

Hpv

HVKTMM

2. LP TRNH CHO CHUT


2.1. CU TRC V HOT NG CA CHUT
2.1.1. CU TO V HOT NG CA CHUT
Bng xoay bng kim loi bc cao su. Khi di chut, bng truyn chuyn ng
vo hai thanh nh X, Y t vung gc vi nhau. Khi bng xoay, hai trc X, Y
xoay theo lm cc a gn vi trc cng xoay theo. Trn a c khe h cho nh
sng ca mt phtdit truyn qua to thnh mt xung in b cm bin. S
xung in ny c s lng khc nhau (theo s vng ca a) v tc khc
nhau (theo tc quay ca a). My tnh s c cc xung trn v ch th to
X, Y thnh v tr ca con tr (mi tn trn mn hnh).

2.1.2. MCH GHP NI CHUT


Chut c ghp ni trao i tin vi my tnh thng qua cng ni tip (thng
l COM1)
Tin c truyn theo gi vi cc tham s: vn tc truyn 1200 baud(xung/s);
s bit s liu trn mt li tin 7; s bit khi pht 1; s bit dng 1; khng c kim
tra chn l. Trong khong thi gian xc nh, chut gi nhng thng tin v v
tr con tr, trng thi ca phm nhn. D liu c gi di dng ba gi tr 7
bit, c tp hp trong mt gi vi cc bit bt u v bit dng. Gi tr u tin
tng ng vi trng thi ca phm nhn v cha hai bit cao ca cc to :
Bit 6: 1
Bit 5: Nm nhn phi (0: nh; 1: nhn)
Bit 4: Nm nhn tri (0: nh; 1: nhn)
Bit 3-2: Hai bit cao ca to Y
Bit 1-0: Hai bit cao ca to X
Hai byte tip theo l 7bit thp ca to X, Y

2.1.3. IU KHIN CHUT


iu khin chut bi ngt INT33 vi nhiu chc nng khc nhau
C hai cch iu khin chut:
Ci t qua mt lnh DEVICE = MOUSE trong file CONFIG.SYS ca
MS-DOS
iu khin bng nhng chng trnh thng tr c khi pht sau khi bt
ngun nui

2.1.4. MN HNH O CHO CHUT


L vng din tch trn mn hnh m khi con tr trong th s kin kch
chut s c hiu lc. Khi lp trnh cho chut, iu quan trng l cn phi xc nh

50

Hpv

HVKTMM

v tr con tr chut trn mn hnh. thun tin, ta s dng mt mn hnh o; kch


thc ca mn hnh o tu theo tng ch ca mn hnh

Ch
Kch thc mn hnh o
00-07h
640x200
0D-0Eh
640x200
0F-10h
640x350
11h-12h
640x480
13h
640x200
Khi chuyn t ch ho sang vn bn phi chia 8 (v mi dng v mi ct
ng vi 8 im); ngc li phi nhn 8

2.2. NGT DNH CHO CHUT


Nhng chng trnh iu khin chut bt u bng vic kim tra b iu khin
chut ci t cha. S dng chc nng 00h kch hot
Nu chut kt ni, AX cha gi tr tr v FFFFh, nu gi tr khc th cha c
chut no kt ni
BIOS c ngt INT 33h m bo cho hot ng ca chut vi cc hm chc nng
m t trong bng sau:
Chc nng
M t
00h
Khi ng v c trng thi chut
01h
Hin th con tr chut
02h
Du con tr chut
03h
c v tr v trng thi cc phm chut
04h
Thay i v tr con tr chut
05h
Trng thi nh ca nm iu khin chut
06h
Trng thi nhn ca nm iu khin chut
07h
Xc nh ct cc i v ct cc tiu ca chut
08h
Xc nh hng cc i v hng cc tiu ca chut
09h
Xc nh dng con tr chut trong ch ho
0Ah
Xc nh dng con tr chut trong ch vn bn
0Bh
c khong cch dch chuyn ca chut
0Ch
Ci t chng trnh x l chut
0Dh
Kch hot s m phng ca bt ch sng
0Eh
Hu b s m phng ca bt ch sng
0Fh
Xc nh t s mickey/pixel
11h
t vng cm cho con tr
13h
t ngng cho vn tc
14h
Thay chng trnh x l chut
15h
Xc nh kch thc vng m cho trng thi chut
16h
Ghi li trng thi ca b iu khin chut
17h
Khi phc trng thi chut
18h
Ci t chng trnh x l tu chn
51

Hpv

19h
1Ah
1Bh
1Ch
1Dh
1Eh
1Fh
20h
21h
22h
23h
24h

HVKTMM

c a ch chng trnh x l tu chn


t nhy cho chut
c nhy chut
t tn s ngt ca chut
t s trang mn hnh
c s trang mn hnh
Lm ngng chng trnh iu khin chut
Khi ng li chng trnh iu khin chut
Khi to li chng trnh iu khin chut
t ngn ng s dng
c s ngn ng s dng
Xc nh loi chut, s yu cu ngt, phin bn

2.3. LP TRNH CHO CHUT


2.3.1. KCH HOT V XC NH LOI CHUT
2.3.1.1. CC CHC HM NNG
 Khi to: 00h: Kch hot chng trnh iu khin v kim tra xem c chng
trnh iu khin ci t
Tham s vo: AH = 00h
Tham s ra:
AX = FFFFh nu ci t; 0000h ngc li
BX: cha s phm ca chut, phi gi chc nng ny trc
khi gi cc chc nng khc
 Ngng v kch hot li:
AH=1Fh: lm mt tc dng ca chng trnh iu khin chut v cho bit a
ch ca chng trnh iu khin chut trc ; cn bit c li (AX=FFFFh)
hay khng (AX=001Fh)
Chc nng 20h: Kch hot li chng trnh iu khin chut m 1Fh lm mt
tc dng
Chc nng 21h: Khi to li chng trnh iu khin chut, thi kch hot cc
chng trnh x l ci t
 Xc nh loi chut: chc nng 24h
Tham s vo: AX=0024h
Tham s ra:
BH=s ln ca th h
BL=s nh ca th h
CH=kiu chut (01:chut song song; 02:chut ni tip;
04:chut InPort; 08:chut PS/2; 10h:chut HP)
CL=s hiu ngt cng (01:PS/2; gi tr khc l PC)
2.3.1.2. CHNG TRNH V D
52

Hpv

HVKTMM

.......
MOV
AX, 0
MOV
BX, 0
MOV
CX, 0
MOV
DX, 0
;1. Kch hot chut
MOV
AH, 00h
INT
33h
;2. Hin chut
MOV
AH, 01h
INT
33h
;3. n chut
MOV
AH, 02h
INT
33h
;4. Hin chut
MOV
AH, 01h
INT
33h
;5. Hu kch hot
MOV
AH, 1Fh
INT
33h
;6. Hin chut -> vn khng c co tr v chut cha kch hot
MOV
AH, 01h
INT
33h
;7. Kch hot li
MOV
AH, 20h
INT
33h
;8. Xc nh loi chut
MOV
AH, 24h
INT
33h
INT
20h

2.3.2. TRNG THI CHUT


2.3.2.1. CC HM CHC NNG V TRNG THI CHUT
c trng thi: 03h
Tham s vo: AH=03h
Tham s ra:
BX: ch cc phm nhn (D0=1:phm tri; D1=1: phi;
D2=1:phm gia)
CX=X: to ngang ca mn hnh o
DX=Y: to dc ca mn hnh o
Ct trng thi chut: 16h
Ct trng thi chut vo vng m ca chng trnh gi ti a ch ES:DX
Khi phc trng thi c ca chut: 17h
53

Hpv

HVKTMM

c li trng thi ct a ch ES:DX


c kch thc vng m ghi trng thi chut: 15h
Tham s ra:
BX=s byte
t tn s ngt cng ca chut: 1Ch
t tn s phn cng ca chut c v tr hin thi v trng thi phm nhn
truyn tham s cho cc chng trnh iu khin chut.
Tham s vo: AH: 1Ch
BX=tn s (D0=1:khng ngt; D1=1:cho 30ngt/s; D2=1: cho
50ngt/s; D3=1: 100; D4=1: 200)
2.3.2.2. CHNG TRNH V D
Chng trnh khi to chut, c trng thi hin thi ca chut, ct trng thi hin
thi, khi phc trng thi hin thi, c trng thi hin thi. C th vit v chy
chng trnh trn Debug v chy tng on lnh. M lnh nh sau:
MOV AH, 00h ;Kch hot chut
INT 33h
MOV AH, 01h ;Hin chut
INT 33h
MOV AH, 03h ;c trng thi
INT 33h
;ca tr chut
MOV AH, 16h ;Ct trng thi
MOV CX, 012Eh
MOV ES, CX; Gn tham s
MOV DX, BX
INT 33h
;Khi phc trng thi chut vng nh khc
MOV AH, 17h
MOV CX, 1500h
MOV ES, CX
MOV DX, 0130h
INT 33h
;c li trng thi tr chut
MOV AH, 03h
INT 33h
INT 20h

2.3.3. IU KHIN CON TR CHUT


2.3.3.1. CC HM CHC NNG V CON TR CHUT
 Trang mn hnh cha chut:
t trang mn hnh cha chut:chc nng 1Dh; s hiu trang trong thanh ghi
BX

54

Hpv

HVKTMM

c trang mn hnh: chc nng 1Eh; s hiu trang c ra cha trong thanh ghi
BX
 Xc nh hnh dng con tr:
Hnh dng con tr c th thay i theo chng trnh iu khin; cng c th
thay i theo chng trnh ng dng; tu ch mn hnh v loi con tr
(cng hoc mm) m c hnh dng v kch thc con tr khc nhau
 Trong ch vn bn:
Thng hin con tr di dng hnh khi (ging con tr vn bn) con tr
cng
Chng trnh ng dng ch c th thay i dng bt u v dng kt thc
ca con tr
Kch thc con tr ph thuc vo ma trn k t hin thi v ch mn
hnh
K thut to con tr mm (bng chong trnh) phi s dng:
Hai byte k t v thuc tnh trong RAM mn hnh
Thanh ghi mt n (che) mn (Screen Mask) 16bit
Thanh ghi mt n (che) con tr 16bit
Chng trnh iu khin chut phi xc nh li hnh dng con tr mi khi con
tr thay i v tr trn mn hnh. Qu trnh nh dng con tr kt hp cc yu t
trn theo cc bc:
M k t v byte thuc tnh kt hp vi Screen Mask theo php AND
Kt qu c kt hp vi Cursor Mask cho hin ln mn hnh
C bn kh nng chnh ca dng con tr:
Con tr l mt k t c bit vi mt mu c bit
Con tr l mt k t c bit nhng mu thay i khi con tr ln k t
Con tr l mt k t c bit nhng mu k t thnh mt bin th khi con
tr ln k t
 Con tr trong ch ho: chc nng 09h
C mt bng nh trong RAM gm 64byte (32byte u c AND v 32byte
sau c OR vi mu ca con tr hin thi)
Cn phi a vo:
Khong cch t im lm chun ti mp tri ca bng vo thanh ghi
Khong cch t im lm chun ti mp phi ca bng vo thanh ghi
Con tr trong ch vn bn: chc nng 0Ah
Cn phi a vo:
Kiu con tr vo thanh ghi BX (0: mm; 1: cng)
Mt n AND vi con tr mm hoc dng bt u - vi con tr cng vo CX
Mt n XOR vi con tr mm hoc dng kt thc - vi con tr cng vo DX
Hin v du con tr:
Hin con tr: chc nng 01h
Con tr hin ln mn hnh khi b m trong c gi tr 0
55

Hpv

HVKTMM

Chng trnh iu khin chut theo di chuyn ng ca chut ngay c khi


khng hin trn mn hnh; chc nng ny ch thc hin vic hin ln mn hnh
ti v tr ca thi im hin ti
Du con tr; chc nng: 02h
Con tr khng hin ln mn hnh khi b m trong c gi tr -1
Khi gi chc nng ny, con tr khng hin nhng chng trnh iu khin
vn theo di v tr ca con tr
Ch :
S ln gi chc nng 01h v 02h phi m bo mt t l nh nhau; thng
gi 01h u chng trnh v 02h cui chng trnh.
Nu chng trnh ghi trc tip RAM mn hnh th s ln gi phi nhiu hn
v:
Con tr s bin mt nu b ghi bi mt k t khc
K t s khi phc khi con tr ri sang v tr mi
V tr con tr:
n v l Mickey (1mickey = 1/200 inch)
Cc to c tnh vi mn hnh o:
Chc nng 00h t phm vi di chuyn con tr trong ton b mn hnh
Chc nng 04h xc nh v tr mi; 07h(gii hn trc X); 08h(gii hn trc
Y)
V tr con tr c th c c cng vi trng thi nhn bng chc nng 03h
Xc nh v tr mi: 04h:
Cn a to X vo CX; to Y vo DX
Cho php chuyn v tr m khng cn di chuyn chut
Xc nh phm vi di chuyn con tr:
Theo to X: chc nng 07h cn np to min vo CX, max vo DX
Theo to Y: chc nng 08h cn np to min vo CX, max vo DX
t vng cm chut: 10h
Cm chut di chuyn trong vng din tch:
To gc cao bn tri (CX=X; DX=Y)
To gc thp phi (SI=X; DI=Y)
Khi di chuyn vo vng cm, con tr s bin mt. C th b vng cm bng
chc nng 01h hoc 00h
Xc nh khong cch dch chuyn: chc nng 0Bh
c khong cch gia v tr hin thi v v tr khi gi chc nng ny ln trc
(v tr c c ngay trc )
CX: cha khong cch ngang
DX: cha khong cch dc
2.3.3.2. Chng trnh v d
 V tr con tr chut
MOV AX, 0
MOV BX, 0
56

Hpv

HVKTMM

MOV
MOV
;
MOV
INT
MOV
INT
MOV
MOV
MOV
INT
MOV
INT

CX, 0
DX, 0
AH, 00h
33h
AH, 03h
33h
AH, 04h
CX, 0278h
DX, 0000h
33h
AH, 03h
33h

MOV
MOV
MOV
INT

AH, 07h
CX, 0050h
DX, 0100h
33h

MOV
MOV
MOV
INT

AH, 08h
CX, 0050h
DX, 00A0h
33h

MOV AH, 03h


INT 33h
INT
INT
INT

33h
33h
33h

MOV AH, 0Bh


INT 33h
INT
INT
INT

33h
33h
33h

MOV AH, 03h


INT 33h
INT 20h
 Hnh dng con tr chut:

57

Hpv

MOV
MOV
MOV
MOV

HVKTMM

AX, 0
BX, 0
CX, 0
DX, 0

MOV AH, 01h


INT 33h
MOV
MOV
MOV
MOV
INT

AH, 0Ah
BX, 0000h
CX, 00AAh
DX, 0055h
33h

MOV
MOV
MOV
MOV
INT

AH, 0Ah
BX, 0001h
CX, 00AAh
DX, 0055h
33h

MOV AH, 00h


MOV AL, 04h
INT 10h
MOV AH, 00H
MOV AL, 00h
INT 10h
MOV
MOV
MOV
INT

AH, 09h
BX, 0002h
CX, 0030h
33h

2.3.4. PHM NHN


2.3.4.1 CC HM CHC NNG
Xc nh s ln nhn mt phm: 05h
c trng thi trong thanh ghi BX: vi phm tri (D0=1), phm phi (D1=1)
Tham s ra:
AX: trng thi cc phm ca chut ti ging BX tham s vo
BX: s ln phm c nhn t khi bt u gi chc nng ny ln trc
CX: cha to X ca phm trong mn hnh o
DX: cha to Y ca phm trong mn hnh o
58

Hpv

HVKTMM

Xc nh s ln nh mt phm: chc nng 06h


Cho bit mt phm c nh bao nhiu ln t khi gi chc nng ny ln cui;
cng cho bit v tr con tr ti thi im phm c nh ln cui
Tham s vo:
AX=0006h
BX=s hiu phm (0 tri, 1 phi, 2 gia)
Tham s ra:
AX=trng thi tt c cc phm nhn ca chut (=01 phm tri b n, 02 phm
phi b n, 04 phm gia b n)
BX=s ln phm nhn c nh k t ln nh trc khi gi chc nng ny
CX=X ti thi im c nh ln cui
DX=Y ti thi im c nh ln cui
2.3.4.2. CHNG TRNH V D

2.3.5. TC DI CHUYN CA CON TR CHUT


2.3.5.1. CC HM CHC NNG
Chc nng 1Ah: t s tng quan gia mickey v im nh:
Tham s vo:
CX=s lng mickey tng ng vi 8 im chiu ngang
DX=s lng mickey tng ng vi 8 im chiu dc
Trc khi t, sau khi gi 00h gi tr mc nh l 8mickey ngang v 16
mickey dc
t ngng tng gp i tc con tr chut: 13h
Khi tc con tr chut vt qu mt ngng no (t trong DX), tc
di chuyn s c tng gp i.
Mun ngn s tng gp i cn t ngng c gi tr ln
t nhy ca con tr: 1Ah
Kt hp cc chc nng 0Fh v 13h, cho php t s tng ng gia s di
chuyn ca chut v con tr chut v ngng tng gp i
Phi ghi cc tham s vo cc thanh ghi BX, CX, DX
c nhy ca chut: 1Bh
Ngc vi 1Ah
Cc tham s ra cha trong cc thanh ghi: BX, CX, DX
2.3.5.2. CHNG TRNH V D

2.3.6. CI T CHNG TRNH X L KHI DNG CHUT


2.3.6.1. CI T CHNG TRNH X L S KIN

59

Hpv

HVKTMM

Khi di chuyn con tr chut n v tr mong mun, chng trnh iu khin chut
s c v tr v trng thi ca phm chut; t m chuyn ti lnh u tin ca
chng trnh x l s kin tng ng trong b nh thc hin.
Phm nhn ca chut s gy ra mt ngt cho vi x l; ngt no c gi s tu
thuc vo v tr ca chut trn mn hnh (tu hnh ng m gi chng trnh x l
ngt tng ng vi v tr ca tr chut)
lm c iu ny cn bit cch ci t chng trnh x l s kin hay x l
ngt ti a ch nh mong mun
Ci t chong trnh x l chut: chc nng 0Ch
Tham s vo:
ES:DX=a ch chng trnh x l ca cc bit ch s thay i v tr ca
chut: D0, phm tri b n D1 hay nh D2, phm phi b n D3 hay nh D4, phm
gia b n D5 hay nh D6
Thay chng trnh x l chut: chc nng 14h
Ci t mt chng trnh x l mi nhng gi li thng tin v chng trnh x l
c
Tham s vo: ging 0Ch
Tham s ra:
CX=s kin c
ES:DX=a ch chng trnh x l c
Ci t chng trnh x l s kin thay th: chc nng 18h
Cho php ci t ti 3 chng trnh x l khc nhau
Cc chng trnh ny c th c gi khi xy ra mt s kin lin quan n chut
hay bn phm( cc phm shift, ctrl, alt)
Tham s vo:
CX: c cc bit ghi s kin x l chng trnh. D0-D4 ging 14h; D5 cho
bit phm shift b tc ng; D6 ctrl; D7 alt.
Tham s ra:
AX=0018h nu chng trnh c ci t; FFFFh nu cha
Xc nh a ch ca chng trnh x l s kin thay th: 19h
CX ghi cc s kin m chng trnh x l
Tham s ra:
ES:DX=a ch chng trnh x l
CX: cho bit li(0000h) hay khng (!=0)
2.3.6.2. CHNG TRNH V D
MOV AH, 00h
INT 33h
MOV AH, 01h
INT 33h
MOV CX, 000Ch
MOV DX, 011Eh
MOV AX, 0123Eh

;kch hot chut


;hin con tr chut
;ci t ctr x l chut
;t nhn phm phi
;offset ca ctr cn thc hin
60

Hpv

HVKTMM

MOV ES, AX
;segment ca ctr cn thc hin
INT 33h
NOP
132E:011E MOV AH, 00h
;ctr cn thc hin
MOV AL, 04h
INT 10h
INT 20h

61

Hpv

HVKTMM

3. LP TRNH MN HNH
3.1. CU TRC, HOT NG CA MN HNH V BA( CARD) GHP
NI
3.1.1. MN HNH
Mn hnh l thit b ra chun. S dng sng bn cc tia in t p vo mn hnh
ph phtpho to ln cc im sng. Cc cun li tia in t iu khin tia in t
lch ngang v lch thng lm di chuyn v tr ca tia in t. Li G iu khin
cng tia in t, cho ra m nht khc nhau ca im sng trn mn hnh.
ch vn bn: tia in t c nh du hnh mi tn; ch ho tia in
t c nh du l cc im nh
Mn en trng: ch c mt sng in t cho nh sng(trng) v ti(en)
Mn mu: c 3 sng bn in t ng vi 3 mu Red(R), Blue(B), Green(G); s
trn cc cng khc nhau ca 3 mu ny cho ra mu tng hp
Thng tin hin th trn mn hnh c to ra bi mt v mch gi l v mch ghp
ni mn hnh. Hu ht cc v mch u c kh nng hin th trong ch vn bn
v ch ho

3.1.2. B GHP NI MN HNH


B ghp ni mn hnh iu khin vic hin th nh im trn mn hnh. Vi mch
ny thng nm trn mt ba ph( card) c cha 2 khi c bn:
 B nh mn hnh(b m mn hnh):
Cha thng tin hin th, c th c truy cp bi CPU v B iu khin
mn hnh. a ch ca khi nh ny tu thuc vo tng loi B ghp ni mn
hnh
 B iu khin mn hnh:
c b nh mn hnh v pht tn hiu tng ng trn mn hnh. hin th
mu, b ghp ni pht sinh 3 tn hiu tch bit cho cc mu c bn Red, Green,
Blue; hoc tng hp 3 tn hiu thnh mt tn hiu chung ri pht. Do c th
phn mn hnh thnh hai nhm: mn hnh tng hp v mn hnh RGB.
 Mn hnh tng hp s dng mt tn hiu tng hp chung. Tn hiu tng hp
c cha tn hiu bt mu (bit cao nht c gi tr 1); nu khng c tn hiu
ny mn hnh hin th 2 mu (en-trng)
 Mn hnh RGB: s dng cc tn hiu tch bit
 Cc loi ba ghp ni mn hnh:
MDA: B ghp ni mn hnh n sc phn gii cao; s dng vi x l MC 6845
CGA: B ghp ni mn hnh ho mu; iu khin bi vi x l MC 6845
Hai ba trn c IBM cung cp cho PC u tin loi XT
MCGA: IBM trang b cho my tnh sau PS/2
HGC: Tng thch vi MDA, CGA nhng cht lng cao hn

62

Hpv

HVKTMM

EGA: IBM a ra, c phn gii cao


VGA: c s dng cho th h PS/2
....................................

3.1.3. CC CH CA MN HNH
Trc khi cho mn hnh hot ng phi vit ch cho mn hnh
K hiu 40x25 di y ch c 40 k t trn mt dng v c mn hnh c 25 dng
 Cc ch mn hnh vn bn ng vi cc B ghp ni( ba, card) khc nhau:
Ch c tnh
Cc
B a ch b Kch
C
ghp ni
m
thc
ch
0
40x25 vn CGA, EGA, B8000h
2KB
8x8
bn 16 mu MCGA,
(xm)
VGA
1
40x25 vn CGA, EGA, B8000h
2KB
8x8
bn 16 mu MCGA,
VGA
2
80x25 vb 16 CGA, EGA, B8000h
2KB
8x8
mu (xm)
MCGA,
VGA
3
80x25 vb 16 CGA, EGA, B8000h
4KB
8x8
mu
MCGA,
VGA
7
80x25
vb MDA,
B0000h
4KB
9x14
n sc
EGA, VGA
 Cc ch ho ca mn hnh:
Ch s c tnh
Loi ba
ch
4
320x200p,
CGA,
4mu
EGA,
MCGA,
VGA
5
320x200p,
CGA,
4mu(xm)
EGA,
MCGA,
VGA
6
320x200p,
CGA,
4mu
EGA,
MCGA,
VGA
8
160x200p,
PCjr
4mu

a ch

63

B8000

Kch
thc
8

B8000

B8000

16

B8000

16

Hpv

HVKTMM

9
A
D
E
F
10
11
12
13

320x200p,
4mu
320x200p,
4mu
320x200p,
16mu
640x200p,
16mu
640x350,
n sc
640x350,
16mu
640x480p,
2mu
640x480p,
16mu
320x200p,
256mu

PCjr

B8000

32

PCjr

B8000

32

PCjr

A8000

EGA,
VGA
EGA,
VGA
EGA,
VGA
EGA,
VGA
VGA

A8000

16

A8000

28

A8000

28

A8000

38

A8000

38KB

8x16

A8000

38KB

8x8

VGA,
MCGA

3.2. CC NGT V CC CHC NNG CHO MN HNH


BIOS s dng ngt 10h phc v mn hnh vi 23 hm chc nng. DOS s dng
chc nng 02h ca ngt INT 21h in ra mn hnh:
Ngt
Chc nng phc v
Hnh ng
mn hnh
INT 10h
00h
Xc nh ch mn hnh
ca BIOS
01h
Xc nh kch thc con tr
02h
Xc nh v tr con tr
03h
c v tr con tr
04h
c v tr du chm sng
05h
Xc nh trng thi hot ng
06h
Cun ca s ln cao
07h
Cun ca s xung thp
08h
c k t v thuc tnh
09h
Ghi k t v thuc tnh
0Ah
Ghi k t
0Bh
Xc nh bng 4 mu
0Ch
Ghi im nh
0Dh
c im nh
0Eh
Ghi k t ch teletype
0Fh
c ch mn hnh hin ti

64

Hpv

HVKTMM

10h

INT 21h
ca DOS

Giao din bng mu (thanh ghi


mu)
Giao din my pht k t
La chn tun t
Ghi hui k t
Ghi c m t hp hin th
Ly li tin v trng thi hot ng
Gi v tm li trng thi mn hnh
In k t ra mn hnh, m ASCII
t trong DL

11h
12h
13h
1Ah
1Bh
1Ch
02h

3.3. LP TRNH CHO MN HNH S DNG NGT


3.3.1. NHIM V
 Xc nh: loi card hoc ch (vn bn) vi phn gii, c ch
 Xc nh s hiu ca trang mn hnh
 Xc nh v tr v kch thc con tr (ch vn bn), nh im (ch
ho)
 Xc nh kch thc ca ca s mn hnh
 Xc nh mu nn, vin, mu k t hay im nh
 a ra hoc c vo t mn hnh cc k t hoc im nh

3.3.2. PHNG PHP


 Phng php can thip trc tip phn cng: ghi cc lnh iu khin trc tip
b iu khin mn hnh v b nh m ca mn hnh
 Phng php s dng cc ngt ca MsDOS:
 Ngt BIOS: s dng ngt INT 10h
 Ngt ca DOS: s dng ngt 21h

3.3.3. LP TRNH CHUNG CHO MN HNH


3.3.3.1. XC NH CH V TRNG THI MN HNH
Mc ch phn ny l xc nh ch mi khi bit loi Card mn hnh v la chn
ch thch hp; c ch mn hnh ang s dng
 Chc nng 00h ghi ch mn hnh:
 Tham s vo: AH=00h, AL=s hiu ch
 Tham s ra: khng c
V d: Xc lp ch ch vn bn 25x80 cho mn hnh, 16 mu xm,
dng card CCA
...............
65

Hpv

HVKTMM

MOV AH, 00h


MOV AL, 02h
INT 10h
 Chc nng 0Fh: c ch mn hnh
 Tham s vo: AH=0Fh
 Tham s ra: AL=s k t trn mt dng; BH=trang hot ng
 Chc nng 1Ah: la chn loi card thch hp cho mn hnh:
Tr v mt m 2byte ch t hp ca card mn hnh v ch hin th. Cho
php s dng mt trong hai chc nng con (chc nng con c s dng
phi t trong AL)
 Chc nng con 00h: c m ca 2byte t hp trn vo BX. Nu my c
hai ch nh th gi tr trong BL l tch cc (ngha l BIOS ang s
dng ch ny). Nu ch c mt ch mn hnh nh, BH=0
 Chc nng 01h: tc ng ngc li, cho php t li ch hin hnh.
Do ch s dng chc nng con ny khi bit chnh xc cn lm g.
Cc m t hp cho chc nng 1Ah c m t trong bng sau:
M t hp
Card mn hnh v ch
00h
Khng dng mt card no
01h
MDA
02h
CGA
03h
dnh
04h
EGA vi hin th mu
05h
EGA vi hin th n sc
06h
Khi iu khin ho chuyn dng
07h
VGA n sc
08h
VGA hin th mu
09h, 0Ah
dnh
0Bh
MCGA hin th n sc
0Ch
MCGA hin th mu
0FFh
Cha s dng
 Chc nng 1Bh gi li tin v trng thi mn hnh
Ch s dng cho card EGA, VGA
 Tham s vo: AH=1Bh, ES=a ch bt u on nh ca b m 64K,
DI=offset ca b m
 Tham s ra: AL=1Bh
Thc hin chc nng ny, BIOS s lp y b m 64K thng tin v trng thi
mn hnh hin hnh
 Chc nng 1Ch bo v v tm trng thi mn hnh:
Ch dng cho card VGA ca PS/2. Chc nng ny cho php gi mi thng tin v
trng thi mn hnh, vng d liu trong RAM, gi tr hin ti ca mi thanh ghi
iu khin mn hnh. C 3 chc nng con:

66

Hpv

HVKTMM

 Chc nng 00h: xem loi tin no mun c, bng cch t mt hoc ba
bit thp ca gi tr vo CX
 Chc nng 01h: gi tin v trng thi mn hnh hin ti trong b m m
a ch trong BX. Nn thc hin chc nng ny trc khi c nhng thay
i v ch mn hnh
 Chc nng 00h: cho php khi phc li trng thi c
3.3.3.2. XC NH TRANG MN HNH
Tu tng loi card mn hnh khc nhau m phn gii khc nhau, dung lng b
nh m khc nhau, nn s trang mn hnh khc nhau. Do phi lp trnh bit
trang no ang s dng. S trang cho cc loi card c m t trong bng sau:
S hiu ch S trang ti a cho tng loi
CGA
EGA
VGA
0-1
8
8
8
2-3
4
8
8
7
Khng dng
8
8
 Ngt 05h: xc nh trang mn hnh no c s dng:
 Tham s vo: AH=05h, AL=s trang (tu theo ch m t trong bng
trn)
 Tham s ra: khng c
V d: Xc nh ch vn bn 40x25, 16 mu, trang 1 cho card VGA
..............
MOV AH, 00h ;Xc nh ch mn hnh
MOV AL, 01h ;Chn ch 01
INT 10h
;Gi ngt xc lp ch
MOV AH, 05h ;Xc lp trang mn hnh
MOV AL, 01h ;Chn trang 01h
INT 10h ;Gi ngt xc lp
3.3.3.3. XC NH V TR, KCH THC CON TR
 Chc nng 02h: dch chuyn con tr.
Vic dch chuyn con tr chnh l vic ghi v tr con tr nhng thi im xc
nh.
 Tham s vo: AH=02h, BH=s hiu trang, DH=dng mi (0-24) trong
ch vn bn (ghi dng hexa), DL=ct mi (0-79)trong ch vn
bn dng hexa
 Tham s ra: khng c
 Chc nng 03h: c v tr v kch thc con tr hin thi
 Tham s vo: AH=03h, BH=s hiu trang
 Tham s ra: DH=dng, DL=ct, CH=dng qut u, CL=dng qut cui
Cc gi tr ny c ghi trong cc thanh ghi di dng hexa
 Chc nng 01h: thay i kch thc con tr
67

Hpv

HVKTMM

 Tham s vo: AH=01h, CH=dng qut u, CL=dng qut cui


 Tham s ra: khng c
3.3.3.4. XC NH KCH THC CA CA S MN HNH
Thay i kch thc ca s mn hnh so vi mt v tr mc c 2 kh nng:
 Thay i kch thc pha trn, ngha l cun mn hnh ln trn, khi
cn ly gc di (dng, ct ghi trong DX) lm mc v cn bit s dng
cun ln (s dng sng ca ca s)
 Thanh i kch thc pha di, ngha l cun mn hnh xung di,
khi cn ly gc trn (dng, ct ghi trong CX) lm mc v cn bit s
dng cun xung
 Chc nng 06h cun mn hnh ln:
 Tham s vo: AH=06h, AL=s dng cun, BH=thuc tnh dng trng,
CH, CL=dng ,ct gc tri trn, DH, DL=dng ct gc phi di
 Tham s ra: khng c
 Chc nng 07h cun mn hnh xung di: cc tham s vo ra ging
nh chc nng 06h.
V d: Xc nh ca s mn hnh c to gc trn tri l 0527h, gc di
phi 1527h cho mn hnh c ch 25x80
MOV AH, 00h
;Xc nh ch mn hnh
MOV AL, 02h
INT 10h
MOV AH, 06h
;Hm cun mn hnh ln
MOV AL, 12h
;S dng cun l 18 (1*16+2)
MOV CX, 0527h ;Gc trn tri
MOV DX, 1547h ;Gc di phi
MOV BH, 42h
;Nn , k t xanh l cy
INT 10h

3.3.4. LP TRNH CH VN BN
Trong ch vn bn, cc k t c hin th trn mn hnh di dng ma trn
nh im. Trong ch ny c th iu chnh c mu nn, mu vin mn hnh,
mu k t. Ngoi cc cng vic lp trnh chung cho mn hnh, lp trnh trong ch
vn bn cn c thm: c, ghi k t ra mn hnh, thay i kch thc k t.
3.3.4.1. GHI CH IU KHIN

3.3.4.2. XC NH MU CHO BA CGA


3.3.4.3. XC NH MU CHO EGA/VGA( C TH KHNG CN)
3.3.4.4. C GHI K T VI NGT INT 10H
68

Hpv

HVKTMM

 Chc nng 08h: c k t ti v tr con tr


 Tham s vo: AH=08h, BH=s hiu trang
 Tham s ra:
AH=thuc tnh k t, AL=m ASCII
 Chc nng 09h: hin th k t mu ti v tr con tr
 Tham s vo: AH=09h, BH=s hiu trang, AL=m ASCII, CX=s
ln ghi k t, BL=thuc tnh k t
 Tham s ra: khng c
V d: chng trnh i thuc tnh ca k t ti v tr con tr thnh thuc
tnh o cho mn hnh n sc
................
MOV AH, 08h
;c k t ti v tr con tr, AL cha m ASCII
XOR BH, BH
;BH=0
INT 10h
MOV AH, 09h
;Hin th k t c vi
MOV CX, 0Ah
;S ln lp
MOV BL, 70h
;Thuc tnh thay i
INT 10h
 Chc nng 0Ah: ghi k t vi thuc tnh c sn. Ging 09h nhng byte
thuc tnh khng thay i
 Tham s vo: AH=0Ah, BH=s hiu trang, AL=m ASCII, CX=s ln
lp
 Tham s ra: khng c
 Chc nng 0Eh: ghi k t v dch con tr. Ging 09h nhng sau mi ln
ghi k t, con tr t ng dch i mt v tr ca k t (ging Ms Word)
 Tham s vo: AH=0Eh, AL=m ASCII, BH=s hiu trang, BL=thuc
tnh mu
 Tham s ra: khng
V d: ghi mi ln 2 k t t A-N vi mu nn tng dn t xanh l cy,
mu k t tng dn t
;1.Xc nh ch mn hnh
MOV AH, 00h
MOV AL, 02h
INT 10h
;2.Dch chuyn con tr ti v tr cn in. y l dng 12, ct 40
MOV AH, 02h
MOV BH, 00h
MOV DH, 0Ch
MOV DL, 28h
INT 10h
;3. Ghi k t ti v tr con tr vi thuc tnh mong mun
MOV AH, 09h
MOV AL, 41h
MOV BL, 01h
69

Hpv

HVKTMM

MOV CX, 02h


PRINT_LOOP: INT 10h ;Gi ngt INT 10h hiu lc vic in
INC AL
ADD BL, 11h
CMP AL, N
JLE PRINT_LOOP ;Lp nu m ASCII <= m ASCII ca N
;4.Kt thc
INT 20h
 Chc nng 13h: ghi chui k t ra mn hnh. Ch thc hin trn PC/AT,
EGA v PS/2. C cc chc nng con:
 Chc nng con 00h: ghi chui k t ln mn hnh, thuc tnh trong BL,
khng thay i v tr con tr
 Chc nng con 01h: ging 00h nhng chuyn v tr ti cui chui
 Chc nng con 02h: ging 01h nhng thuc tnh nm trong vng m
c offset trong DX
 Chc nng 11h: ghi k t vi kch thc thay i. Chc nng ny ch dng
c trong BIOS cho VGA, MCGA.. Cc nhm chc nng con nh sau:
 00h-04h: thay i c ch dng ch vn bn trn VGA, MCGA,
EGA
 10h-14h: thay i chiu cao k t
 20h-24h: thay i kch thc k t trong ch ho
 30h: ly li thng tin lin quan n c ch hin hnh v nhng c ch
c th c ca BIOS
3.3.4.5. GHI K T DNG NGT INT 21H CA DOS
 Chc nng 02h: ghi mt k t
 Tham s vo: AH=02h, DL=m ASCII
 Tham s ra: khng
 Chc nng 09h: ghi mt xu k t ra mn hnh
 Tham s vo: AH=09h, DS:DX=a ch ca xu k t. Xu phi kt
thc bi $
 Tham s ra: khng

3.3.5. LP TRNH CH HO
Trong ch ho, mn hnh ch v mt im nh ti mt thi im. Cc k t
cng c hin th theo cc im nh ca tng dng lin tip cho n ht trang
ca b nh mn hnh nhng khng theo tng ma trn im m theo bn bit
(bitmap).
Chm hn nhiu so vi ch vn bn nhng phn gii cao hn nhiu v c
nhiu th vin phc v ho.
C ba loi card mn hnh ph bin:
CGA: Color Graphic Adapter: B phi ghp ho mu

70

Hpv

HVKTMM

EGA: Enhanced Graphic Adapter: B phi ghp ho nng cao


VGA: Video Graphic Adapter: B phi ghp ho kiu ma trn im
 Mt s ch cho lp trnh trong ch ho:
Lp trnh ch ho cng ging lp trnh chung nhng c im khc bit: mi
ln a ra mn hnh mt im; c th a k t ra mn hnh theo nguyn tc v
tng im nh trong bn bit (bitmap)
Vic xc nh ch hin th cng ging lp trnh trong ch vn bn ch khc
ch s ch . Cc s hiu ch c s dng trong bng ch ho.

3.4. LP TRNH TRC TIP CHO MN HNH


3.2.6.1. CU TRC V NGUYN L HOT NG CA CARD MN HNH
Card mn hnh in hnh c cc khi:
Khi iu khin mn hnh: iu khin ton b hot ng ca card mn hnh.
Khi ny thng cha vi x l ring: MC 6845 cho CGA, 8514/A cho
EGA v VGA, TI 34010, Intel 82786 cho TIGA).
Khi nh ROM: cha cc mu k t pht cc k t.
Khi pht cc k t.
Khi iu khin thuc tnh iu khin pht mu.
Khi nh m RAM cho mn hnh: ghi nh v pht mi im nh ca mn
hnh.
Khi iu khin tn hiu: pht cc tn hiu qut ngang, qut dc, tn hiu
video cho ng hnh.
Hai khi quan trng nht cn hiu k lp trnh iu khin trc tip mn hnh l
khi iu khin v khi m RAM.
 Khi iu khin:
 Lin h vi CPU qua 4 ng dy iu khin v 8 ng dy s liu;
iu khin ng hnh qua cc ng dy iu khin tn hiu v nhn cc
tn hiu: xo, nhp, bt sng con tr.
 Khi iu khin dng vi x l sm nht l MC 6845 ca Motorola. C
th truy cp 16K RAM mn hnh v nhn mu k t t ROM. MC 6845
c 16 thanh ghi ni.
 Cc thanh ghi ny c m t trong bng sau:
a ch
Thanh ghi
Ch s Chc nng
3x4h
Thanh ghi a ch
Chn thanh ghi hot ng
Seg Offset
00h-05h Dng ngang
0-3
Xc nh cc tham s mn
3x5h
hnh ngang
06h
Dng dc
4-8
Xc nh cc tham s mn
hnh dc (tng dng)

71

Hpv

HVKTMM

07h-09h
0Ah

Ch khi ghp 9
ni
Bt u con tr
10

0Bh

Kt thc con tr

11

0Ch 0Dh

a ch bt u

12-13

0Eh, 0Fh
10h, 11h

a ch con tr
a ch bt sng

14-15
15-17

Chn xung ng b: t li
qut hng, hng ti a
Xc nh dng qut cho v
tr bt u con tr
Xc nh dng qut cho v
tr kt thc con tr
Xc nh a ch bt u cho
b nh mn hnh
Xc nh v tr con tr
Xc nh v tr bt sng

Tu theo loi card mn hnh s dng m khi iu khin c a ch v cu trc cc


thanh ghi khc nhau. Di y ch xt cho card CGA thng dng:
 Thanh ghi chn ch : a ch 3Dh, cc bit m t nh sau:
Bit
M t
0
Ch ch vn bn: 40 k t (0), 80 k t (1)
1
Ch ho: 0 vi cc ch khc nhau, 1 vi 320pixel
2
Loi mn hnh: n sc (1), mu (0)
3
Trng thi mn hnh: tt (0), bt (1)
4
Ch ho 640 ct (1), gi tr khc (0)
5
Cho php nhp nhy (1), khng cho php (0)
6,7
Khng dng (gi tr 0)
Tng hp li cc bit trn c gi tr ca thanh ghi ch tng ng vi cc ch
nh sau:
02Ch 28h
02Dh 29h 02Eh
02Ah 01Ch
Gi tr thanh ghi
0
1
2
3
4
5
6
Ch
 Thanh ghi chn mu vin v bng mu: a ch 3D9h, c cc bit:
Bit 0-3: cc bit BGRI cho mu vin (theo bng mu)
Bit 4: bit tng cng nn( ch vn bn), tt (0), bt (1)
Bit 5: chn bng mu (ch ho) 0 vi bng 0, 1 vi bng 1
Bit 6,7: khng dng
 Thanh ghi trng thi: a ch 3Dah, vi cc bit
 Thanh ghi ch s: a ch 3D4h, ch s 0-17 ca thanh ghi ni
 Thanh ghi m s liu: a ch 3D5h.
 B nh m RAM cho mn hnh:
Mn hnh cn b nh m ghi d liu ra mn hnh theo nguyn tc nh x
(mt im nh mn hnh ng vi mt nh). Tu thuc vo ch v phn
gii khc nhau m cn dung lng b nh khc nhau. Hu ht cc card mn
hnh c c im chung:
 a ch nh u tin l B000:0000 hoc A000:000
 Mi card c CPU dnh cho 32KB (vi MDA, CGA...) hay 256KB
(vi EGA, VGA...)
72

Hpv

HVKTMM

3.2.6.2. LP TRNH TRC TIP MN HNH


 Nguyn tc chung:

Lp trnh iu khin trc tip mn hnh l ghi cc li iu khin, cc thng s


vo cc thanh ghi ni ca vi x l iu khin mn hnh, vo b nh RAM ca mn
hnh v cc thanh ghi thng dng ca CPU. ng thi cng cn c v x l tin
v trng thi cc thanh ghi ca khi iu khin, ca RAM v cc thanh ghi thng
dng.
 Trc khi ghi li iu khin v d liu cn:
Xc nh a ch ca thanh ghi ca khi iu khin. S liu ca
thanh ghi ch s chnh l ch s thanh ghi cn trao i d liu.
Xc nh d liu cn ghi theo dng cc thanh ghi iu khin cho
ca khi iu khin.
 Trc khi c tin v d liu, trng thi cn xc nh a ch ca thanh
ghi cn c.
Cc v d:
V d 1: Ghi vo thanh ghi ca khi iu khin:
MOV DX, address ca MC6845 ;ghi a ch ca thanh ghi ch s
MOV AL, s hiu thanh ghi ni
OUT DX, AL
;ghi s hiu ra
JMP Short $+2
;tm dng mt khong t ngn
INC DX
;tng s hiu cho thanh ghi tip theo
MOV AL, AH
;AH cha ni dung mi
OUT DX, AL
;ghi ni dung mi
RET
V d 2: c thanh ghi ca khi iu khin:
MOV AL, a ch ca MC6845 ;ghi a ch ca thanh ghi ch s
MOV AL, s hiu ;s hiu thanh ghi ni
OUT DX, AL
;ghi s hiu ra
INC DX
;tng s hiu
JMP Short $+2
;tr thi gian
IN
AL, DX
;c ni dung mi
RET
V d 3: To cu hnh cho thanh ghi iu khin mn hnh
MOV DX, CONTR REG ;chuyn a ch thanh ghi iu khin vo DX
MOV AL, 00101101B
;cho php hin th mn hnh
OUT DX, AL
;ghi li iu khin ra thanh ghi iu khin
RET
;c a ch cha trong DX
V d 4: Thao tc b iu khin video:
MOV CX, 0Ch
;t gi tr lp =12
MOV BH, 0
;bt u t thanh ghi 0
LABEL1:
LODSB
;ly gi tr thanh ghi t bng

73

Hpv

HVKTMM

MOV AH, AL
;gi tr thanh ghi chuyn vo AH
MOV AL, BH
;chuyn s hiu thanh ghi vo AL
CALL Vidu1
;chuyn gi tr n b iu khin
INC BH
;s hiu thanh ghi tip theo
LOOP LABEL1
OR BL, 08h
;mn hnh bt
CALL Vidu3
;t ch mi
RET
V d 5: Xc lp ch vn bn
MOV SI, OFFSET TEXT ;a ch offset ca bng thanh ghi
MOV BL, 0010001b
;ch vn bn
CALL Vidu4
RET
V d 6: Xc lp ch ho
MOV BL, 00010001b
;ch ho
MOV SI, OFFSET GRAPHIC ;a ch offset ca bng thanh ghi
V d 7: Xc lp trang mn hnh
V d 8: Xc lp v tr con tr
V d 9: Xc lp kch thc con tr
V d 10: Xc nh mu
V d 11: Ghi im nh
V d 12: Ghi chui k t

74

Hpv

HVKTMM

4. LP TRNH CHO MY IN
4.1. VI MCH CNG SONG SONG
H IBM-PC c cc vi mch cng song song sau:
8255A cho my loi PC XT (VXL: 8086, 8088)
82345(c thm 2 my pht xung v b kim tra chn l) cho my loi PC AT
(VXL 80286) v PS/2( VXL 80386)
Cc loi PC thng thng c ti a 4 cng song song k hiu (LPT1, LPT2, LPT3,
LPT4)
Cu trc ca cc cng song song u c 3 thanh ghi. Xt 82345:
Thanh ghi iu khin: a ch l a ch c s + 2
Thanh ghi trng thi: a ch l a ch c s + 1
Thanh ghi d liu: a ch l a ch c s; s dng ghi/c d liu cho thit b
ngoi vi
Cc bit ca thanh ghi iu khin:
D0 = 1: Tn hiu Strobe iu khin ghi d liu cho thit b ngoi vi
D1 = 1: iu khin t ng xung dng sau mi dng
...
Cc bit ca thanh ghi trng thi:
D0 D1: Khng dng
D2 = 0: Thit b ngoi vi nhn d liu
D3 = 0: Thit b ngoi vi li
D4 = 1: Thit b ngoi vi c chn
D5 = 1: Thit b ngoi vi li
D6 = 0: Thit b ngoi vi sn sng hot ng
D7 = 0: Thit b ngoi vi bn
Cng song song ni vi thit b ngoi vi qua cm DB-25(25 chn) theo cc tn
hiu:
S 1: Tn hiu STROBE ghi d liu ra
S 2-9: Tn hiu(ng) d liu t D0-D7
.....................................

4.2. LP TRNH TRC TIP CHO MY IN SONG SONG


My in song song thng ni vi cng vo/ra song song LPT1 hoc LPT 2 qua
cm DB-25.
Lp trnh trc tip cho my in thng thc hin cc hnh ng:
Khi pht my in

4.2.1. KHI PHT MY IN


Ghi cc bit thch hp (vo thanh ghi iu khin) cho cng v my in chng sn
sng hot ng v nhn tin vo
75

Hpv

HVKTMM

Cc bit cho cng: cho php ngt (D4=1), a d liu ra (D5=0)


Cc bit cho my in: cho php xung dng sau mi dng (D1=1), khi pht
(D2=0), la chn li vo (D3=1)
 Li iu khin l: 00011010B=8Ah.
a li iu khin vo thanh ghi AX v ghi vo thanh ghi iu khin( a ch l
a ch c s + 2)
m bo tin cy, sau khi khi pht, cn c tr bng cch thc hin
chng trnh tr tng ng.
 Chng trnh khi pht my in nh sau:
// 1. Ghi li iu khin ra thanh ghi iu khin cho cng v my in
// Tnh a ch ca thanh ghi iu khin
MOV DX, 0378
ADD DX, 2
// Lu li iu khin vo thanh ghi AL
MOV AL, 8A
// Ghi li iu khin ra thanh ghi iu khin
OUT DX, AL
// Gi tr
CALL DELAY
// 2. Ghi li iu khin v cc trng thi ngm nh
MOV AL, 00001100B
OUT DX, AL
CALL DELAY
// 3. Kt thc chng trnh
INT 20
// nh ngha on chng trnh tr DELAY
DELAY: MOV AH, 00
INT 1A ; Ngt phc v m ng h
ADD DX, 2 ; T thp ca b m + 2 lm b m cui
MOV BX, DX ; Lu t thp + 2
A: INT 1A ; c gi tr mi ca b m
CMP DX, BX ; So snh vi b m cui
JB A ; Nu nh hn quay li A
RET ; Tr v t chng trnh con

4.2.2. A K T CN IN RA MY IN
Tin trnh a k t cn in ra my in gm ba giai on:
1. Chuyn v ghi s liu ra thanh ghi m s liu ca cng (a ch c s).
Trong trng hp ny l m ASCII ca k t.
2. Kim tra trng thi my in. Nu cha sn sng phi i bng cch quay tr
li c v kim tra trng thi cho n khi sn sng

76

Hpv

HVKTMM

3. a bit D0 = 1 vo thanh ghi iu khin a tn hiu STROBE cho my

in yu cu in

Chng trnh nh sau:


;PROGRAM: PRINT A CHAR
;---------------------------------------S_SEG SEGMENT STACK
DB 100H DUP(?)
S_SEG ENDS
D_SEG SEGMENT
MSG DB "Print Complete$"
MSG_ERROR DB "Error$"
D_SEG ENDS
C_SEG SEGMENT
ASSUME CS:C_SEG, DS:D_SEG, ES:D_SEG, SS:S_SEG
START:
MAIN PROC
;INITILIZE DS, ES
MOV AX, D_SEG
MOV DS, AX
MOV ES, AX
MOV AL, 41h ;Chuyen ma ASCII cua ky tu(A) vao AL
MOV DX, 387 ;Chuyen dia chi cong vao DX
OUT DX, AL
CALL DELAY ;Goi thu tuc Delay
INC DX ;Tang DX de co dia chi thanh ghi trang thai
CHECK:
IN AL, DX
TEST AL, 10000000b ;Kiem tra trang thai san sang nhan tin cua may in
JZ CHECK
INC DX ;Tang DX de co dia chi thanh ghi dieu khien
MOV AL, 00001101b
OUT DX, AL ;Dua tin hieu STROBE cho may in
MOV AL, 00001100b
OUT DX, AL ;Dua lenh xoa tin hieu STROBE
CALL DELAY
MOV AH, 4CH
77

Hpv

HVKTMM

INT 21H
MAIN ENDP
;SUBPROGRAM: DELAY
DELAY PROC
PUSH AX
PUSH DX
PUSH BX
MOV AH, 00h ;Chuc nang doc dem dong ho
INT 1Ah
;Goi ngat phuc vu dem dong ho
ADD DX, 2 ;Tang can thap cua bo dem them 2
MOV BX, DX ;Luu trong BX
NEW_COUNTER:
INT 1Ah
;Goi bo dem moi
CMP DX, BX ;So sanh voi bo dem cuoi
JB NEW_COUNTER ;Chua bang thi quay lai, doc so dem
POP BX
POP DX
POP AX
RET
DELAY ENDP
C_SEG ENDS
END START

4.3. LP TRNH S DNG NGT CHO MY IN


4.3.1. A NI DUNG MN HNH RA MY IN: S DNG NGT INT
5H
INT 5h l ngt ring ca VXL, s dng :
a ni dung ca mn hnh ra my in theo s kin nhn phm Print Screen.
Hot ng nh sau: Khi nhn c tn hiu nhn phm Print Screen, BIOS s
khi to vecto ngt tr ti cc chng trnh phc v in ni dung mn hnh
ca BIOS trong ROM BIOS
Gi mt s kt qu trung gian ra my in trong qu trnh thc hin cc chng
trnh khi ngt c gi
Ngt INT 5h khng c tham s vo v tham s ra

4.3.2. S DNG NGT INT 17H


INT 17h l ngt ca BIOS, c 3 chc nng:
 00h: In ra mt k t
 Tham s vo:

78

Hpv

HVKTMM

AH=00h
AL=M ASCII ca k t
DX=S hiu my in (0-2)
 Tham s ra:
AH=Trng thi my in. Cc bit m t nh trong thanh ghi trng thi
 01h: Khi ng my in. Cn c gi trc khi in
 Tham s vo:
AH = 01h
DX = S hiu my in
 Tham s ra:
AH = trng thi my
 02h: Kim tra trng thi
 Tham s vo:
AH = 02h
DX = S hiu my in
 Tham s ra:
AH = Trng thi my in vi cc bit c m t nh sau:
D0=1:li time out, D1 -D2: khng dng, D3=1:li truyn, D4=1:sn sng
nhn, D5=1:ht giy, D6=1:t chi, D7=1:bn.

4.3.3. CHNG TRNH V D


In ra 10 k t bt u t A
;PROGRAM: PRINT 10 CHARS START FROM 'A' CHAR USE FUNCTIONS OF INT
;17h INTERRUP
;---------------------------------------S_SEG SEGMENT STACK
DB 100H DUP(?)
S_SEG ENDS
D_SEG SEGMENT
MSG DB "Print Complete$"
MSG_ERROR DB "Error$"
D_SEG ENDS
C_SEG SEGMENT
ASSUME CS:C_SEG, DS:D_SEG, ES:D_SEG, SS:S_SEG
START:
MAIN PROC
;INITILIZE DS, ES
MOV AX, D_SEG
MOV DS, AX
MOV ES, AX

79

Hpv

HVKTMM

;1. Khoi phat may in


MOV DX, 00h
MOV AH, 01h
INT 17h
;2. Thuc hien vong lap goi thu tuc => in 10 ky tu
MOV CX, 10
MOV AL, 41h ;Chuyen ma ASCII cua ky tu(A) vao AL
PRINT: CALL PRINT_PROC
INC AL
LOOP
MOV AH, 4CH
INT 21H
MAIN ENDP
;SUBPROGRAM: PRINT_PROC
PRINT_PROC PROC
PUSH AX
MOV AH, 00h ;Goi chuc nang in 1 ky tu
INT 17h
;Goi ngat 17h de thuc hien
POP AX
RET
PRINT_PROC ENDP
C_SEG ENDS
END START

80

Hpv

HVKTMM

BI TP

81

Hpv

HVKTMM

CHNG IV. LP TRNH THAO TC A V FILE


 Mc ch: h thng li cu trc, nguyn l hot ng ca a cng, a
mm; cch thc h iu hnh qun l d liu trn a phc v lp trnh
x l file v thao tc a.
 Ni dung chnh:
Lp trnh a cng
Lp trnh a mm
Lp trnh cho USB

82

Hpv

HVKTMM

1. T CHC LU TR FILE TRN A


1.1. CU TRC A
Thng tin c t chc trn cc mt a theo cc track( rnh); track li c chia
thnh cc sector(cung). Dos nh du cc mt a bt u t 0, track bt u t 0,
trong mt track, cc sector bt u t 1. S sector trn mt track, s track trn mt
mt a tu thuc vo tng loi a. Tr( cylinde) l tp hp cc rnh c cng s
hiu.

1.2. DUNG LNG A: (BYTE)


DiskSize = s mt * s rnh trn 1 mt * s cung trn 1 rnh * s byte trn 1 cung

1.3. TRUY NHP A:


Phng php truy nhp a mm v a cng ging nhau. a nm di s iu
khin ca mch iu khin a; mch iu khin a c nhim v chuyn dch u
c ghi (u c ghi ch dch chuyn tin/li, a lun quay quanh trc). D liu
c truy nhp theo tng sector.
truy nhp d liu, u t phi dch chuyn n track cn truy nhp. Khi t vo
ng track u t s i sector cn c i ti. V mi rnh trn mt tr c th truy
nhp m khng cn dch chuyn u t nn khi ghi d liu, Dos thng ghi y
mt tr ri mi chuyn sang tr k tip

1.4. S PHN B CC FILE:


theo di d liu ghi trn a, Dos s dng cu trc cy th mc. Cc track v
cc sector u tin ca a cha thng tin v cu trc file ca a. Cc a thng
phn b chung nh sau:
Boot Sector
Bng FAT
Folder(Root) Data
 Th mc File:
Dos to mt im nhp 32byte cho mi file trong th mc, cu trc mi im nhp
nh sau:
Byte
Chc nng
0-7
Tn file, byte 0 dng lm byte trng thi
8-10
Phn m rng
11
Thuc tnh
12-21
m rng
22-23
Gi to (h:m:s)
25-25
Ngy to (y:m:d)
26-27
S hiu cluster u tin (va l a ch cluster u tin
83

Hpv

28-31
Byte thuc tnh:
0
1
File ch File n
c

HVKTMM

ca file trong vng d liu va l s th t ca im


nhp ca file trong bng FAT). im nhp bng FAT
bt u t 0
Kch thc file theo byte
2
3
File h Nhn
thng
a

4
5
Th
Bit lu
mc con

6
Khng
s dng

7
Khng
s dng

1.4.1. CLUSTER (LIN CUNG):


Dos lu tr cc file theo cc cluster. Mi cluster gm mt s secter, s secter ca
mt cluster lun l lu tha ca 2. Cc cluster c nh s bt u t 0; cluster 0
l cc sector cui cng ca th mc.
Khi kch thc file nh hn 1 cluster, Dos vn ginh cho file c cluster . Do
c trng hp trn a vn cn ch cha s dng nhng Dos vn thng bo a
y.

1.4.2. BNG FAT:


Mc ch ca bng FAT (File Allocation Table) l to ra bn cc file trn a.
Bng FAT bao gm cc im nhp cho file, kch thc ca im nhp tu thuc
vo tng loi a. Byte u tin ca bng FAT dng ch ra loi a.
Ni dung mi im nhp trong bng FAT: nu l FFF th ch y s th t ca
im nhp ny l a ch cluster cui cng ca file; nu l 000 th im nhp cha
s dng; nu l s 000 < a < FFF th a va ch a ch cluster hin ti va ch trng
thi ca file s xem tip trong im nhp th a ca bng FAT.
Ngha l file s khng lu tr thnh cc cluster lin tip m cc cluster ca file s
c tham chiu trong bng FAT

1.5. TIN TRNH C GHI FILE CA DOS


1.5.1. DOS C MT FILE:
Tin trnh c file nh sau:
1. Nhn s hiu cluster u tin t th mc (chnh l s th t im nhp
trong bng FAT ). V d l 2
2. Dos c c ni dung cluster vo mt vng nh gi l vng chuyn d
liu (DTA: Data Transfer Area), chng trnh s nhn c d liu t DTA
khi cn.
3. Dos c ni dung ca im c s th t chnh l s hiu cluster u tin
tren (gi s l 2 ) trong bng FAT bit y l cluster cui cng ca file
hay bit s hiu cluster tip theo v im nhp file tip c s hiu bng ni
dung ca im nhp ny (trong v d ny l 004)
84

Hpv

HVKTMM

4. im nhp 4 trong bng FAT cha gi tr FFF nn cluster 4 l cluster cui


cng ca file
Hoc v d khc: file cha trong cc cluster: 3 5 6 7 8

1.5.2. DOS GHI MT FILE:


Tin trnh nh sau:
1. Xc nh mt im nhp cha s dng trong th mc v lu vo tn file
cng vi thuc tnh file, ngy gi to
2. Tm trong bng FAT im nhp u tin nh du mt cluster cha s
dng (000 ngha l cluster cha s dng - im nhp cha ng vi cluster
no) v cha s hiu cluster u tin ca file vo im nhp file trong th
mc chnh bng s hiu im nhp ny trong bng FAT. V d 9
3. Nu d liu cha va trong mt cluster, Dos cha d liu trong cluster
ny, t ni dung ca im nhp file trong bng FAT c s hiu bng vi
s hiu cluster l FFF. Nu cn d liu, Dos s tm cluster tip theo cha s
dng t s hiu cluster vo im nhp ny ca FAT

2. LP TRNH X L FILE
2.1. TH FILE:
Mt file khi c m hay c to trong chng trnh DOS gn cho n mt s
duy nht gi l th file. Con s ny dng xc nh cc file do chng trnh
phi lu n. C 5 loi th file nh ngha trc:
0
Bn phm
1
Mn hnh
2
Thng bo li u ra mn hnh
3
Thit b ph
4
My in
Ngoi cc file ny Dos cn cho php ngi s dng nh ngha 3 file c m

2.2. C/GHI FILE


2.2.1. ng m file:
2.2.2. c file:
2.2.3. Ghi mt file
2.2.4. Con tr file

2.3. THAY I THUC TNH FILE:


S dng hm 43h ca ngt INT 21h thay i thuc tnh file:
 Tham s vo:
AH=43h
85

Hpv

HVKTMM

DS:DX=a ch chui ASCII (chui tn file, kt thc bng byte 0)


AL=0 ly thuc tnh
AL=1 thay i thuc tnh
CX=thuc tnh file mi (nu AL = 1)
 Tham s ra:
CX = thuc tnh hin thi nu thnh cng
CF c t th c li, m li t trong AX
V d: thay i thuc tnh file thnh n:
MOV AH, 43h
MOV AL, 1
LEA DX, FileName
MOV CX, 1
INT 21h
JC
MSG_ERROR ;nhy n thng bo li nu c CF c t

3. C V GHI CC SECTOR TRC TIP CA A:


S dng ngt 25h v 26h ca DOS. Trc khi gi cc ngt ny phi khi to cc
thanh ghi:
AL = s hiu a (0= A; 1= B, 2= C... ging Debug)
DS:BX = segment:offset ca vng m d liu b nh
CX = s sector mun ghi
DX = s hiu sector lgic u tin
Khng c s hm chc nng no phi t trong AH, gi trc tip ngt
Nu CF=1 th c li, AX cha m li
Cc sector lgic c s hiu bt u t 0 v tng dn ng vi sector vt l. V d:
Mt a
Rnh
Sector
Sector lgic Thng tin
0
0
0
0
Boot Record
0
0
2-5
1-4
FAT
0
0
6-9
5-8
Th mc file
1
0
1-3
9-11
Th mc file
1
0
4-9
12-17
D liu
0
1
1-9
18-26
D liu
c mt sector:
V d: c sector lgic 5 - sector u tin ca th mc ca a A
.......
D_SEG
SEGMENT
BUFFER
DB 512 DUP(0)
ERROR
DB ERROR$
D_SEG
ENDS

86

Hpv

HVKTMM

C_SEG
SEGMENT
ASSUME CS:C_SEG, SS:S_SEG, DS:D_SEG, ES:D_SEG
START:
MAIN
PROC
MOV
AX, D_SEG
MOV
DS, AX
MOV
ES, AX
MOV
MOV
MOV
INT
JNC

AL, 2 ; a C
DX, 5 ;s hiu sector u tin
CX, 1 ;chuyn s sector cn c vo CX
25h ;c
EXIT ;nhy n exit nu khng c li
;nu c li, hin th thng bo li
MOV
AH, 09h ;chc nng 09h ca ngt INT 21h hin th chui
MOV
DX, Offset ERROR ;<=> LEA DX, ERROR
INT
21h
EXIT:
MAIN
C_SEG

MOV AH, 4Ch


INT 21h
ENDP
ENDS

END

START

87

Hpv

HVKTMM

PH LC:
DEBUG CA MSDOS
ASSEMBLY C BN
TP LNH 82086
Tm tt cc lnh 8086 / 8088
Cc ch vit tt trong cc nhm lnh:
reg : thanh ghi tng qut.
reg16 : thanh ghi 16 bit.
segreg : thanh ghi <on.
accum : thanh ghi b tch ly AX hoc AL.
mem : b nh (<a ch hiu dng).
mem16 : b nh 2 byte lin tip (<a ch hiu dng).
mem32 : b nh 4 byte lin tip (<a ch hiu dng).
immed : s tc thi.
immed8 : s tc thi 8 bit.
shortlabel : nhn ngn (-128 byte +127 byte).
nearlabel : nhn trong <on (2 byte offset).
farlabel : nhn ngoi <on (4 byte : 2 byte segment v 2 byte offset).
Nhm lnh chuyn d liu :
MOV reg,reg MOV reg,immed
MOV mem,reg MOV mem,immed
MOV reg,mem MOV mem16,segreg
MOV reg16,segreg MOV segreg,mem16
M OV segreg,reg16
PUSH reg16 PUSH segreg
PUSH mem16
POP reg16 POP segreg
POP mem16
XCHG reg,reg XCHG mem,reg
X CHG accum,reg16 XCHG reg,mem
IN accum,immed8
IN accum,DX
OUT immed8,accum
OUT DX,accum
XLAT
LEA reg16,mem
LDS reg16,mem32
LES reg16,mem32
LAHF
SAHF
PUSHF
POPF
88

Hpv

HVKTMM

Nhm lnh s hc :
ADD reg,reg ADD reg,immed
ADD mem,reg ADD mem,immed
ADD reg,mem ADD accum,immed
ADC reg,reg ADC reg,immed
ADC mem,reg ADC mem,immed
ADC reg,mem ADC accum,immed
INC reg INC mem
AAA
DAA
SUB reg,reg SUB reg,immed
SUB mem,reg SUB mem,immed
SUB reg,mem SUB accum,immed
SBB reg,reg SBB reg,immed
SBB mem,reg SBB mem,immed
SBB reg,mem SBB accum,immed
DEC reg DEC mem
NEG reg NEG mem
CMP reg,reg CMP reg,immed
CMP mem,reg CMP mem,immed
CMP reg,mem CMP accum,immed
AAS
DAS
MUL reg MUL mem
IMUL reg IMUL mem
AAM
DIV reg DIV mem
IDIV reg IDIV mem
AAD
CBW
CWD
NOT reg NOT mem
Nhm lnh logic:
SHL reg,1 SHL mem,1
SHL reg,CL SHL mem,CL
SHR reg,1 SHR mem,1
SHR reg,CL SHR mem,CL
SAR reg,1 SAR mem,1
SAR reg,CL SAR mem,CL
ROL reg,1 ROL mem,1
ROL reg,CL ROL mem,CL
ROR reg,1 ROR mem,1
ROR reg,CL ROR mem,CL
RCL reg,1 RCL mem,1
RCL reg,CL RCL mem,CL

89

Hpv

HVKTMM

RCR reg,1 RCR mem,1


RCR reg,CL RCR mem,CL
AND reg,reg AND reg,immed
AND mem,reg AND mem,immed
AND reg,mem AND accum,immed
TEST reg,reg TEST reg,immed
TEST mem,reg TEST mem,immed
TEST reg,mem TEST accum,immed
OR reg,reg OR reg,immed
OR mem,reg OR mem,immed
OR reg,mem OR accum,immed
XOR reg,reg XOR reg,immed
XOR mem,reg XOR mem,immed
XOR reg,mem XOR accum,immed
X l chui :
REP lnh x l chui
REPE/REPZ lnh x l chui
REPNE/REPNZ lnh x l chui
MOVSB / MOVSW
CMPSB / CMPSW
SCASB / SCASW
LODSB / LODSW
STOSB / STOSW
Chuyn iu khin :
CALL nearlabel CALL mem16
CALL farlabel CALL mem32
CALL reg16
JMP shortlabel JMP mem16
JMP nearlabel JMP mem32
JMP farlabel JMP reg16
RET RETF
RET immed8 RETF immed8
Jcond shortlabel
Jcond Gii thch iu kin
JE/JZ Nhy nu bng/khng ZF = 1
JL/JNGE Nhy nu nh hn/khng ln hn hoc bng (SF xor OF) = 1
JLE/JNG Nhy nu nh hn hoc bng /khng ln hn ((SF xor OF) or ZF) = 1
JB/JNAE/JC Nhy nu di /khng trn hoc bng/nh CF = 1
JBE/JNA Nhy nu di hoc bng /khng trn (CF or ZF) = 1
JP/JPE Nhy nu kim tra / kim tra chn PF = 1
JO Nhy nu trn OF = 1
JS Nhy nu du SF = 1
JNE/JNZ Nhy nu khng bng/khc khng ZF = 0
JNL/JGE Nhy nu khng nh hn/ln hn hoc bng (SF xor OF) = 0
JNLE/JG Nhy nu khng nh hn hoc bng /ln hn ((SF xor OF) or ZF) = 0

90

Hpv

HVKTMM

JNB/JAE/JNC Nhy nu khng di /trn hoc bng/khng nh CF = 0


JNBE/JA Nhy nu khng di hoc bng /trn (CF or ZF) = 0
JNP/JPO Nhy nu khng kim tra / kim tra l PF = 0
JNO Nhy nu khng trn OF = 0
JNS Nhy nu khng du SF = 0
LOOP shortlabel
LOOPE/LOOPZ shortlabel
LOOPNE/LOOPNZ shortlabel
JCXZ shortlabel
INT immed8
INT 3
INTO
IRET
iu khin b x l :
CLC
STC
CMC
NOP
CLD
STD
CLI
STI
HLT
WAIT
LOCK lnh
ESC immed,reg
ESC immed,mem

91

Hpv

HVKTMM

BI TP LN
1. Tm hiu v Virus lin quan n BIOS
2. Tm hiu, vit chng trnh virus lin quan n hot ng ca bn phm,
chut; chng trnh dit, ngn nga virus lin quan n bn phm, chut
3. Tm hiu, vit chng trnh virus lin quan n hot ng ca mn hnh;
vit chng trnh dit, ngn nga virus lin quan n mn hnh
4. Tm hiu, vit chng trnh virus lin quan n hot ng ca my in; vit
chng trnh dit, ngn nga virus lin quan n my in
5. Tm hiu, vit chng trnh virus lin quan n hot ng a mm, a
cng; chng trnh dit, ngn nga virus lin quan n a mm, a
cng
6. Nguyn l boot( khi ng) h iu hnh; khi ng my t USB
7. Ci t h iu hnh (window xp) trn USB
8. Tm hiu v nguyn l to cc file, th mc n. Vit chng trnh cho lm
n hoc hin ton b hoc mt s file, th mc con trong th mc xc nh
Yu cu: bo co 5-10 trang; nu c chng trnh v d th c ti liu m t gii
thut, v lu gii thut ca ng dng

92

You might also like