You are on page 1of 92

Hpv

HVKTMM

M cl c
Chng I. T ng quan ....................................................................................................... 5 1. Ki n trc h th ng ........................................................................................................ 6 1.1. Ki n trc ph n c ng................................................................................................. 6 1.1.1. M hnh v nguyn l my Von Neumaan ....................................................... 6 1.1.2. C u trc CPU intel 80x86 ................................................................................. 6 1.1.2.2. M t .......................................................................................................... 7 1.1.2.3. B thanh ghi............................................................................................... 8 1.1.3. Phng th c qu n l b nh ............................................................................. 9 1.1.3.1. S phn o n b nh ................................................................................ 9 1.1.3.2. a ch v t l v a ch logic ................................................................. 10 a ch lgic v cc thanh ghi................................................................. 11 1.1.3.3. 1.1.4. CPU giao ti p v i thi t b ngo i vi ................................................................. 12 1.2. Ho t ng c a h i u hnh MS-DOS................................................................... 12 1.2.1. Cc thnh ph n c a MS-DOS ......................................................................... 13 1.2.2. B tr H H trong b nh trung tm................................................................ 14 1.2.3. Chng trnh mc n i (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. Kh i i u hnh a DOS.COM....................................................................... 17 1.2.4.T p l nh COMMAND.COM ........................................................................... 19 2. T t ng chung c a l p trnh v i thi t b ngo i vi .................................................. 24 2.1. Cc thng s ph n c ng c a thi t b ngoi ........................................................... 24 2.1.1. C ng vo/ra..................................................................................................... 24 2.1.2. Cc vng nh tham s ..................................................................................... 24 2.2. T t ng l p trnh.................................................................................................. 26 2.2.1. Gi i thi u ........................................................................................................ 26 2.2.2. Qui t c chung l p trnh cho thi t b ngo i vi................................................... 27 2.2.2.1. Trao i tin gi a CPU v i thi t b ngo i vi ............................................. 27 2.2.2.2. Kh i ghp n i i u khi n trao i tin ...................................................... 28 2.2.2.3. L p trnh trao i tin ................................................................................ 28 2.2.3. D ng t ng qut c a chng trnh ph c v thi t b ngoi s d ng ng t .......... 30 Chng II. H th ng ng t .............................................................................................. 32 1. Ng t v b i u khi n PIC 8259 ................................................................................ 33

1.1. M t s khi ni m.................................................................................................... 33 1.2. Phn lo i ng t........................................................................................................ 33 1.3. PIC 8259 v h th ng ng t c ng ........................................................................... 33 1

Hpv

HVKTMM 1.3.1. Ng t c ng........................................................................................................ 34 1.3.2. Thi t b i u khi n PIC 8259 v c ch ho t ng c a h th ng ng t c ng... 34

2. Cc ng t c a MS-DOS dnh cho thi t b ngo i vi ................................................... 37 2.1. Cc ng t c a BIOS v ROMBIOS ......................................................................... 37 2.2. Cc ng t c a DOS (g i cc ch c nng) ................................................................ 38 2.2.1. Cc ch c nng c a ng t INT 21h c a DOS .................................................... 38 Chng III. L p trnh cho cc thi t b vo ra .............................................................. 41 1. L p trnh bn phm..................................................................................................... 42 1.1. C u trc v nguyn l ho t ng c a bn phm .................................................... 42 1.2. Cc ng t dng cho bn phm ................................................................................. 43 1.3. L p trnh ph c v bn phm s d ng ng t ............................................................. 45 1.3.1. Quy t c chung ................................................................................................. 45 1.3.2. M t s v d .................................................................................................... 46 1.4. L p trnh tr c ti p cho bn phm ........................................................................... 46 1.4.1. c i m c a kh i i u khi n bn phm......................................................... 46 1.4.2. Qui t c chung c a l p trnh tr c ti p bn phm............................................... 47 1.4.3. Cc v d ......................................................................................................... 48 2. L p trnh cho chu t .................................................................................................... 50 2.1. C u trc v ho t ng c a chu t........................................................................... 50 2.1.1. C u t o v ho t ng c a chu t ...................................................................... 50 2.1.2. M ch ghp n i chu t....................................................................................... 50 2.1.3. i u khi n chu t ............................................................................................. 50 2.1.4. Mn hnh o cho chu t.................................................................................... 50 2.2. Ng t dnh cho chu t .............................................................................................. 51 2.3. L p trnh cho chu t................................................................................................ 52 2.3.1. Kch ho t v xc nh lo i chu t..................................................................... 52 2.3.1.1. Cc ch c hm nng .................................................................................. 52 2.3.1.2. Chng trnh v d ................................................................................... 52 2.3.2. Tr ng thi chu t ............................................................................................. 53 2.3.2.1. Cc hm ch c nng v tr ng thi chu t ................................................... 53 2.3.2.2. Chng trnh v d ................................................................................... 54 2.3.3. i u khi n con tr chu t................................................................................. 54 2.3.3.1. Cc hm ch c nng v con tr chu t ....................................................... 54 2.3.4. Phm nh n ....................................................................................................... 58 2.3.4.1 Cc hm ch c nng ................................................................................... 58 2.3.4.2. Chng trnh v d ................................................................................... 59 2.3.5. T c di chuy n c a con tr chu t ................................................................ 59 2.3.5.1. Cc hm ch c nng .................................................................................. 59 2.3.5.2. Chng trnh v d ................................................................................... 59

Hpv

HVKTMM 2.3.6. Ci t chng trnh x l khi dng chu t ..................................................... 59 2.3.6.1. Ci t chng trnh x l s ki n........................................................... 59 2.3.6.2. Chng trnh v d ................................................................................... 60

3. L p trnh mn hnh..................................................................................................... 62 3.1. C u trc, ho t ng c a mn hnh v ba( card) ghp n i.................................... 62 3.1.1. Mn hnh ......................................................................................................... 62 3.1.2. B ghp n i mn hnh ..................................................................................... 62 3.1.3. Cc ch c a mn hnh ................................................................................ 63 3.2. Cc ng t v cc ch c nng cho mn hnh ............................................................. 64 3.3. L p trnh cho mn hnh s d ng ng t.................................................................... 65 3.3.1. Nhi m v ......................................................................................................... 65 3.3.2. Phng php ................................................................................................... 65 3.3.3. L p trnh chung cho mn hnh ........................................................................ 65 3.3.3.1. Xc nh ch v tr ng thi mn hnh .................................................. 65 3.3.3.2. Xc nh trang mn hnh.......................................................................... 67 3.3.3.3. Xc nh v tr, kch th c con tr ........................................................... 67 3.3.3.4. Xc nh kch th c c a c a s mn hnh ............................................... 68 vn b n.............................................................................. 68 3.3.4. L p trnh ch 3.3.4.1. Ghi ch i u khi n .............................................................................. 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 c n) .................................. 68 3.3.4.4. c ghi k t v i ng t INT 10h............................................................... 68 3.3.4.5. Ghi k t dng ng t INT 21h c a DOS ................................................... 70 3.3.5. L p trnh ch ho ............................................................................... 70 3.4. L p trnh tr c ti p cho mn hnh........................................................................ 71 3.2.6.1. C u trc v nguyn l ho t ng c a card mn hnh............................... 71 3.2.6.2. L p trnh tr c ti p mn hnh .................................................................... 73 4. L p trnh cho my in .................................................................................................. 75 4.1. Vi m ch c ng song song ........................................................................................ 75 4.2. L p trnh tr c ti p cho my in song song .............................................................. 75 4.2.1. Kh i pht my in............................................................................................. 75 4.2.2. a k t c n in ra my in.............................................................................. 76 4.3. L p trnh s d ng ng t cho my in ........................................................................ 78 4.3.1. a n i dung mn hnh ra my in: s d ng ng t INT 5h ............................... 78 4.3.2. S d ng ng t INT 17h..................................................................................... 78 4.3.3. Chng trnh v d .......................................................................................... 79 Bi t p .............................................................................................................................. 81 Chng IV. L p trnh thao tc a v file .................................................................... 82 1. T ch c lu tr file trn a....................................................................................... 83

Hpv

HVKTMM

1.1. C u trc a ........................................................................................................... 83 1.2. Dung l ng a: (byte) .......................................................................................... 83 1.3. Truy nh p a:........................................................................................................ 83 1.4. S phn b cc file: ............................................................................................... 83 1.4.1. Cluster (lin cung): ......................................................................................... 84 1.4.2. B ng FAT: ...................................................................................................... 84 1.5. Ti n trnh c ghi file c a DOS ............................................................................. 84 1.5.1. Dos c m t file:............................................................................................. 84 1.5.2. Dos ghi m t file: ............................................................................................. 85 2. L p trnh X l file ..................................................................................................... 85 2.1. Th file: .................................................................................................................. 85 2.2. c/ghi file............................................................................................................. 85 i thu c tnh file:......................................................................................... 85 2.3. Thay 3.

c v ghi cc sector tr c ti p c a a: .................................................................... 86

Ph l c: ............................................................................................................................ 88 Debug c a MsDOS ....................................................................................................... 88 Assembly c b n............................................................................................................ 88 T p l nh 82086 ............................................................................................................. 88 Bi t p l n........................................................................................................................ 92

Hpv

HVKTMM

CHNG I. T NG QUAN
M c ch: hi u c m t cc t ng quan v h th ng, ho t ng c a h th ng, t t ng chung c a l p trnh v i thi t b ngo i vi N i dung: H th ng l i m t cch khi qut c u trc my tnh hi u c t ng quan v : Ki n trc chung c a h th ng ph n c ng: cc kh i trong h th ng, nguyn l ho t ng c a my tnh, cch th c CPU giao ti p v i cc thnh ph n khc H th ng ph n m m: c u trc h i u hnh, ti n trnh ho t ng c a my t khi b t u kh i ng, cc m c ph n m m Cc t ng t ng t ng quan c a l p trnh h th ng cho thi t b ngo i vi

Hpv

HVKTMM

1. KI N TRC H TH NG
1.1. KI N TRC PH N C NG 1.1.1. M HNH V NGUYN L MY VON NEUMAAN
M hnh:

B nh Trao tin i thng

n v x l

i u khi n H th ng vo/ra

D li u

Chng trnh

Nguyn l: Ki n trc ph n c ng g m 3 kh i c b n : n v x l, b nh v h th ng vo/ra; cc kh i lin l c v i nhau qua h th ng bus L my tnh nh chng trnh: Chng trnh i u khi n, x l d li u cng c xem l d li u v c lu tr trong b nh B nh chia lm nhi u , m i c 1 a ch (s th t ) c th ch n l a nh trong qu trnh c ghi d li u L my tnh tu n t : cc l nh c th c hi n tu n t , t i m i th i i m ch c m t l nh c th c hi n

1.1.2. C U 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 th c hi n trn s nh phn 8 v 16 bit. Bus a ch c 20 ng nn c th qu n l ln n 1Mb(=220bit) b nh (ph m vi a ch t 00000h n FFFFFh). Bus d li u c a 80x86 c 16 bit. Cho php s d ng h th ng ng t v c ch DMA (Direct Memory Access). Qu trnh chuy n d li u tr c ti p gi a thi t b ngo i vi v b nh chnh khng thng qua CPU g i l qu trnh(c ch ) DMA. S kh i vi x l 80x86 g m hai ph n chnh : kh i giao ti p Bus (BIU:Bus interface unit) v kh i th c thi (EU:Execution unit). Kh i BIU ch u trch nhi m l y l nh v giao ti p ra bn ngoi i u khi n b nh v I/O. Kh i EU c nhi m v thi hnh l nh, nh th, ki m tra cc tn hi u tr ng thi, cc tn hi u yu c u ng t, c ch DMA, tn hi u RESET, tn hi u READY.

Hpv

HVKTMM

Cc l nh trong b nh c kh i BIU l y vo lin t c v c t trong hng i l nh (c chi u di 6 byte i v i 8086 ho c 4 byte i v i 8088). Sau kh i EU l y l nh t hng i l nh ra gi i m v thi hnh. Ho t ng c a hai kh i BIU v EU di n ra c l p v i nhau nn qu trnh l y l nh v thi hnh l nh c vi x l th c hi n ng th i theo c c u ng ng (pipeline). i u ny tuy khng lm tng t c x l c a CPU (gi i h n b i t n s xung ng b ) nhng lm gi m b t th i gian thi hnh c a c chng trnh. Ngha l n ch lm gi m th i gian th c thi chng trnh ch khng lm tng t c c a CPU. T c CPU do ph n c ng quy nh v gi i h n b i xung nh p ng b . 1.1.2.3. B THANH GHI B thanh ghi a nng: G m 8 thanh ghi 16 bit.
Cc thanh ghi AX, BX, CX, DX c th dng phn n a nh cc thanh ghi 8 bit AH, AL, BH, BL, CH, CL, DH, DL.

Thanh ghi AH l n a cao c a thanh ghi AX. Thanh ghi AL l n a th p c a thanh ghi AX. Ch ng h n n u 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 li u (data). SI l thanh ghi ch s ngu n (source index). DI l thanh ghi ch s ch (destination index). BP l thanh ghi con tr n n (base pointer). SP l thanh ghi con tr ngn x p (stack pointer). B thanh ghi o n v con tr l nh: G m 4 thanh ghi o n 16 bit dng qu n l b nh theo phng php phn o n. CS l thanh ghi o n chng trnh (code segment). DS l thanh ghi o n d li u (data segment). SS l thanh ghi o n ngn x p (stack segment). ES l thanh ghi o n m r ng (extra segment). IP l thanh ghi con tr l nh (instruction pointer). Thanh ghi c (thanh ghi tr ng thi): SF l c d u (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 g i l c nh n a (half-carry flag). AF = 0 khi khng c s trn v dung l ng 4 bit. AF = 1 khi c s trn v dung l ng 4 bit. V d : php ton 00001001 + 00000111 = 00010000 s l p c AF ln 1. C AF th ng c dng trong cc php ton BCD (l cc s dng h nh phn 4 bit bi u di n s th p phn t 0 9). PF l c ki m tra ch n l (parity flag). PF = 1 n u s bit 1 c a k t qu l s ch n. PF = 0 n u s bit 1 c a k t qu l s l . V d : sau khi th c hi n (00000101 AND 00000101) th PF = 1. DF l c nh h ng (direction flag). DF = 0 : nh h ng gi m a ch cho cc l nh x l chu i. DF = 1 : nh h ng tng a ch cho cc l nh x l chu i. IF l c ng t (interrupt enable flag). IF = 0 : c m ng t c ng INTR. IF = 1 : cho php ng t c ng INTR. TF l c b y (trap flag). Dng ch y t ng b c khi c n ki m tra ho t ng c a CPU.

1.1.3. PHNG TH C QU N L B NH
1.1.3.1. S PHN O N B NH Trong ch th c, b nh c qu n l theo c ch phn o n. M c lgic, b nh c nh v theo o n, m i o n nh c phn thnh nhi u nh ; chng trnh khng c xem l chu i lin t c c a m l nh, d li u m c chia thnh cc o n: m l nh, d li u, ngn x p. M i o n c ch a trong b nh c a ch xc nh. C 4 lo i o n khc nhau: o n m l nh (code segment): ch a m l nh c a chng trnh o n d li u (data segment): ch a d li u c a chng trnh o n ngn x p (stack segment): ch a thng tin v d li u ph c v chng trnh con o n m r ng (extra segment): ch a d li u m r ng CPU 8086 dng phng php phn o n b nh qu n l b nh 1Mb c a n. - a ch 20 bit c a b nh 1MB khng th ch a trong cc thanh ghi 16 bit c a CPU 8086 v v y b nh 1 MB c chia ra thnh cc o n (segment) 64KB. - a ch trong cc o n 64KB ch c 16 bit nn CPU 8086 d dng x l b ng cc thanh ghi c a n.

Hpv

HVKTMM

1.1.3.2.

A CH V T L V

A CH LOGIC

- a ch 20 bit c g i l a ch v t l. a ch v t l c dng trong thi t k cc m ch gi i m a ch cho b nh v xu t nh p. - Ng c l i, trong l p trnh, a ch v t l khng c dng m n c thay th b ng a ch lgic. - a ch lgic l a ch g m c hai thnh ph n : a ch o n (segment) v a ch trong o n (offset). - M i a ch thnh ph n ch c 16 bit v c vi t theo cch sau : SEGMENT:OFFSET - Segment v offset l cc s h 16. - Cch tnh a ch v t l t a ch lgic nh sau :

Ho c theo cng th c : V d : tnh a ch v t l tng ng v i a ch lgic B001:1234 a ch v t l = B0010h + 1234 = B1244h - a ch segment cn c g i l a ch n n c a o n. N cho bi t i m b t u c a o n trong b nh . - Trong khi , a ch offset th hi n kho ng cch k t u o n c a nh c n tham kh o. Do offset c 16 bit nn chi u di t i a c a m t o n l 64K. Trong m i o n, nh u tin c offset l 0000h v nh cu i cng c offset l FFFFh.

- M i nh ch c duy nh t m t a ch v t l nhng c th c nhi u a ch logic. Ch ng h n cc a ch lgic 1234:1234, 1334:0234, 1304:0534, ... u c chung a ch v t l 13574h. hi u r t i sao, ta l n l t xem quan h gi a a ch v t l v i cc thnh ph n segment v offset. - V i a ch lgic 0000:0000 ta c a ch v t l l 00000h.

10

Hpv

HVKTMM

- By gi ta gi nguyn ph n segment v tng ph n offset ln 1 thnh ra a ch lgic 0000:0001. a ch v t l tng ng l 00001h. - Tng t v i a ch lgic 0000:0002 ta c a ch v t l 00002h. - Ta nh n th y khi offset tng 1 n v th a ch v t l tng 1 a ch ho c l tng 1 byte. Nh v y c th xem n v c a offset l byte. - By gi ta lm l i qu trnh trn nhng khng tng offset n a m tng ph n segment. Ta c : a ch lgic 0001:0000 tng ng v i a ch v t l 00010h. a ch lgic 0002:0000 tng ng v i a ch v t l 00020h. - Ta nh n th y khi segment tng 1 n v th a ch v t l tng 10h a ch ho c l tng 16 byte. Ng i ta g i n v c a segment l paragraph. 1 paragraph = 16 bytes - i u ny cng c th c gi i thch l do cch tnh a ch v t l t a ch lgic nu trn.

- T cc a ch v t l tnh ra trn, ta th y segment 0000 n m u vng nh nhng segment 0001 b t u cch u vng nh ch c 16 bytes, segment 0002 b t u cch u vng nh 32 bytes . . . - Ph n ch ng ch p c a c ba segment 0000, 0001 v 0002 trn hnh v l vng b nh m b t k nh no n m trong ( a ch v t l t 00020h n 0FFFFh) u c th c a ch lgic tng ng trong c 3 segment. Ch ng h n nh c a ch v t 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 v y n u vng b nh no cng c nhi u segment ch ng ch p ln nhau th cc nh trong cng c nhi u a ch lgic (m t nh c t nh t 1 a ch lgic v nhi u nh t l 65536/16=4096 a ch lgic). 1.1.3.3. A CH LGIC V CC THANH GHI

tham chi u n b nh trong chng trnh, vi x l 8086 cho php s d ng cc a ch lgic m t cch tr c ti p ho c thng qua cc thanh ghi c a n. - Cc thanh ghi o n dng ch a a ch o n segment. - Cc thanh ghi t ng qut dng ch a a ch trong o n offset.
11

Hpv

HVKTMM

tham chi u n a ch lgic c segment trong thanh ghi DS, offset trong thanh ghi BX, ta vi t DS:BX. N u lc tham chi u, DS=2000h, BX=12A9h th a ch lgic DS:BX chnh l tham chi u n nh 2000:12A9. - Trong cch s d ng a ch lgic thng qua cc thanh ghi c a vi x l 8086, c m t s c p thanh ghi lun lun ph i dng chung v i nhau m t cch b t bu c nh sau : CS:IP : l y l nh ( a ch l nh s p thi hnh). SS:SP : a ch nh ngn x p. SS:BP : thng s trong ngn x p (dng cho chng trnh con). DS:SI : a ch chu i ngu n (ch c ngha trong cc l nh x l chu i). ES:DI : a ch chu i ch (ch c ngha trong cc l nh x l chu i). - Chng trnh m vi x l 8086 thi hnh th ng c 3 o n : o n chng trnh c a ch trong thanh ghi CS, o n d li u c a ch trong thanh ghi DS v o n ch ng c a ch trong thanh ghi SS.

1.1.4. CPU GIAO TI P V I THI T B NGO I VI


M hnh minh ho :
HARD DISK

MONITOR

KEYBOARD

FLOPPY DISK

CPU

MEMORY

VIDEO CONTR OLLER

KEYBOARD CONTROLLE R

HARDDI SK CONTR OLLER

FLOPPY DISK CONTR OLLER

BUS

CPU nh n bi t m t thi t b I/O: M i I/O c m t a ch ring( th ng g i l c ng); m i khi truy xu t n m t I/O no, CPU xu t ra a ch (c ng) c a I/O ra bus a ch Thng qua B gi i m a ch s xc nh I/O m CPU mu n truy xu t s c ch n (tn hi u chip select m c tch c c cao) Trn th c t , vi c i u khi n vo ra c th c hi n thng qua h th ng ng t( c th l ng t c ng ho c ng t m m) l cc chng trnh vi t s n c a h i u hnh ho c c a cc kh i i u khi n. H th ng ng t s c tm hi u chi ti t trong chng II.

1.2. HO T

NG C A H

I U HNH MS-DOS
12

Hpv

HVKTMM

1.2.1. CC THNH PH N C A MS-DOS


H MS-DOS c 6 thnh ph n:
Chng trnh ng d ng

DOS

Command.com

BIOS ROM BIOS

Mc n i

CPU

L nh ngoi

ROMBIOS: l h chng trnh ch a trong ROM, th c hi n ngay sau khi b t ngu n nui c a my vi tnh, ch a nh ng chng trnh i u khi n cc b ph n c a my (bn phm, mn hnh, b nh , my in). Chng trnh kh i ng (Boot Sector-rnh ghi kh i ng): n m trn cung u tin c a m i a c ng v kh i pht ti n trnh n p vo b nh hai t p n m trn a l BIOS v DOS c a H H MS-DOS. Kh i BIOS: (cn g i BIOS.COM) v i ui COM, cung c p m t giao di n m c th p v i ROM-BIOS v i u khi n vo/ra c a nh ng thi t b ngoi (bn phm, mn hnh). Kh i DOS: cung c p m t giao di n m c cao v i cc chng trnh p d ng, n i u khi n th m c c a cc t p cng nh s ngn c n ghi ln a. Chnh kh i ny g i cc ch c nng DOS b i s trung gian c a ng t INT 21h. Kh i x l COMMAND.COM: x l nh ng l nh khc nhau m ng i s d ng g vo bn phm ra l nh cho H H. Nh ng l nh ngoi (external): l nh ng l nh khc c a MS-DOS m khng c trong b phin d ch (interpreter) c a l nh COMMAND.COM ho c v cc l nh ny t dng, ho c kch th c c a l nh r t l n chi m nhi u a ch nh . m r ng, ng i ta g i cc l nh ngoi l t t c cc t p th c hi n c c a a ( ui .EXE hay .COM).
13

Hpv

HVKTMM

Ghi ch: Kh i BIOS l giao di n m c th p nn ph i vi t l i cho m i my vi tnh khc nhau. Kh i DOS, giao di n m c cao c a m i my v nh nhau i v i m i my tnh. V y cc giao di n l nh nhau (DOS duy nh t), nh ng chng trnh ng d ng nh v y c th chuy n t my ny sang my khc.

1.2.2. B TR H H TRONG B NH TRUNG TM


H i u hnh c chng trnh mc n i (Bootstrap) trn a (c ng, m m) cung u tin, n p vo b nh trung tm (t a h th ng m m hay c ng) theo cc vng c a b nh trung tm nh hnh 2.6. B ng vct ng t l 256 byte nh dng ch a cc a ch (byte thanh ghi o n v byte offset- l ch) c a t t c cc chng trnh con ph c v ng t, t c cc chng trnh ph c v c a BIOS, DOS, COMMAND.COM v ROM.BIOS. M i m t chng trnh ph c v ng t ny m b o th c hi n m t nhi m v xc nh r rng c a MS-DOS (xem chi ti t d i m c d i). ROM BIOS: 8KB FFFFFh FE000h ....

ROM: 32KB (ROM basic i u khi n a c ng) RAM trnL 640KB dnh cho H H nh mn hnh Ph n n a th ng ch c a command.com RAM dnh ghi v ch y chng trnh ngoi Ph n th ng tr c a command.com DOS BIOS Vng lin l c DOS Vng lin l c BIOS B ng vect ng t 00400h

Hai kh i DOS v BIOS c hai vng lin l c (communication), m i vng c b r ng 100h = 256D a ch nh gi ng nh vct ng t, dng lm a ch lin l c hay b c c u t i ph n c b n c a DOS v BIOS. Chng trnh x l l nh COMMAND.COM chi m hai vng nh tch bi t: - Ph n th ng tr.
14

Hpv

HVKTMM

- Ph n n a th ng tr. Nh v y , H H ch a hai ph n: + ROM BIOS c s n trong my, i u khi n my kh i ng sau khi b t ngu n. + Cc vng cn l i l RAM, c n p vo b i chng trnh Bootstrap (mc n i c cung u tin c a a h th ng), dng n p ph n c b n c a H H (DOS, BIOS v COMMAND.COM).

1.2.3. CHNG TRNH MC N I (BOOTSTRAP LOADER)


Nhi m v c a chng trnh ny l n p cc t p BIOS (hng IBM g i l IBM BIO.COM, cn hng Microsoft g i l IO.SYS) v DOS (hng IBM g i l IBM DOS.COM, hng Microsoft g i l DOS.SYS). Chng trnh ny n m rnh 0, cung 1, m t 0 c a a m m ho c cung 1, a 0, tr u tin trong a c ng. Chng trnh ny c ROMBIOS n p t a vo RAM nh hnh 2.7 a ch 07C00h, sau s i u khi n n p l i chuy n cho chnh chng trnh ny. Chng trnh ny n p vo b nh RAM g m cc kh i: + IBMBIO.COM m t 1, rnh 0, cung 3 t i cung 6.
Boot ROM BIOS Sector 1, r 0, m0 r 0, m1 7C00h RAM N p h th ng

+ IBMDOS.COM m t 1, rnh 0, cung 7 t i 8 (hnh 2.7). V i phin b n (version) khc nhau c a DOS, c s khc nhau v vi c ghi chng trnh mc n i. N u c ti n ch DISKLOOK, ta c th xem vn b n c a chng trnh BOOT b ng cch ch y DISKLOOK, n nm ch c nng F7, g v tr ghi chng trnh BOOT (m t 0, rnh 0 v cung 1) r i n phm F6 chng trnh BOOT hi n ln mn hnh.
15

Hpv

HVKTMM

1.2.4. CHNG TRNH VO/RA C S BIOS


BIOS (Basic Input Output System) l chng trnh: i u khi n h (cc ng t c ng v ng t c a h - xem chi ti t d i). i u khi n vo/ra c a cc thi t b ngoi nh bn phm mn hnh, my in. i u khi n ng t do l nh c a chng trnh b i CTRL-BREAK hay b i b nh th i (timer). i u khi n truy c p t i b ng cc thng s c a mn hnh (trong ROM cho kh i i u khi n MC 6845), c a a hay b ng d li u c a cc k t ph (k t h a). BIOS c chia thnh hai kh i: - ROM.BIOS: ch a trong nh ROM, c s n trong b nh trung tm. - BIOS.COM: ( ui .COM) ch a trn a h th ng (m m, c ng) c n p vo b nh RAM c a b nh trung tm. 1.2.4.1. ROM.BIOS Ch a trong ROM, dung l ng 8KB t a ch FE000h t i FFFFFh. ROM.BIOS bao g m cc chng trnh khc nhau: - Chng trnh t ki m tra PST: (Power on Self-Test) c th c hi n sau khi b t ngu n i n nui hay m i l n h i ph c h (Ctrl-Alt-Del). Chng trnh ny th c hi n: + Ki m tra b nh v cc thi t b ngoi (mi tr ng) c a my vi tnh. + c v chp chng trnh mc n i t a vo b nh RAM (hnh 2.7). N u khng c a ho c c l i trong chng trnh c pht hi n, vi c i u khi n c chuy n cho chng trnh phin d ch (interpreter) Basic c a ch OF6000h n OFE00h trong ROM-basic. - Cc chng trnh i u khi n thi t b ngoi: (g i cc ng t c ng b i vi m ch 8259A v i m c ng t 8 n F) nh ng h (timer), bn phm, lin l c khng ng b , a c ng, a m m, my in. - Cc chng trnh g i ng t c a h (m c 0 7) g m: + Cc ng t logic: chia cho 0, t ng b c, d ng, trn. + Cc ng t c ng: NMI (v d sai s ch n l trong kh i nh , vi x l khng ti p t c lm vi c, chp n i dung mn hnh ra my in). 1.2.4.2. BIOS.COM BIOS.COM ra i nh m: Kh c ph c nh c i m c a ROM.BIOS nh:
16

Hpv

HVKTMM

V -

+ Khng ph h p v i DOS, c c u chnh c a H H. + Pht hi n l i c a ROM.BIOS v c th s a l i nh BIOS.COM. + ROM.BIOS khng th i u khi n c cc thi t b ngoi m i. M r ng cc ch c nng c a ROM.BIOS b ng cch ng t (10h 1Fh) i u khi n mn hnh, xc nh kch th c b nh , hnh ng c v ghi a m m, cassette, bn phm, my in, ki m tra ng h , truy c p b ng s li u c a cc k t h a. Chu n on l i c a cc thi t b ngoi. c tnh chnh c a BIOS l: Xc nh tr ng thi c a thi t b ngoi. H i ph c cc a. Kh i ng cc thi t b ngoi. N p cc chng trnh i u khi n thi t b ngoi. nh ngha nh ng vct ng t c s hi u ng n hn (10h 1Fh). Thu c tnh cho a ch nh c a DOS.COM. G i DOS.COM. c u trc, BIOS c hai ph n: Ph n lin l c BIOS chi m a ch nh t 00400h t i 00500h m cc a ch con (t 00400h) nh b ng 2.2. Ph n li c a BIOS.

1.2.3. KH I I U HNH A DOS.COM


Kh i DOS.COM ny l ph n c b n c a H H g m: - Kh i lin l c c a DOS c a ch nh u l 00500h t i 00600h. - Kh i c b n c a DOS c a ch u l 00B00h. B ng 2.2. a ch nh dnh cho BIOS lin l c (b t u t 0400h) a ch 01 08 10 12 13 15 17 18 Bi n s RS232 base PRINTER-base EQUIP-Flag MFG-T&T Memory-Size 10-RAM-SIZE KB-Flag KB-Flag1
17

My in khng (n i ti p)

ng b

Hpv

HVKTMM

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

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 m m

Vi deo

Mn hnh

ng h a c ng Khc

Kh i ny l giao di n m c cao v i nh ng chng trnh c a ng i dng, n ch a: + Cc chng trnh i u khi n t p (t ch c th m c v t p trn a, kha v gi i kha vi c ghi). + Cc chng trnh g i cc ch c nng cho cc n v vo/ra theo k t (bn phm, mn hnh, my in).
18

Hpv

HVKTMM

+ Cc chng trnh i u khi n b nh . + Cc chng trnh g i th i gian (ngy, gi , thng, nm). + Chng trnh i u khi n vi c th c hi n chng trnh (d ng, k t thc). Khi m t chng trnh c a ng i dng th c hi n m t chng trnh vo/ra, cc hnh ng ny pht cc ch c nng (function) m c cao (DOS.COM) b i trung gian c a n i dung cc thanh ghi v cc kh i i u khi n. Nh ng ch c nng c hon thi n b i cc l i g i t i BIOS.COM nh hnh 2.8. HNH V 2.8 Cc ng t c a DOS (g i cc ch c nng) c s hi u t 20h n 3Fh v c 67h ua vo thanh ghi ng t AL tr c khi g i l nh ng t chng trnh INT nh. Ng t INT 21h g m nhi u ch c nng con, chnh l b ph n ch y u c a H H MS-DOS.

1.2.4.T P L NH COMMAND.COM
a) i cng Ngoi BIOS v DOS, COMMAND.COM cng l thnh ph n quan tr ng c a H H, n tng ng CCP (Control Command Processor b x l l nh bn i u khi n). Kh i ny c hai ch c nng: - Phin d ch dng l nh nh vo t bn phm. i u khi n nh ng ng t. Khi l nh g vo sai v c php, l nh COMMAND.COM ny ch ra mn hnh l khng th y l nh (Command not found) v l i quay v d u nh c (C>) c a mn hnh ch l nh m i g vo t bn phm. Trong b nh trung tm, COMMAND.COM c n p thnh hai o n v ch a ba ph n: + Ph n lu tr: n m ngay trn DOS. Ph n ny ch a: Nh ng kh i x l nh ng ng t 22h, 23h v 24h (k t thc chng trnh, d ng kh n c p CTRL-BREAK v do sai s ). Chng trnh n p l i ph n bn tr. i u khi n l i v thng bo l i. Nh ng l nh n i (lu tr). + Ph n kh i pht: ph n ny ch dng lc kh i ng my vi tnh, v tr c a n c gi i phng. Sauk hi th c hi n (nguyn t c ph : overlay). Ph n ny c: Chng trnh n p AUTOEXE.BAT. Hi n th ngy thng. Xc nh a ch n p hay H H s n p nh ng chng trnh tr c khi th c hi n chng.
19

Hpv

HVKTMM

+ Ph n bn tr: n m bn trn ph n b nh c a ng i dng (RAM). N ch a h u h t cc kh i (m un) i u khi n nh ng t p c a l nh. BAT (x l theo l). Ph n ny c th b chia nh n u H H c n ch , v c m t chng trnh c a ng i dng ang ch y. N s c n p l i khi b x l l nh i u khi n my (ph n lu tr c a COMMAND.COM). b) Phn lo i l nh theo ch c nng V i quan i m ch c nng, MS DOS c 4 nhm l nh (hay chng trnh) v i cc ui: .COM, . EXE, .SYS v .BAT. - Cc l nh lo i .COM Nh ng chng trnh lo i .COM (l nh COMMAND) m ph ng nh ng chng trnh CP/M c nh ng m ng (segment) c a m l nh (CS), c a s li u (DS v ES) v c a ngn x p (SS) l trng nhau, ngha l chng cng m t gi tr . M l nh v s li u c a m t chng trnh l xen nhau bn trong m ng 64KB v m l nh c b t ut a ch 0100h trong m ng. Nh ng chng trnh lo i ny c th quay vng bn trong m t m ng duy nh t; l n c a n, bao g m vng ho t ng khng qu 64KB. Chng trnh lo i c ui .COM ny c th ch y tr c ti p trn my, khng c n m t s bi n i no. - Cc l nh lo i . EXE Cc l nh lo i . EXE (EXEcute) l c th chuy n i c, chng n m u m t thng tin chuy n, dnh cho chng trnh n p. Cc thanh ghi m ng s li u (DS v ES) c n p v i gi tr (h ng) u m t vng nh c th s d ng, trong khi cc thanh ghi m l nh (CS v IP) v ngn x p (SS v SP) nh n gi tr do chng trnh k t n i (LINKER) truy n cho. V i cch ny,ng i l p trnh c th kh i pht nh ng thanh ghi m i gi tr mong mu n. Khi hnh ng n p di n ra lu hn.Nh ng t p .EXE th ng sinh ra b i chng trnh d ch assembler c a MS- DOS. Chng trnh ti n ch EXE2BIN c a MS-DOS cho php bi n i t p .EXE sang t p .COM ch y chng trnh. - Cc l nh .SYS y l cc l nh lin quan t i c u trc thu c nhm CONFIG.SYS. l cc l nh i u khi n thi t b ngoi (ANSI.SYS, DISPLAY.SYS, EGA.SYS, Keyboard.SYS) i u khi n kh i nh (HIMEM.SYS, RAMDRIV.SYS) v cc i u khi n khc (CHKSTATE.SYS, DBLSPACE.SYS). - Cc l nh lo i .BAT Nh ng l nh lo i BAT (batch) l nh ng t p c a vn b n ch a cc l nh, tng ng v i cc t p .SUB c a CP/M. M t s tc gi g i chng l cc t p c a cc chng trnh con (th t c procedures). Nh ng l nh c m t trong cc t p ny
20

Hpv

HVKTMM

c th l t t c cc l nh vi t ng c a MS-DOS, c a lo i .COM hay .EXE ho c c lo i . BAT v i cc thng s c a chng, cc l nh l c l p tuy t i v i nhau. Nh ng th t c l tng ng c a ch x l theo l (Batch Processing), trong , nhi u chng trnh (hay cc l nh) c mc n i v i nhau m t cch t ng, khng c s can thi p c a ng i i u hnh (hay ng i s d ng). Nh ng l nh c d ki n cho php m t i u khi n no c di n ra b i ng i dng MD-DOS nh ECHO, REM, PAUSE. - ECHO (ti ng vang): hi n th ln mn hnh nh ng y u t c a m t th t c d n d n trong qu trnh th c hi n chng. - REM (ghi ch): cho php lm hi n th m t ghi ch trong khi ti n hnh ki m tra m t s i m truy n qua. - PAUSE (ngh ): cho php treo s th c hi n m t th t c th c hi n m t s hnh ng ngoi (nh n p a vo n v vo/ra; n p l i gi y ln my in ) B n lo i chng trnh hay l nh trn c a MS-DOS ch c n g vo bn phm tn c a chng (khng c n ghi ui m r ng) v n ENTER (CR) s c COMMAND.COM phin d ch v c vi x l th c hi n. c) Phn lo i l nh theo v tr Theo v tr ta chia: - L nh n i tr n m trong b nh trung tm - L nh ngo i tr, ch n p vo b nh khi g i n. Nh ng l nh n i (intern) Nh ng l nh c g i l n i dung l nh ng l nh c nh n bi t v x l t c th b i chng trnh phin d ch (interpreter) COMMAND.COM. Nh ng l nh lo i ny chia thnh 7 nhm (version 2): + Nh ng l nh kh i pht MODE: i thi t b u cu i ch . PROMPT: i k t ch (cho a A, C) DATE: g i ngy TIME: g i gi + Nh ng l nh i u khi n th m c DIR: hi n th n i dung th m c CHDIR: i th m c hi n hnh PATH: ch ng d n t i t p hi n hnh MKDIR: t o th m c m i RMDIR: xa b th m c
21

Hpv

HVKTMM

+ Nh ng l nh i u khi n t p COPY: chp n i dung m t t p TYPE: hi n th n i dung m t t p RENAME: i tn m t t p ERASE: xa m t t p + Nh ng l nh i u khi n ho t ng BREAK: th c hi n CTRL C CLS: xa mn hnh SET: thay n i dung m t bi n chu i EXIT: ra kh i DOS + Nh ng l nh i u khi n hi n th v ghi ln a VER: hi n th s phin b n c a DOS. VERYFY : Ki m tra l i vi c ghi ln a. + Nh ng l nh c a cc th t c ECHO: hi n th ln mn hnh nh ng ph n t c a th t c. PAUSE: d ng, treo m t th t c. REM: hi n th nh ng ghi ch. + Nh ng l nh l p trnh cc th t c FOR IN DO: cho m t hnh ng l p l i. GO TO: phn nhnh t i. IF: th c hi n cc i u ki n. SHIFT: b qua nh ng bi n x l. Nh ng l nh ngoi ( externe): y l nh ng l nh khng th c hi n b i b phin d ch l nh, nhng c t p COMMAND.COM i u khi n trong su t th i gian th c hi n. MS-DOS cn chia hai lo i l nh ngoi l: + L nh ngoi do DOS cung c p. + L nh ngoi cng khng do DOS cung c p. - L nh ngoi c a h : + L nh c a phin b n 1 EDLIN: so n th o dng. DEBUG.COM: hi u ch nh chng trnh. CHKDSK.com: ki n tra n i dung c a a. FORMAT.COM: t o d ng a. SYS.COM: chp l i chng trnh h th ng ln a. EXE2BIN.COM: bi n i m t t p EXE thnh COM.
22

Hpv

HVKTMM

COMP.COM: so snh cc t p trn a. + L nh c a phin b n 2 CONFIG.SYS: thay i c u hnh c a h . DISCOPY.COM: chp m t a ln a khc. MORE.COM: hi th ln mn hnh. PRINT.COM: a n i dung mn hnh ln my in. RECOVER.COM: ly m t t p a h ng. FIND.EXE: tn m t vn b n trong m t t p. SORT.EXE: tm n i dung c a m t t p. EXEFIX.COM: bi n i t p t COM sang EXE. CAT.COM: tm m t th m c. - L nh ngoi cng Cc l nh ny cn chia thnh: + L nh nhm 1: l nh c bi t , tham gia vo ho t ng c a h . LIB.EXE: i u khi n th vi n c a cc kh i. LINK.EXE: k t n i ( so n th o k t n i). CREF.EXE: pht cc hnh ch th p. MASM.EXE: macro assembler. + L nh nhm 2: c t o thnh b i cc b d ch cc ngn ng ( bin d ch hay phin d ch): Basic,Pascal + L nh nhm 3: c th t t t c cc ph n m m p d ng v i s l ng khng h n ch .

23

Hpv

HVKTMM

2. T T NG CHUNG C A L P TRNH V I THI T B NGO I VI


2.1. CC THNG S PH N C NG C A THI T B NGOI 2.1.1. C NG VO/RA
Cc thi t b ngo i vi giao ti p v i CPU thng qua cc c ng vo/ra; m i c ng vo ra u c m t a ch do MS-DOS( h i u hnh) qui nh. Do , l p trnh tr c ti p b ng h p ng c n ph i bi t a ch c ng vo/ra n i v i thi t b ngo i vi.Th ng ng nh t c ng chnh l a ch c a c ng vo/ra n i v i thi t b ngo i vi. M t s c ng vo/ra c a m t s thi t b ngo i vi thng d ng cho h my IBM PC nh sau: a ch Thi t b 000-03F B i u khi n DMA 8237A 1 020-03F B i u khi n ng t 8259A 1 060-06F B i u khi n bn phm 8042 0A0-0BF B i u khi n ng t 8029A 2 0C0-0CF B i u khi n DMA 8237A 2 170-177 a c ng 1 1F0-1F7 a c ng 2 200-207 G y i u khi n tr chi 2F8-2FF Vo/ra n i ti p COM2 370-377 a m m 2 378-37F My in song song LPT1, LPT2 380-38F C ng cho m ng SDLC 3B0-3DF Mn hnh VGA 3F8-3FF Vo/ra n i ti p COM1 3D0-3DF Card mn hnh mu CGA, EGA 3F0-3F7 i u khi n a m m

2.1.2. CC VNG NH THAM S


Vng nh tham s c a cc ng t l cc bi n hay cc tham s c a cc ng t BIOS, DOS; c nhi m v ch a d li u cho cc ng t. C cc a ch dnh ring cho t ng ng t ho c t ng thi t b ngoi tr t i vng nh tham s ny. Khi l p trnh tr c ti p c n bi t a ch c a cc b ng tham s ny cung c p tham s cho chng trnh cn khi l p trnh s d ng ng t th cc chng trnh con c cc tham s nn ng i l p trnh c th khng c n bi t. a ch nh cho cc tham s c a BIOS cho cc thi t b ngoi: a ch Kch th c N i dung 0000:0400 2 byte a ch c s c a kh i ghp n i RS233(COM1) 0000:0402 2 byte a ch c s c a kh i ghp n i RS232(COM2)
24

Hpv

HVKTMM

0000:0404 0000:0406 0000:0408 0000:040A 0000:040C 0000:040E 0000:0410 0000:0412 0000:0413 0000:0415 0000:0417 0000:0419 0000:041A 0000:041C 0000:041E 0000:0449 0000:044A 0000:044C 0000:044E 0000:0450 0000:0460 0000:0462 0000:0463 0000:0465 0000:0466 0000:0478 0000:047C 0000:0480 0000:0482 0000:0484 0000:0485 0000:0487 0000:0488 0000:0496 0000:0497 0000:0498

2 byte 2 byte 2 byte 2 byte 2 byte 2 byte 2 byte 1 byte 2 byte 2 byte 2 byte 1 byte 2 byte 2 byte 32 byte 1 byte 2 byte 2 byte 2 byte 16byte 2 byte 1 byte 2 byte 1 byte 1 byte 4 byte 2 byte 2 byte 2 byte 1 byte 2 byte 1 byte 1 byte 1 byte 1 byte 4 byte

a ch ...................................................(COM3) a ch ...................................................(COM4) a ch c s c a kh i ghp n i my in song song 1 (LPT1) a ch .................................................(LPT2) a ch ..................................................(LPT3) a ch .................................................(LPT4) Danh sch cc trang thi t b ph n c ng Cc l i trong ph n k t n i bn phm T ng b nh theo Kbyte m dng cho ki m tra cc l i ch t o Cc c tr ng thi bn phm Gi tr c a cc phm Alt + S a ch u vng m bn phm a ch cu i vng m bn phm Vng m bn phm (mi m a ch : 0000:041E0000:043D) Ch mn hnh ho t ng Chi u r ng mn hnh tnh theo c t vn b n Chi u di vng nh mn hnh Ofset tnh t phn o n mn hnh c a trang vng nh mn hnh V tr con tr (8 c p byte) Kch th c con tr (byte th p=dng qut cu i, byte cao=dng u) S hi u trang mn hnh ho t ng hi n hnh a ch c ng chip MC 6845 Gi tr hi n t i ch mn hnh c a MC 6845 Gi tr hi n t i c a m u mn hnh c a MC 6845 Gi tr v t th i gian c a my in (0478h:LPT1..) Gi tr v t th i gian c a RS 232 (47Ch:COM1) a ch Ofset b t u vng m bn phm cho AT v PS/2 a ch Ofset k t thc........................................... Hng k t c a EGA cao nh t S byte cho m i k t EGA(s dng qut/k t ) Thng tin ph v EGA dng mn hnh n s c Thng tin ph v EGA dng mn n s c Bit 4 c a tr ng thi c c a bn phm AT=1 Tr ng thi c c a bn phm AT hi n cc phm LOCK Con tr n tr ng thi i 8 bit c a ng i dng
25

Hpv

HVKTMM

0000:049C 0000:04A0 0000:04A8 0000:04F0 0000:0500

4 byte 1 byte 4 byte 16byte 1 byte

M t Micro giy tr c khi ng i dng my AT ch xong Tr ng thi c hnh ng ch c a ng i dng (1=b n, 80h= qua, 0=nh n bi t) a ch b ng con tr SAVE-PTR c a EGA Vng trao i tin c a cc chng trnh ng d ng Tr ng thi in mn hnh( 00h:cho php in, 01h: ang in, 0FFh: l i trong khi in)

B ng cc tham s : Lu tr thng tin chi ti t ng v i m i thi t b ngo i vi. G i ch c nng c a ng t -> bi t c a ch c a b ng -> c c n i dung c a b ng. Th c ch t y chnh l cc ofset ng v i a ch o n ( a ch c s ) c a a ch nh cho thi t b ngo i vi.

2.2. T T NG L P TRNH 2.2.1. GI I THI U


Cc chng trnh i u khi n thi t b ngo i vi thng d ng c vi t s n trong h i u hnh MS-DOS d i d ng cc ng t (INT nh n: k hi u s ng t; h: d ng hexa). Khi g i cc chng trnh ph c v ng t ch c n vi t l nh INT nh b ng h p ng ; cu i m i chng trnh ph c v ng t u c l nh tr v ch b ng t c a chng trnh. C 2 phng php l p trnh cho cc thi t b ngo i vi: L p trnh tr c ti p cho ph n c ng: i u khi n cc kh i i u khi n c a thi t b ngo i vi. Phng php ny i h i n m v ng c u trc v ho t ng c a cc kh i i u khi n; a ch cc thanh ghi, c u trc cc thanh ghi tr ng thi, a ch cc ngn nh m dnh cho thi t b ngo i vi. L p trnh s d ng ng t: s d ng cc ng t INT nh trong ROM-BIOS v DOS c a h i u hnh MS-DOS hay ph n m m h th ng. Phng php ny c n bi t cch dng cc ng t v i cc tham s vo(n p vo cc thanh ghi) v tham s ra( a ra cc thanh ghi bi t k t qu th c hi n c a cc chng trnh ph c v ng t). Th c ch t chnh cc chng trnh i u khi n tr c ti p tng t v i cc chng trnh (cc hm ch c nng) ph c v ng t m h i u hnh vi t s n ph c v , i u khi n thi t b ngo i vi m s c th c hi n khi g i ng t. Nguyn l chung c a l p trnh tr c ti p cc thi t b ngo i vi nh sau: V i l p trnh tr c ti p can thi p vo ph n c ng: B c 1: N p a ch c a cc c ng vo/ra (thng th ng ni n c ng vo/ra chnh l a ch c a c ng m thi t b ngo i vi tng ng oc ghp n i vo) B c 2: Ki m tra tr ng thi s n sng hay yu c u trao i tin c a cc thi t b ngo i vi B c 3: N p d li u c n a ra vo thanh ghi AX

26

Hpv

HVKTMM

B c 4: a s li u ra b ng l nh OUT ho c c s li u vo b ng l nh IN V i phng php s d ng cc ng t INT nh c a h i u hnh: B c 1: N p cc ch c nng hay cc hm ph c v ng v i t ng nhi m v c a thi t b ngo i vi tng ng vo thanh ghi AH; cc ch c nng con vo thanh ghi AL B c 2: N p cc tham s vo c n thi t vo cc thanh ghi thng d ng B c 3: G i ng t INT nh tng ng

2.2.2. QUI T C CHUNG L P TRNH CHO THI T B NGO I VI


Phng php trao i tin c a CPU v i thi t b ngo i vi v c u trc chung c a kh i i u khi n ghp n i thi t b ngo i vi 2.2.2.1. TRAO I TIN GI A CPU V I THI T B NGO I VI

Trnh t trao i tin: khi trao i tin v i thi t b ngo i vi, vi x l th c hi n thng qua cc l nh theo trnh t : CPU a ra a ch c ng ( a ch thanh ghi m c a kh i ghp n i thi t b ch n vi m ch tng ng v i lo i tin( i u vo ra) ln bus a ch (A0-An) khi n, tr ng thi hay d li u) N u a tin ra thi t b ngo i vi, CPU s ghi d li u vo thanh ghi tch lu AX(c a CPU). Sau , CPU a l nh ghi s li u WR(tch c c th p) vo thanh ghi. Sau tn hi u ny d li u s c ghi vo thanh ghi m d li u c a kh i i u khi n thi t b ngo i vi. N u CPU c n c d li u t thi t b ngo i vi, CPU ph i a tn hi u c RD sau khi a a ch . D li u trn thanh ghi m c( tr ng thi, d li u) c a ln bus d li u v ghi vo thanh ghi tch lu AX Ch trao i tin Trao i tr c ti p ( ng b ): Do CPU th c hi n b ng cch a a ch , d li u v l nh cho c ng m khng c n bi t thi t b ngo i vi c yu c u trao i khng ho c s n sng cha. Nhanh nhng khng tin c y Trao i tin c ki m tra tr ng thi: Gi ng nh tr c ti p nhng CPU c ki m tra tr ng thi s n sng c a thi t b ngo i vi. Do CPU c n: c d li u c a thanh ghi tr ng thi Ki m tra bit s n sng trao i tin c a thi t b ngo i vi. N u s n sng th th c hi n l nh trao i tin ngay sau l nh ki m tra tr ng thi. N u cha s n sng th: chuy n sang ki m tra tr ng thi c a thi t b ngo i vi khc theo vng kn (h i vng tr ng thi) Trao i tin theo ng t chng trnh: Do thi t b ngo i vi kh i x ng b ng cch a yu c u trao i tin, yu c u ng t chng trnh INTR( Interrup Request) c a CPU ngay khi CPU ang th c hi n m t chng trnh no . Ti n trnh nh sau: 1. Lm th t c ng t chng trnh
27

Hpv

HVKTMM

2. Pht tn hi u xc nh n ng t t o v c vecto ng t( a ch ch a a ch c a l nh b t u c a chng trnh con ph c v trao i tin) t kh i ghp n i i u khi n thi t b ngo i vi vo thanh ghi ch a AX. 3. Chuy n sang th c hi n chng trnh ph c v ng t cho n khi th c hi n l nh RET( tr v ) ho c IRET( tr v t ng t). Tr i u khi n v cho chng trnh chnh 4. Th c hi n ti p chng trnh chnh b ng t D ng tin trao i D ng song song: M i bit tin c truy n trn m t ng dy ring r t i cng m t th i i m. Nhanh nhng t n ng dy v b nhi u khi thi t b ngo i vi xa D ng n i ti p: Tin trao i c truy n t ng bit trn m t ng dy 2 chi u ho c 2 ng dy( ng pht Tx, ng thu Rx) 2.2.2.2. KH I GHP N I I U KHI N TRAO I TIN

Gi a CPU v thi t b ngo i vi ph i l p kh i ghp n i(cn g i l interface: giao di n ho c adaptor: b i u h p) i u khi n trao i tin C u trc c a kh i ghp n i: Kh i ghp n i song song: g m Kh i m ng dy cho cc ng a ch , d li u, i u khi n tng c ng cng su t v cch ly CPU v i thi t b ngo i vi. Kh i gi i m a ch v l nh cho cc thanh ghi m Cc thanh ghi m i u khi n, tr ng thi, d li u Kh i x l ng t: m c ch chnh l pht tn hi u yu c u ng t( INTR), t o vc t ng t khi nh n xc nh n ng t INTA t CPU Kh i ghp n i n i ti p: ngoi cc thnh ph n gi ng kh i ghp n i song song kh i ghp n i ti p cn c: Cc thanh ghi d ch: bi n i tin song song thnh n i ti p v ng c l i Kh i i u khi n Modem cho tin truy n xa trn i n tho i Kh i pht nh p th i gian cho tn hi u pht v thu Kh i pht hi n cc bit b t u( start) v k t thc( Stop) c a byte tin Kh i ki m tra l i cho truy n tin Ho t ng c a kh i ghp n i Theo trnh t : Kh i pht: kh i ghp n i c ghi cc thng tin v ch , l nh i u khi n( c ghi b nh m v c a ch dnh ring cho t ng thi t b ngo i vi) c, ki m tra v ch tr ng thi s n sng c a thi t b ngo i vi Trao i tin v i thi t b ngo i vi 2.2.2.3. L P TRNH TRAO I TIN
28

Hpv

HVKTMM

L p trnh tr c ti p: C n: n m v ng c u trc, ho t ng c a CPU, kh i ghp n i v thi t b ngo i vi. Ph i bi t r a ch cc thanh ghi c a kh i ghp n i B ng vng a ch dnh cho thi t b ngo i vi trong IBM-PC Lo i thi t b Vng a ch B i u khi n th i gian 040-05F B ghp n i song song( 8255A) 069-063

Cc l nh h p ng dng l p trnh tr c ti p: L nh chuy n: MOV A, B (tr ng h p n p a ch c ng: A l DX, B l a ch ofset , tr ng h p gn s li u a ra cho AX: A l AX, B l gi tr d li u) L nh IN A, B (tr ng h p n p tr ng thi vo AX v i A l AX, D l a ch c a thanh ghi tr ng thi; ho c tr ng h p c d li u t thanh ghi m d li u vo AX v i A l AX, D l a ch c a thanh ghi m s li u) OUT A, B (tr ng h p a d li u v i u khi n - l nh, ch t B ra thanh ghi i u khi n A; ho c tr ng h p a d li u t B ra thanh ghi m d li u A) L nh ch n lgic AND AX, d li u ( l c cc bit v tr ng thi-ch l i cc bit c n thi t c a tr ng thi c n xt) L nh ki m tra tr ng thi: TEST AX, d li u (N u cc bit c a tr ng thi trng v i cc bit c a d li u th c ZF=1, hi u AX-d li u =0, nhng khng a hi u vo AX) CMP AX, d li u (tng t TEST nhng g i hi u AX-d li u vo AX) L nh nh y: JNZ A (nh y v nhn A; s d ng nh y v l nh c tr ng thi n u tr ng thi cha s n sng) L p trnh s d ng ng t INT nh

29

Hpv

HVKTMM

n gi n hn l p trnh tr c ti p, khng c n ph i hi u r c u trc c a cc kh i ghp n i v: Cc chng trnh con ph c v ng t th c ch t chnh l cc chng trnh tr c ti p vi t cho cc kh i ghp n i Cc s li u cho l p trnh tr c ti p ghi s n trong b nh m dnh cho cc kh i ghp n i L p trnh s d ng ng t c n: Hi u r ng t v cc ch c nng ph c dng cho kh i ghp n i no v lm g Ghi y cc tham s vo cho cc thanh ghi thng d ng c a VXL m ng t yu c u c cc tham s ra bi t k t qu th c hi n Cc l nh hay dng: MOV A, B (A th ng l cc thanh ghi, B l cc con s ch ng t hay cc hm ch c nng) INC A, DEC A (tng, gi m gi tr c a thanh ghi A) Cc l nh ki m tra: TEST, CMP Cc l nh nh y: JNZ, JZ, LOOP INT nh (g i s hi u ng t cho t ng thi t b ngo i vi tng ng) L nh k t thc chng trnh INT 20h, ho c MOV AH, 4Ch INT 21h

2.2.3. D NG T NG QUT C A CHNG TRNH PH C V THI T B NGOI S D NG NG T


Cc chng trnh ph c v trao i tin c a cc thi t b ngo i vi u c c u trc sau: Ghi ch c nng( hm ph c v ) vo thanh ghi AH, ch c nng con vo thanh ghi AL c a CPU b ng l nh MOV Ghi cc tham s vo c n thi t cho ch c nng vo cc thanh ghi BX, CX, DX G i ng t h th ng INT nh cho thi t b ngo i vi K t thc chng trnh c th dng cc ng t: Ng t INT 20h: K t thc chng trnh v tr i u khi n cho DEBUG Ng t INT 21h: C m t s hm ch c nng ring; tr c khi g i ng t INT 21h ph i n p ch c nng c th vo thanh ghi AH. Cc ch c nng c b n: AH=00h: K t thc tng t nh INT 20h AH=4Ch: K t thc v tr i u khi n v cho MS-DOS AH=31h: Tng t nh 4Ch nhng c n ghi m tr v vo thanh ghi AL, lu vo DX kch th c c a b nh trong o n m l nh CS v lu tr chng trnh trong b nh . Ng t INT 27h: K t thc ny l i th ng tr trong b nh ; DX ghi ofset c a m l nh. N u khng c n ghi chng trnh th ng tr trong b nh th khng nn dng ng t ny v n s xo chng trnh ghi trong vng nh m tr b i a ch CS:IP.

30

Hpv

HVKTMM

Chng trnh cha ghi th ng tr trong b DEBUG

nh

s b xo

i khi thot kh i

31

Hpv

HVKTMM

CHNG II. H TH NG NG T
M c ch: nh m hi u r khi ni m, c ch ho t s d ng ng t trong l p trnh h th ng N i dung chnh: Khi ni m ng t Phn lo i H th ng ng t c ng H th ng ng t m m Gi i thi u cc ng t c a MsDos ng, c a h th ng ng t

32

Hpv

HVKTMM

1. NG T V B

I U KHI N PIC 8259

1.1. M T S KHI NI M
Ng t(Interrup) l c ch b t CPU d ng cng vi c ang th c hi n chuy n sang th c hi n qu trnh ph c v ng t. B n ch t c a qu trnh ph c v ng t l qu trnh g i v th c thi cc chng trnh con ph c v ng t. Do , khi ni n ng t l hm ni n cc chng trnh ny. T t c cc chng trnh ph c v ng t u c chung c i m: th nh t l h u h t c vi t s n ( l cc chng trnh c a h i u hnh) v c php s d ng ; th hai l a ch c a cc chng trnh con ny ph i c t m t vng nh xc nh g i l b ng vc t ng t , n m trong b nh chnh. B ng vc t ng t B ng vc t ng t l b ng ch a a ch c a cc chng trnh ph c v ng t. B ng ny c 256 , cc c nh s th t l n l t t 00h, 01h, ., 08h,, 0Fh, .10h,.,FFH. S th t c a t ng trong b ng c g i l s hi u ng t. N i dung m i ch a a ch logic c a m t chng trnh phuc v ng t xc nh, cc a ch ny cn c g i l vc t ng t. C u t o c a m t b ng vc t ng t ch th c;

1.2. PHN LO I NG T
Cch 1: Phn lo i d a vo vi c kch ho t ng t: c ng t c ng, ng t m m, ng t lgic( ngo i l ) Ng t c ng: s d ng lm phng php vo / ra d li u, trong thi t b vo / ra (thi t b v t l: bn phm, my in , ng h nh p th i gian v.v..) ch ng kh i ng qu trnh vo / ra. Qu trnh ph c v ng t c ng c kch ho t b ng m t tn hi u v t l t bn ngoi. Ng t m m: l ng t c kch ho t b ng cc chng trnh g i cc chng trnh con ph c v ng t thng qua ch th INT. Ng t lgic(Ngo i l ): l ng t do chnh CPU pht ra khi n g p l i. V d php chia cho 0, trn b nh ... Cch 2: Theo s nh n bi t ng t c a CPU: ng t che c v ng t khng che c Ng t che c(Maskable): c th thi t l p CPU nh n bi t ho c khng th nhn bi t c ng t d a vo c IF. N u IF=1, CPU c th nh n bi t ng t, IF=0, CPU khng th nh n bi t c; ngha l khi c yu c u ng t CPU v n lm vi c bnh th ng Ng t khng che c( Non Maskable): CPU lun nh n bi t c khi c yu c u ng t, vi c thi t l p c IF khng nh h ng g

1.3. PIC 8259 V H TH NG NG T C NG

33

Hpv

HVKTMM

1.3.1. NG T C NG
Cc chng trnh con ph c v ng t c ng th ng c i u khi n qu trnh vo/ra v i cc thi t b vo ra chu n m c v t l. Cc trng trnh con ph c v ng t c ng c kch ho t b i cc tn hi u v t l IQR t thi t b vo ra. Cc chng trnh con ph c v ng t m m c kch ho t b i l nh INT trong h l nh c a CPU. Cc chng trnh con ph c v ng t logic cng ph c v cho ho t ng c a h th ng, nhng chng ch c kch ho t khi CPU th c hi n l nh pht sinh v th c hi n m t ngo i l no . CPU c thi t k p ng c v i cc qu trnh ng t c ng. CPU c m t u vo nh n tn hi u ng t INT, khi nh n c tn hi u ny CPU s ph n ng theo c ch ng t c ng. Trong th c t c nhi u thi t b ngo i vi yu c u c ph c v theo Phng php ng t c ng (bn phm, ng h h th ng, my in v.v..) v sinh ra nhi u yu c u ng t. Do v y c n c b i u khi n gip CPU qu n l v ph c v cc yu c u ng t, l b i u khi n ng t PIC (Programmable Interrupt Controller). C u trc h th ng ng t c ng (h.48):

H th ng ng t c ng c xy d ng trn c s hai b i u khi n ng t PIC 8259, m i PIC 8259 c th nh n 8 tn hi u yu c u ng t IRQ t thi t b vo / ra. Hai PIC ny c k t n i v i nhau theo ki u ghp t ng, k t h p ho t ng c th th c hi n c 16 yu c u ng t Q. Ch c nng c b n c a PIC 8259 : PIC 8259 l m t vi m ch i n t kh trnh c thi t k gip CPU th c hi n qu trnh ng t c ng. PIC 8259 th c hi n cc ch c nng sau: Ghi nh n c 8 yu c u ng t IRQi , i = 0,1,2,.,7. Cho php ch n v ph c v cc yu c u ng t theo m c u tin. Cung c p cho CPU s ng t tng ng v i yu c u ng t IRQi s ng t ny i di n cho a ch c a chng trnh con ph c v thi t b yu c u ng t IRQi Cho php ho c khng cho php cc yu c u ng t IRQi kch ho t h th ng ng t.

1.3.2. THI T B I U KHI N PIC 8259 V C CH HO T H TH NG NG T C NG.


C u trc bn ngoi c a PIC 8259 (h.49)
34

NG C A

Hpv

HVKTMM

C u trc bn ngoi c a PIC 8259 (h.50)

Cc kh i ch c nng: Thanh ghi yu c u ng t IRR (Interrupt Request Register) : l thanh ghi 8 bit. IRR ch a ghi nh n t t c cc yu c u ng t IRQi i ph c v . N u tn hi u IRQi = 1 th bit IRRi tng ng c t b ng 1. B gi i quy t u tin PR (Priority Resolver) : l thanh ghi 8 bt. PR xc nh m c u tin c a cc yu c u ng t. Ng t c u tin cao nh t c ch n v t vo bit tng ng trong ISR trong chu k INTA. Thanh ghi ng t ang c ph c v ISR (In service Rigister): l thanh ghi 8 bit. ISR ghi nh n cc ng t ang c ph c v . yu c u ng t IRQi no ang c ph c v th bit ISRi tng ng c t b ng 1. Kh i logic i u ki n a ra th nghim INT c n i th ng v is chn c a CPU khi INT c m c cao l i CPU l ph c v ng t khid\s logic i u khi n nh n INTA t CPU khi nh n c tn hi u INTA, PIC 8259 s cung c p s ng t ra BUS d li u cho CPU kh i m Bus l lo i 8 bit, hai h ng , 3 tr ng thi c t i u khi n ICWPCW c a vo PIC 8259 qua kh i ny xc l p ch c a 8259 s ng t v tr ng thi ho t ng c a PIC cng c a ra BUS d li u qua kh i ny. Kh i ghp t ng PIC 8259 c c c u cho php n i ghp t ng cc PIC 8259 v i nhau v kh i ho t ng c a kh i PIC ny . t ng th nh t c u ra n i tr c ti p v i CPU, g i l PIC 8259 - ch u vo IRQi c a PIC ch c n i v i u ra c a PIC 8259 ra. PIC ny c g i l PIC 8259 - th c ch ghp t ng cho php xy d ng m t h th ng ng t c ng qu n l c n 64 yu c u ng t IRQ. Kh i logic ghi / c v gi i m: Th c hi n gi i m cc t i u khi n ICW (Initialization Command Word - t i u khi n kh i ng) v OCW (Operation Command Word - t i u khi n ho t ng) qua hai l i t i u khi n ny ng i s d ng c th l p trnh xc l p ch ho t ng cho PIC. Thanh ghi IMR: l thanh ghi 8 bit, cho php t / xo m t n ng t.
35

Hpv

HVKTMM

B ng cc tn hi u CS, AO, RD, WR, v cch ghi / 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

c PIC 8259

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

C ch ho t ng c a h th ng ng t c ng: i u ki n ban u: PIC 8259 c n c kh i ng qua cc t i u khi n ICW. Sau khi cc t i u khi n ICW c n p th PIC 8259 s n sang ho t ng. M t ho c nhi u thi t b vo ra c yu c u c ph c v pht tn hi u IRQi = 1 (m c tch c c) cho PIC. PIC ghi nh n cc yu c u ng t IRQi ny b ng cch t cc bit IRRi tng ng ln 1. PIC 8259 ch n IRQi c m c u tin cao nh t ph c v PIC g i tn hi u INC cho CPU, i CPU ph c v . CPU th c hi n cc thao tc Th c hi n n t l nh c a qu trnh hi n hnh Lu a ch tr v (n i dung c a cc thanh ghi CS, IP) v thanh ghi c FLAGS vo ngn x p. G i hai tn hi u ng t INTA cho PIC. Khi PIC 8259 nh n c tn hi u INTA th 1 : bit ISRi ng v i IRQi c m c u tin cao nh t c thi t l p (ISRi = 1) v bit IRRi tng ng b xo (IRRi = 0) trong chu k INTA th nh t ny PIC 8259 khng g i cho CPU qua BUS d li u. Khi PIC 8259 nh n c tn hi u INTA th 2: PIC 8259 g i s ng t tng ng v i IRQi dang c ph c v qua BUS d li u cho CPU. CPU nh n s ng t trn c s c a s ng t ny vo v tr tng ng trong b ng vc t ng t xc nh a ch c a chng trnh ph c v ng t . CPU n p a ch chng trnh ph c v ng t vo cc thanh ghi CS, IP, v b t u th c hi n chng trnh ph c v ny Khi th c hi n xong chng trnh ph c v ng t (khi CPU th c hi n l nh IRET) th qu trnh ph c v c a CPU cng k t thc. CPU khi ph c a ch tr v vo cc thanh ghi CS, IP, khi ph c n i dung thanh ghi FLAGS v ti p t c th c hi n qu trnh v a b ng t. H th ng ng t c ng c th k t thc ph c v ng t hi n th i theo hai ch : K t thc ng t bnh th ng EOI (End Interrupt): khi PIC c t ch k t thc ng t bnh th ng EOI th CPU ph i pht l nh bo k t thc ng t EOI (qua t i u khi n OCW2 cho PIC tr c khi r i kh i chng

36

Hpv

HVKTMM

trnh con ph c v ng t. Khi bit ISRi c a ng t ang c ph c v s c d t xu ng 0.) K t thc ng t t ng AEOI (Automantic EOI): khi PIC c d t ch k t thc ng t t ng AEOI th t i chu k INTA th 2 bit ISRi c a ng t ang c ph c v s c t xu ng 0. B ng cc cnh ni trn h th ng ng t c ng c th ph c v yu c u ng t ny nh ng ph n ti p theo.

2. CC NG T C A MS-DOS DNH CHO THI T B NGO I VI


Cc chng trnh ph c v ng t c a h i u hnh MS-DOS gn b i cc s hi u ng t (t 00h-FFh). Khi c n ch c n g i s hi u ng t b i l nh g i ng t INT nh (n: s hexa); t s hi u ng t trong b ng vecto ng t s l y c a ch c a ng t trong b nh ; t c th g i th c hi n chng trnh ph c v ng t. Cc s hi u ch c nng c a MS-DOS nh sau:

2.1. CC NG T C A BIOS V ROMBIOS


Cc ng t c a h 0 n 7 ( ROM, BIOS) Ng t logic: 0 - Chia cho 0 1 - Ch t ng b c 3 - i m d ng th c hi n chng trnh 4 - Trn dung l ng Ng t c ng: 2 - NMI: ng t khng che c 5 - In mn hnh ( print screen) Ng t d i s i u khi n c a PIC 8259A S hi u ng t t 8 n F ( ROM.BIOS) n vo INTR c a VXL, cc ng t c d u * l ch y u. 8* Dao ng c a ng h ( ng t 18,2 l n/1 sec) 9* Ch phm n c a bn phm dng ch ngy gi ( INT 1Ah) v ki m tra t c c a a A Khng dng B Lin l c khng ng b ( c a n i ti p) C B ph i h p c a lien l c khng ng b D a c nh E* - a m m F My in
37

Hpv

HVKTMM

Ng t i u khi n thi t b ngoi 10 i u khi n mn hnh 11 Xc nh c u hnh c a my vi tnh 12 Xc nh kch th c b nh 13 Hnh ng c v ghi ln a 14 Vo/ra cho lin l c n i ti p 15 Hnh ng vo/ra c a cassette 16 Bn phm; b xung cho INT9h 17 My in 18 i m vo c a Basic ch a trong ROM 19 i m vo c a kh i mc n i (BOOT: a ch 7C00h) 1A Gi c a ngy. Ng t pht b i chng trnh 1B Ng t chng trnh b i CTRL-BREAK 1C i u khi n b m ng h . Ng t truy c p b ng cc thng s 1D B ng cc thng s mn hnh c trong ROM (dng kh i pht kh i i u khi n 6845) 1E B ng cc thng s c a a 1F B ng cc s li u c a cc k t ph .

2.2. CC NG T C A DOS (G I CC CH C NNG)


20 K t thc chng trnh, tr i u khi n cho DOS 21 G i cc ch c nng DOS (ch s ch c nng trong AH) 22 i m k t thc chng trnh 23 i m d ng kh n c p 24 i m d ng khi c l i 25 c tr c ti p trn a v i a ch tr c ti p 26 Ghi tr c ti p ln a v i a ch tr c ti p 27 t ch th ng tr c a m t chng trnh 28 3F Cc ng t dng bn trong chng trnh. 67 Ng t i u khi n kh i nh .

2.2.1. CC CH C NNG C A NG T INT 21H C A DOS


Ring ng t INT 21h c a DOS cho php truy c p t i 94 ch c nng (function) tnh t i phin b n 3.0 trong c 13 ch c nng c dng bn trong
38

Hpv

HVKTMM

DOS, cn 81 ch c nng c th g i c t m t chng trnh s d ng. Tr c khi g i l nh ng t INT 21h, s hi u ch c nng ph i n p vo thanh ghi AH c a vi x l v c th m i ch c nng ny cn c s hi u ch c nng con n p vo AL (xem chng 5). Danh sch cc ch c nng c a ng t INT 21h nh sau: S hi u ch c nng Ch c nng 00h K t thc chng trnh 01h Nh p 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 tr c ti p t bn i u khi n 07h Vo tr c ti p t bn i u khi n khng a ra mn hnh 08h Vo t bn i u khi n khng a ra mn hnh 09h In 0Ah Vo t bn phm b nh m 0Bh Ki m tra tr ng thi c a n v vo 0Ch Xa b m bn phm 0Dh H i ph c a 0Eh Ch n a 0Fh M t p 10h ng t p 11h Tm s li u vo u tin trong th m c 12h Tm s li u vo th hai 13h Bi b t p 14h c n i ti p 15h Ghi n i ti p 16h T ot pm i 17h Thay i tn t p 18h Bn trong DOS 19h c ch s a hi n hnh 1Ah Ch a ch c a b m c a a (DTA) 1Bh Cc tin t c v b ng cc t p (FAT) 1Ch Tin t c c a b ng cc t p c a 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 cm tt p Ghi m t t p c kch th c m t t p Kh i pht vng ghi c ch n l a trong m t FCB Kh i pht vct ng t T o m t ti p u m ng (segment) m i c a chng trnh (PSP) c nhi u kh i ghi Ghi nhi u kh i, CX=0: thay i kch th c m t t p Phn tch tn c a t p c ngy trong CX:DX Ghi ngy trong CX:DX

40

Hpv

HVKTMM

CHNG III. L P TRNH CHO CC THI T B VO RA


M c ch: Hi u c c u trc, nguyn l ho t ng c a cc thi t b vo ra thng d ng Trn c s , l p trnh cho cc thi t b ny N i dung: L p trnh bn phm o C u trc v nguyn l ho t ng o L p trnh bn phm L p trnh cho chu t o C u trc, ho t ng c a chu t o L p trnh L p trnh mn hnh L p trnh my in...

41

Hpv

HVKTMM

1. L P TRNH BN PHM
1.1. C U TRC V NGUYN L HO T NG C A BN PHM
(B sung ph n c u t o v nguyn l ho t ng) C 2 lo i bn phm: Bn phm i u khi n tr c ti p: t phm, th ng t bn t ng ho dng my vi tnh Bn phm thng th ng: ch a vi x l v b nh m; c nhi u phm n Cc nhm phm: Cc phm m ASCII( American national Standard Code Infomation Interchange).... Trong bn phm c m t vi x l (8048 cho PC XT, 8042 cho PC AT) t o m qut v m ASCII khi m t phm nh n v th . Cn c b nh m ghi m qut tr c khi truy n vo CPU. B i u khi n bn phm c thanh ghi i u khi n, thanh ghi tr ng thi CPU ghi l nh i u khi n ho c c thng bo tr ng thi (cc c ). Thanh ghi m s li u ghi d li u a vo/ra. C m t s lo i bn phm s d ng cho IBM PC. Bn phm chu n c 83 phm; m t s lo i m r ng s d ng 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 v i cc k t hi n th ASCII v cc k t i u khi n bao g m: cc ch ci, cc ch s , cc d u cu, d u s h c v m t s bi u t ng c bi t; cc phm i u khi n nh: ESC, Enter, Backspace, Tab. Cc phm ch c nng: F1-F10 (ho c F1-F12 v i cc phm m r ng), cc phm mi tn, cc phm Home, PgUp, PgDn, End, Ins, Del. Cc phm ny th ng c dng trong chng trnh th c hi n ch c nng c bi t. Cc phm d ch: Shift tri, Shift ph i, Caps Lock, Ctrl, Alt... Cc phm ny th ng dng k t h p v i cc phm khc. M Scan: M i phm trn bn phm c gn m t s duy nh t g i l m scan c a phm. Khi m t phm c nh n, vi m ch bn phm g i m scan tng ng n CPU. Gi tr cc m scan b t u t 1. phn bi t m t phm nh n c nh , vi m ch phm s g i m t m m i b ng m scan c c ng 80h (128) g i l m k t thc. V d m scan c a ESC l 1h th m k t thc c a n l 81h. Khi nh n t h p cc phm s thu c m scan v m ASCII khc. B m bn phm: bn phm c m t b nh m lu tr cc phm nh n nhng cha c c b chng trnh. M i phm nh n c ch a trong m t t v i: byte cao ch a m scan; byte th p ch a m ASCII n u l phm ASCII ho c ch a 0 n u l phm ch c nng. M t phm d ch khng c lu trong b m; khi phm d ch k t h p v i cc phm khc s t o ln m t m scan t h p v c lu vo b m.
42

Hpv

HVKTMM

Cc phm c lu tr trong b m theo c u trc hng i (Queue). N u c yu c u nh p phm m b m r ng, h th ng s i cho n khi m t phm c nh n. Khi b m y, n u nh n phm, my tnh s pht ti ng ku bo l i. Ho t ng: Khi nh n m t phm v chng trnh thi hnh ang c n; ti n trnh nh sau: 1. Bn phm g i ng t 09h n CPU yu c u trao i tin 2. Chng trnh ph c v ng t 09h c t c ng vo/ra v ch a vo trong b m. 3. Chng trnh c th s d ng cc ng t c a h i u hnh c cc gi tr ny

1.2. CC NG T DNG CHO BN PHM


B ng cc ng t bn phm: Ng t Ngu n g c INT 09h T thi t b bn phm Do chng trnh INT 16h ROM-BIOS INT 01Bh ROM-BIOS INT 21h DOS INT 23h DOS Cng d ng Bo bn phm yu c u trao i tin Yu c u ph c v bn phm T o ng t khi c t h p Ctrl-c Yu c u ph c v bn phm Yu c u x l ng t Ctrl-c

Ng t INT 9h Sinh ra do nh n phm, c a vo CPU qua vi m ch x l ng t PIC 8259 (ng t c ng); yu c u h vi x l 86 trao i tin Ng t INT 16h Thu c ROM-BIOS, thu c chng trnh vo ra c s ghi trong ROM. K t thc chng trnh, tr i u khi n v cho chng trnh tr c , khng tr v DOS Cc hm ch c nng Ch c nng M t 00h c k t bn phm ti p theo Tham s vo:AH=00h Tham s ra: AH=m qut c a phm; AL=m ASCII c a phm 01h c v ki m tra s s n sng c a m t phm. S d ng c ZF: 1 cha s n sng, 0: s n sng( c m t phm n) Tham s vo: AH=01h Tham s ra: AH=m qut, ZF=0; AL=m ASCII 02h c tr ng thi phm Shift hay ki m tra tr ng thi m t s phm i u khi n v m t s ch vo c a phm

43

Hpv

HVKTMM

03h

04h 05h

06-0Fh 10h 11h

12h

Tham s vo: AH=02h Tham s ra: AH=tr ng thi phm Shift v i cc bt tr ng thi: bit 7 = 1( phm Insert c nh n); bit 6 = 1( phm Caps Lock c nh n); bit 5 = 1( phm Num Lock nh n); bit 4 = 1( phm Scroll nh n); bit 3 = 1( phm Alt nh n); bit 2 = 1( phm Ctrl nh n); bit 1 = 1( phm d ch tri nh n); bit 0 = 1( phm d ch ph i c nh n) tt c g phm v th i gian tr Tham s vo: AH=03h; AL=05h; BL=v n t c g t ng( v i 00h:30l n/s; 01h:26.7l n/s; ...); BH=th i gian tr ( v i 01h: 500ns; 02h:750ns; 03h:1000ns) Tham s ra: khng c Dnh ring Ghi m c a m t phm vo b nh m Tham s vo: AH=05h; CH=m qut c a phm; CL=m ASCII Tham s ra: AL=00h( ghi); AL=01h( b m y) Dnh ring c bn phm m r ng Tham s vo: AH=10h Tham s ra: AH=m qut c a phm; AL=m ASCII c tr ng thi c a bn phm m r ng Tham s vo: AH=11h Tham s ra: ZF=1( khng c hnh ng); ZF=0( c hnh ng); AH=m qut c a phm; AL=m ASCII c tr ng thi m rng c a phm Shift Tham s vo: AH=12h Tham s ra: AH=tr ng thi c a Shift (v i cc bit m t trong ch c nng 02h); AL=tr ng thi Shift m r ng: bit 7 = 1( SysReg c nh n); bit 6 = 1( Caps Lock c nh n); bit 5 = 1( Num Lock c nh n); bit 4= 1( Scroll Lock c nh n); bit 3 = 1( Alt ph i c nh n); bit 2=1( Ctrl ph i c nh n); bit 1 = 1( Alt tri c nh n); bit 0 = 1( Ctrl tri c nh n)

Ng t INT 21h( c a DOS) v i cc hm cho bn phm So v i INT 16h c a ROM-BIOS, INT 21h c c i m: Th c hi n ch m hn C th a vo/ra tr c ti p mn hnh m khng qua b nh C th hi n k t a vo/ra mn hnh Cc ch c nng:

m c a bn phm

44

Hpv

HVKTMM

Ch c nng 01h 06h

07h

08h 0Ah

0Bh

0Ch

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 tr c ti p t bn i u khi n, c in ra mn hnh Tham s vo: AH=06h, DL=m ASCII c a k t mu n a ra, DL=FFh n u mu n a k t vo t bn phm Tham s ra: AL=m ASCII c a phm nh n Vo tr c ti p t bn i u khi n, khng in ra mn hnh Tham s vo: AH=07h Tham s ra: AL=m ASCII c a phm nh n Vo cc k t t b m, khng a ra mn hnh Tham s vo: AH=08h Tham s ra: AL=m ASCII c a phm nh n c vo m t chu i cc k t t bn phm, ghi b m, c a ra mn hnh, t i a 254 k t Tham s vo: AH=0Ah Tham s ra: m c a chu i k t c a vo b nh c a ch DS:DX c v ki m tra tr ng thi c a bn phm Tham s vo: AH=0Bh Tham s ra: AL=m ASCII c a phm nh n n u c, n u khng AL=0; AL=FF n u c t nh t 1 phm nh n Xo b m bn phm v c bn phm Tham s vo: AH=0Ch, AL=m t trong cc ch c nng c bn phm trn (01h, 06h, 07h, 08h, 0Ah) Tham s ra: AL=m ASCII c a phm nh n tng ng v i cc ch c nng ph c a AL trong tham s vo

1.3. L P TRNH PH C V BN PHM S D NG NG T 1.3.1. QUY T C CHUNG


Khi s d ng cc ng t c a h i u hnh l p trnh ph c v bn phm nhn chung cc chng trnh u theo ti n trnh sau: N p s hi u c a hm ch c nng vo thanh ghi AH, s hi u hm ch c nng con vo AL v cc tham s vo tng ng v i m i hm ch c nng vo cc thanh ghi

45

Hpv

HVKTMM

G i ng t tng ng dung cho phm: th ng dng ng t INT 21h c a DOS ho c INT 16h c a ROM BIOS Cc thng tin tr ng thi sau khi th c hi n c lu tr nh cc tham s ra

1.3.2. M T S V D
Trong m i v d g m cc b c: M t , v lu thu t ton Ex1: Nh p vo t bn phm m t k t , a ra mn hnh k t v cc k t khc c m tng d n k t k t Lu Code: MOV AH, 01H INT 21H MOV BH, AH ;chuy n m qut vo thanh ghi BH MOV BL, AL ;chuy n m ASCII vo BL PRINT: MOV AH, 02H MOV DL, BH ;chuy n m ASCII vo DL in INT 21H INC BH INC BL CMP BL, FFH ;so snh BL v i FFh JLE PRINT ;K t thc chng trnh BT vi t ctr s d ng MASM bin d ch v ch y Ex2: vi t chng trnh ki m tra tr ng thi s n sng c a phm n u c k t s nh y t i chng trnh a ra mn hnh; n u cha th ch nh n phm MOV AH, 01H INT 16H ;g i ng t 16 ki m tra JNZ CHECK ;nh y n ph n ki m tra n u c k t MOV AH, 00H INT 16H

1.4. L P TRNH TR C TI P CHO BN PHM


Khng s d ng ng t INT 16h ho c INT 21h c a h i u hnh. Th c ch t c a vi c l p trnh tr c ti p l vi t cc chng trinh can thi p tr c ti p ph n c ng tng t nh cc chng trnh con ph c v ng t.

1.4.1.

C I M C A KH I I U KHI N BN PHM

M t s lo i my nh PC XT v PC Portable c b i u khi n bn phm l vi x l 8048 v i cc a ch c ng: C ng 60h, c ng ghi s li u, ghi m qut. C ng 61h, c ng tr ng thi, ghi tr ng thi c a bn phm
46

Hpv

HVKTMM

My PC AT c trang b b i u khi n l vi x l 8042 v i cc c ng nh sau: C ng 60h: l c ng d li u, s d ng ghi m t bn phm ho c t CPU. CPU ph i a l nh c c ng IN AL, 60h bi t phm no c nh n. C ng 64h: l c ng i u khi n v tr ng thi v i cc l nh t CPU: Ghi l i i u khi n: OUT 64h, AL (ho c OUT DX, AL - v i i u ki n n p 64h vo DX) i u khi n ho t ng bn phm. C th nh sau:
0 1: bi n i m qut thnh gi tr c a PC 1: cho php bn phm AT ho t ng 1: c m bn phm ho t ng Cho php/ c m ghi . Gi ng Insert Dng cc 0: c m 1: cho php ng t c a thi t b ph 0: c m 1: cho php bn phm a yu c u ng t

V i t h p cc bit 0-6 c a thanh ghi i u khi n s thu c t p h p cc l nh c a bn phm AT; m t s l nh ph bi n: M l nh M t 20h t byte l nh vo thanh ghi m ra 60h Vi t byte l nh vo c ng 60 AAh T ki m tra; k t qu 55h c ng 60h n u khng l i ADh C m bn phm ho t ng C0h c c ng vo t i c ng 60h D0h c n i dung c a c ng xu t t i c ng 60h c tr ng thi bn phm: IN AL, 64h (ho c IN AL, DX - v i i u ki n n p 64h vo DX). L i i u khi n tr ng thi cho bi t hi n tr ng ho t ng c a bn phm. nh d ng nh sau:
0: sai s l 1: ch n 1: c l i nh n tin qu th i gian 1: c l i trong khi truy n tin 0: keyboard b kho. 1: ch d li u l l nh 0: ch s li u 1: t ki m tra xong 0: b t ngu n or xo 0: b m vo r ng 1: c s li u 0: b m ra r ng 1: c s li u

1.4.2. QUI T C CHUNG C A L P TRNH TR C TI P BN PHM


Nhi m v : i u khi n bn phm ho t ng (c m, cho php, t t c tr , t c truy n) Trao i d li u v i kh i i u khi n bn phm qua c ng 64h Trao i d li u v i bn phm qua c ng 60h D li u trao i c th l: cc l nh( ghi ra), tr ng thi( c vo), s li u c a m( m qut, ASCII) Thao tc ch y u: 1. Gn a ch c ng cho thanh ghi DX 2. c tr ng thi c a bn phm( vo AL): IN AL, 64h 3. Ki m tra v ch tr ng thi s n sng trao i d li u c a bn phm TEST AL, tr ng thi c n( AL ch a tr ng thi c vo; tr ng thi c n l m t s tng ng v i thanh ghi tr ng thi trnh b y). S d ng TEST th n i dung c a AL khng thay i sau khi so snh C th s d ng CMP AL, tr ng thi c n (nhng n i dung m i c a AL sau khi th c hi n l nh s l hi u s c a AL v tr ng thi c n)
47

Hpv

HVKTMM

JNZ a ch l nh nh y t i (th ng l l nh c tr ng thi ch tr ng thi s n sng) Trao i d li u: s d ng l nh: OUT a ch c ng, AL ( a d li u t CPU ra bn phm hay kh i i u khi n- th ng l cc l nh i u khi n) IN AL, a ch c ng ( c d li u t b m vo CPU)

1.4.3. CC V D
V d 1: vi t chng trnh th c hi n vi c c m ng t, c, ch tr ng thi s n sng c a bn phm v c m bn phm ho t ng M l nh nh sau: CLI ;c m ng t MOV CX, 0FFFFh ;n p s l n l p vo CX WAIT: IN AL, 64h ; c tr ng thi t i c ng 64h TEST AL, 00000010h ;ki m tra b m vo b y? LOOPNZ WAIT ;ch b m y MOV AL, 0ADh ;g i m l nh c m phm ho t ng OUT 64h, AL STI ;cho php ng t tr l i INT 20h V d 2: vi t chng trnh ghi byte s li u hay l nh vo c ng 60h M l nh nh sau: MOV CX, 40h ;offset c a o n nh s li u 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 EXIT: INT

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 20h

49

Hpv

HVKTMM

2. L P TRNH CHO CHU T


2.1. C U TRC V HO T 2.1.1. C U T O V HO T NG C A CHU T NG C A CHU T

Bng xoay b ng kim lo i b c cao su. Khi di chu t, bng truy n chuy n ng vo hai thanh nh X, Y t vung gc v i nhau. Khi bng xoay, hai tr c X, Y xoay theo lm cc a g n v i tr c cng xoay theo. Trn a c khe h cho nh sng c a m t phtdit truy n qua t o thnh m t xung i n b c m bi n. S xung i n ny c s l ng khc nhau (theo s vng c a a) v t c khc nhau (theo t c quay c a a). My tnh s c cc xung trn v ch th to X, Y thnh v tr c a con tr (mi tn trn mn hnh).

2.1.2. M CH GHP N I CHU T


Chu t c ghp n i trao i tin v i my tnh thng qua c ng n i ti p (th ng l COM1) Tin c truy n theo gi v i cc tham s : v n t c truy n 1200 baud(xung/s); s bit s li u trn m t l i tin 7; s bit kh i pht 1; s bit d ng 1; khng c ki m tra ch n l . Trong kho ng th i gian xc nh, chu t g i nh ng thng tin v v tr con tr , tr ng thi c a phm nh n. D li u c g i d i d ng ba gi tr 7 bit, c t p h p trong m t gi v i cc bit b t u v bit d ng. Gi tr u tin tng ng v i tr ng thi c a phm nh n v ch a hai bit cao c a cc to : Bit 6: 1 Bit 5: Nm nh n ph i (0: nh ; 1: nh n) Bit 4: Nm nh n tri (0: nh ; 1: nh n) Bit 3-2: Hai bit cao c a to Y Bit 1-0: Hai bit cao c a to X Hai byte ti p theo l 7bit th p c a to X, Y

2.1.3. I U KHI N CHU T


i u khi n chu t b i ng t INT33 v i nhi u ch c nng khc nhau C hai cch i u khi n chu t: Ci t qua m t l nh DEVICE = MOUSE trong file CONFIG.SYS c a MS-DOS i u khi n b ng nh ng chng trnh th ng tr c kh i pht sau khi b t ngu n nui

2.1.4. MN HNH O CHO CHU T


L vng di n tch trn mn hnh m khi con tr trong th s ki n kch chu t s c hi u l c. Khi l p trnh cho chu t, i u quan tr ng l c n ph i xc nh

50

Hpv

HVKTMM

v tr con tr chu t trn mn hnh. thu n ti n, ta s d ng m t mn hnh o; kch th c c a mn hnh o tu theo t ng ch c a mn hnh

Ch Kch th c mn hnh o 00-07h 640x200 0D-0Eh 640x200 0F-10h 640x350 11h-12h 640x480 13h 640x200 Khi chuy n t ch ho sang vn b n ph i chia 8 (v m i dng v m i c t ng v i 8 i m); ng c l i ph i nhn 8

2.2. NG T DNH CHO CHU T


Nh ng chng trnh i u khi n chu t b t u b ng vi c ki m tra b i u khi n chu t ci t cha. S d ng ch c nng 00h kch ho t N u chu t k t n i, AX ch a gi tr tr v FFFFh, n u gi tr khc th cha c chu t no k t n i BIOS c ng t INT 33h m b o cho ho t ng c a chu t v i cc hm ch c nng m t trong b ng sau: Ch c nng M t 00h Kh i ng v c tr ng thi chu t 01h Hi n th con tr chu t 02h D u con tr chu t 03h c v tr v tr ng thi cc phm chu t 04h Thay i v tr con tr chu t 05h Tr ng thi nh c a nm i u khi n chu t 06h Tr ng thi nh n c a nm i u khi n chu t 07h Xc nh c t c c i v c t c c ti u c a chu t 08h Xc nh hng c c i v hng c c ti u c a chu t 09h Xc nh d ng con tr chu t trong ch ho 0Ah Xc nh d ng con tr chu t trong ch vn b n 0Bh c kho ng cch d ch chuy n c a chu t 0Ch Ci t chng trnh x l chu t 0Dh Kch ho t s m ph ng c a bt ch sng 0Eh Hu b s m ph ng c a bt ch sng 0Fh Xc nh t s mickey/pixel 11h t vng c m cho con tr 13h t ng ng cho v n t c 14h Thay chng trnh x l chu t 15h Xc nh kch th c vng m cho tr ng thi chu t 16h Ghi l i tr ng thi c a b i u khi n chu t 17h Khi ph c tr ng thi chu t 18h Ci t chng trnh x l tu ch n
51

Hpv

HVKTMM

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

c a ch chng trnh x l tu ch n t nh y cho chu t c nh y chu t t t n s ng t c a chu t t s trang mn hnh c s trang mn hnh Lm ng ng chng trnh i u khi n chu t Kh i ng l i chng trnh i u khi n chu t Kh i t o l i chng trnh i u khi n chu t t ngn ng s d ng c s ngn ng s d ng Xc nh lo i chu t, s yu c u ng t, phin b n

2.3. L P TRNH CHO CHU T 2.3.1. KCH HO T V XC NH LO I CHU T

2.3.1.1. CC CH C HM NNG Kh i t o: 00h: Kch ho t chng trnh i u khi n v ki m tra xem c chng trnh i u khi n ci t Tham s vo: AH = 00h Tham s ra: AX = FFFFh n u ci t; 0000h ng c l i BX: ch a s phm c a chu t, ph i g i ch c nng ny tr c khi g i cc ch c nng khc Ng ng v kch ho t l i: AH=1Fh: lm m t tc d ng c a chng trnh i u khi n chu t v cho bi t a ch c a chng trnh i u khi n chu t tr c ; cn bi t c l i (AX=FFFFh) hay khng (AX=001Fh) Ch c nng 20h: Kch ho t l i chng trnh i u khi n chu t m 1Fh lm m t tc d ng Ch c nng 21h: Kh i t o l i chng trnh i u khi n chu t, thi kch ho t cc chng trnh x l ci t Xc nh lo i chu t: ch c nng 24h Tham s vo: AX=0024h Tham s ra: BH=s l n c a th h BL=s nh c a th h CH=ki u chu t (01:chu t song song; 02:chu t n i ti p; 04:chu t InPort; 08:chu t PS/2; 10h:chu t HP) CL=s hi u ng t c ng (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 ho t chu t MOV AH, 00h INT 33h ;2. Hi n chu t MOV AH, 01h INT 33h ;3. n chu t MOV AH, 02h INT 33h ;4. Hi n chu t MOV AH, 01h INT 33h ;5. Hu kch ho t MOV AH, 1Fh INT 33h ;6. Hi n chu t -> v n khng c co tr v chu t cha kch ho t MOV AH, 01h INT 33h ;7. Kch ho t l i MOV AH, 20h INT 33h ;8. Xc nh lo i chu t MOV AH, 24h INT 33h INT 20h

2.3.2. TR NG THI CHU T


2.3.2.1. CC HM CH C NNG V TR NG THI CHU T c tr ng thi: 03h Tham s vo: AH=03h Tham s ra: BX: ch cc phm nh n (D0=1:phm tri; D1=1: ph i; D2=1:phm gia) CX=X: to ngang c a mn hnh o DX=Y: to d c c a mn hnh o C t tr ng thi chu t: 16h C t tr ng thi chu t vo vng m c a chng trnh g i t i a ch ES:DX Khi ph c tr ng thi c c a chu t: 17h
53

Hpv

HVKTMM

c l i tr ng thi c t a ch ES:DX c kch th c vng m ghi tr ng thi chu t: 15h Tham s ra: BX=s byte t t n s ng t c ng c a chu t: 1Ch tt ns ph n c ng c a chu t c v tr hi n th i v tr ng thi phm nh n truy n tham s cho cc chng trnh i u khi n chu t. Tham s vo: AH: 1Ch BX=t n s (D0=1:khng ng t; D1=1:cho 30ng t/s; D2=1: cho 50ng t/s; D3=1: 100; D4=1: 200) 2.3.2.2. CHNG TRNH V D Chng trnh kh i t o chu t, c tr ng thi hi n th i c a chu t, c t tr ng thi hi n th i, khi ph c tr ng thi hi n th i, c tr ng thi hi n th i. C th vi t v ch y chng trnh trn Debug v ch y t ng o n l nh. M l nh nh sau: MOV AH, 00h ;Kch ho t chu t INT 33h MOV AH, 01h ;Hi n chu t INT 33h MOV AH, 03h ; c tr ng thi INT 33h ;c a tr chu t MOV AH, 16h ;C t tr ng thi MOV CX, 012Eh MOV ES, CX; Gn tham s MOV DX, BX INT 33h ;Khi ph c tr ng thi chu t vng nh khc MOV AH, 17h MOV CX, 1500h MOV ES, CX MOV DX, 0130h INT 33h ; c l i tr ng thi tr chu t MOV AH, 03h INT 33h INT 20h

2.3.3. I U KHI N CON TR CHU T


2.3.3.1. CC HM CH C NNG V CON TR CHU T Trang mn hnh ch a chu t: t trang mn hnh ch a chu t:ch c nng 1Dh; s hi u trang trong thanh ghi BX

54

Hpv

HVKTMM

c trang mn hnh: ch c nng 1Eh; s hi u trang c ra ch a trong thanh ghi BX Xc nh hnh dng con tr : Hnh dng con tr c th thay i theo chng trnh i u khi n; cng c th thay i theo chng trnh ng d ng; tu ch mn hnh v lo i con tr (c ng ho c m m) m c hnh d ng v kch th c con tr khc nhau Trong ch vn b n: Th ng hi n con tr d i d ng hnh kh i (gi ng con tr vn b n) con tr c ng Chng trnh ng d ng ch c th thay i dng b t u v dng k t thc c a con tr Kch th c con tr ph thu c vo ma tr n k t hi n th i v ch mn hnh K thu t t o con tr m m (b ng chong trnh) ph i s d ng: Hai byte k t v thu c tnh trong RAM mn hnh Thanh ghi m t n (che) mn (Screen Mask) 16bit Thanh ghi m t n (che) con tr 16bit Chng trnh i u khi n chu t ph i xc nh l i hnh d ng con tr m i khi con tr thay i v tr trn mn hnh. Qu trnh nh d ng con tr k t h p cc y u t trn theo cc b c: M k t v byte thu c tnh k t h p v i Screen Mask theo php AND K t qu c k t h p v i Cursor Mask cho hi n ln mn hnh C b n kh nng chnh c a d ng con tr : Con tr l m t k t c bi t v i m t mu c bi t Con tr l m t k t c bi t nhng mu thay i khi con tr ln k t Con tr l m t k t c bi t nhng mu k t thnh m t bi n th khi con tr ln k t Con tr trong ch ho : ch c nng 09h C m t b ng nh trong RAM g m 64byte (32byte u c AND v 32byte sau c OR v i m u c a con tr hi n th i) C n ph i a vo: Kho ng cch t i m lm chu n t i mp tri c a b ng vo thanh ghi Kho ng cch t i m lm chu n t i mp ph i c a b ng vo thanh ghi Con tr trong ch vn b n: ch c nng 0Ah C n ph i a vo: Ki u con tr vo thanh ghi BX (0: m m; 1: c ng) M t n AND v i con tr m m ho c dng b t u - v i con tr c ng vo CX M t n XOR v i con tr m m ho c dng k t thc - v i con tr c ng vo DX Hi n v d u con tr : Hi n con tr : ch c nng 01h Con tr hi n ln mn hnh khi b
55

m trong c gi tr 0

Hpv

HVKTMM

Chng trnh i u khi n chu t theo di chuy n ng c a chu t ngay c khi khng hi n trn mn hnh; ch c nng ny ch th c hi n vi c hi n ln mn hnh t i v tr c a th i i m hi n t i D u con tr ; ch c nng: 02h Con tr khng hi n ln mn hnh khi b m trong c gi tr -1 Khi g i ch c nng ny, con tr khng hi n nhng chng trnh i u khi n v n theo di v tr c a con tr Ch : S l n g i ch c nng 01h v 02h ph i m b o m t t l nh nhau; th ng g i 01h u chng trnh v 02h cu i chng trnh. N u chng trnh ghi tr c ti p RAM mn hnh th s l n g i ph i nhiu hn v: Con tr s bi n m t n u b ghi b i m t k t khc K t s khi ph c khi con tr r i sang v tr m i V tr con tr : n v l Mickey (1mickey = 1/200 inch) Cc to c tnh v i mn hnh o: Ch c nng 00h t ph m vi di chuy n con tr trong ton b mn hnh Ch c nng 04h xc nh v tr m i; 07h(gi i h n tr c X); 08h(gi i h n tr c Y) V tr con tr c th c c cng v i tr ng thi nh n b ng ch c nng 03h Xc nh v tr m i: 04h: C n a to X vo CX; to Y vo DX Cho php chuy n v tr m khng c n di chuy n chu t Xc nh ph m vi di chuy n con tr : Theo to X: ch c nng 07h c n n p to min vo CX, max vo DX Theo to Y: ch c nng 08h c n n p to min vo CX, max vo DX t vng c m chu t: 10h C m chu t di chuy n trong vng di n tch: To gc cao bn tri (CX=X; DX=Y) To gc th p ph i (SI=X; DI=Y) Khi di chuy n vo vng c m, con tr s bi n m t. C th b vng c m b ng ch c nng 01h ho c 00h Xc nh kho ng cch d ch chuy n: ch c nng 0Bh c kho ng cch gi a v tr hi n th i v v tr khi g i ch c nng ny l n tr c (v tr c c ngay tr c ) CX: ch a kho ng cch ngang DX: ch a kho ng cch d c 2.3.3.2. Chng trnh v d V tr con tr chu t MOV AX, 0 MOV BX, 0
56

Hpv

HVKTMM

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

CX, 0 DX, 0 AH, 00h 33h AH, 03h 33h AH, 04h CX, 0278h DX, 0000h 33h AH, 03h 33h AH, 07h CX, 0050h DX, 0100h 33h 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 d ng con tr chu t:

57

Hpv

HVKTMM

MOV MOV MOV MOV

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

MOV AH, 01h INT 33h MOV MOV MOV MOV INT MOV MOV MOV MOV INT AH, 0Ah BX, 0000h CX, 00AAh DX, 0055h 33h 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 NH N
2.3.4.1 CC HM CH C NNG Xc nh s l n nh n m t phm: 05h c tr ng thi trong thanh ghi BX: v i phm tri (D0=1), phm ph i (D1=1) Tham s ra: AX: tr ng thi cc phm c a chu t t i gi ng BX tham s vo BX: s l n phm c nh n t khi b t u g i ch c nng ny l n tr c CX: ch a to X c a phm trong mn hnh o DX: ch a to Y c a phm trong mn hnh o
58

Hpv

HVKTMM

Xc nh s l n nh m t phm: ch c nng 06h Cho bi t m t phm c nh bao nhiu l n t khi g i ch c nng ny l n cu i; cng cho bi t v tr con tr t i th i i m phm c nh l n cu i Tham s vo: AX=0006h BX=s hi u phm (0 tri, 1 ph i, 2 gi a) Tham s ra: AX=tr ng thi t t c cc phm nh n c a chu t (=01 phm tri b n, 02 phm ph i b n, 04 phm gi a b n) BX=s l n phm nh n c nh k t l n nh tr c khi g i ch c nng ny CX=X t i th i i m c nh l n cu i DX=Y t i th i i m c nh l n cu i 2.3.4.2. CHNG TRNH V D

2.3.5. T C

DI CHUY N C A CON TR CHU T

2.3.5.1. CC HM CH C NNG Ch c nng 1Ah: t s tng quan gi a mickey v i m nh: Tham s vo: CX=s l ng mickey tng ng v i 8 i m chi u ngang DX=s l ng mickey tng ng v i 8 i m chi u d c Tr c khi t, sau khi g i 00h gi tr m c nh l 8mickey ngang v 16 mickey d c t ng ng tng g p i t c con tr chu t: 13h Khi t c con tr chu t v t qu m t ng ng no ( t trong DX), t c di chuy n s c tng g p i. Mu n ngn s tng g p i c n t ng ng c gi tr l n t nh y c a con tr : 1Ah K t h p cc ch c nng 0Fh v 13h, cho php t s tng ng gi a s di chuy n c a chu t v con tr chu t v ng ng tng g p i Ph i ghi cc tham s vo cc thanh ghi BX, CX, DX c nh y c a chu t: 1Bh Ng c v i 1Ah Cc tham s ra ch a trong cc thanh ghi: BX, CX, DX 2.3.5.2. CHNG TRNH V D

2.3.6. CI
2.3.6.1. CI

T CHNG TRNH X L KHI DNG CHU T


T CHNG TRNH X L S KI N

59

Hpv

HVKTMM

Khi di chuy n con tr chu t n v tr mong mu n, chng trnh i u khi n chu t s c v tr v tr ng thi c a phm chu t; t m chuy n t i l nh u tin c a chng trnh x l s ki n tng ng trong b nh th c hi n. Phm nh n c a chu t s gy ra m t ng t cho vi x l; ng t no c g i s tu thu c vo v tr c a chu t trn mn hnh (tu hnh ng m g i chng trnh x l ng t tng ng v i v tr c a tr chu t) lm c i u ny c n bi t cch ci t chng trnh x l s ki n hay x l ng t t i a ch nh mong mu n Ci t chong trnh x l chu t: ch c nng 0Ch Tham s vo: ES:DX= a ch chng trnh x l c a cc bit ch s thay i v tr c a chu t: D0, phm tri b n D1 hay nh D2, phm ph i b n D3 hay nh D4, phm gi a b n D5 hay nh D6 Thay chng trnh x l chu t: ch c nng 14h Ci t m t chng trnh x l m i nhng gi l i thng tin v chng trnh x l c Tham s vo: gi ng 0Ch Tham s ra: CX=s ki n c ES:DX= a ch chng trnh x l c Ci t chng trnh x l s ki n thay th : ch c nng 18h Cho php ci t t i 3 chng trnh x l khc nhau Cc chng trnh ny c th c g i khi x y ra m t s ki n lin quan n chu t hay bn phm( cc phm shift, ctrl, alt) Tham s vo: CX: c cc bit ghi s ki n x l chng trnh. D0-D4 gi ng 14h; D5 cho bi t phm shift b tc ng; D6 ctrl; D7 alt. Tham s ra: AX=0018h n u chng trnh c ci t; FFFFh n u cha Xc nh a ch c a chng trnh x l s ki n thay th : 19h CX ghi cc s ki n m chng trnh x l Tham s ra: ES:DX= a ch chng trnh x l CX: cho bi t l i(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 ho t chu t ;hi n con tr chu t ;ci t ctr x l chu t ; t nh n phm ph i ;offset c a ctr c n th c hi n
60

Hpv

HVKTMM

MOV ES, AX ;segment c a ctr c n th c hi n INT 33h NOP 132E:011E MOV AH, 00h ;ctr c n th c hi n MOV AL, 04h INT 10h INT 20h

61

Hpv

HVKTMM

3. L P TRNH MN HNH
3.1. C U TRC, HO T N I 3.1.1. MN HNH
Mn hnh l thi t b ra chu n. S d ng sng b n cc tia i n t p vo mn hnh ph phtpho t o ln cc i m sng. Cc cu n li tia i n t i u khi n tia i n t l ch ngang v l ch th ng lm di chuy n v tr c a tia i n t . L i G i u khi n c ng tia i n t , cho ra m nh t khc nhau c a i m sng trn mn hnh. ch vn b n: tia i n t c nh d u hnh mi tn; ch ho tia i n t c nh d u l cc i m nh Mn en tr ng: ch c m t sng i n t cho nh sng(tr ng) v t i( en) Mn m u: c 3 sng b n i n t ng v i 3 mu Red(R), Blue(B), Green(G); s tr n cc c ng khc nhau c a 3 mu ny cho ra mu t ng h p Thng tin hi n th trn mn hnh c t o ra b i m t v m ch g i l v m ch ghp n i mn hnh. H u h t cc v m ch u c kh nng hi n th trong ch vn b n v ch ho

NG C A MN HNH V BA( CARD) GHP

3.1.2. B GHP N I MN HNH


B ghp n i mn hnh i u khi n vi c hi n th nh i m trn mn hnh. Vi m ch ny th ng n m trn m t ba ph ( card) c ch a 2 kh i c b n: B nh mn hnh(b m mn hnh): Ch a thng tin hi n th , c th c truy c p b i CPU v B i u khi n mn hnh. a ch c a kh i nh ny tu thu c vo t ng lo i B ghp n i mn hnh B i u khi n mn hnh: c b nh mn hnh v pht tn hi u tng ng trn mn hnh. hi n th mu, b ghp n i pht sinh 3 tn hi u tch bi t cho cc mu c b n Red, Green, Blue; ho c t ng h p 3 tn hi u thnh m t tn hi u chung r i pht. Do c th phn mn hnh thnh hai nhm: mn hnh t ng h p v mn hnh RGB. Mn hnh t ng h p s d ng m t tn hi u t ng h p chung. Tn hi u t ng h p c ch a tn hi u b t mu (bit cao nh t c gi tr 1); n u khng c tn hi u ny mn hnh hi n th 2 mu ( en-tr ng) Mn hnh RGB: s d ng cc tn hi u tch bi t Cc lo i ba ghp n i mn hnh: MDA: B ghp n i mn hnh n s c phn gi i cao; s d ng vi x l MC 6845 CGA: B ghp n i mn hnh ho mu; i u khi n b i vi x l MC 6845 Hai ba trn c IBM cung c p cho PC u tin lo i XT MCGA: IBM trang b cho my tnh sau PS/2 HGC: Tng thch v i MDA, CGA nhng ch t l ng cao hn

62

Hpv

HVKTMM

EGA: IBM a ra, c phn gi i cao VGA: c s d ng cho th h PS/2 ....................................

3.1.3. CC CH

C A MN HNH

Tr c khi cho mn hnh ho t ng ph i vi t ch cho mn hnh K hi u 40x25 d i y ch c 40 k t trn m t dng v c mn hnh c 25 dng Cc ch mn hnh vn b n ng v i cc B ghp n i( ba, card) khc nhau: Ch c tnh Cc B a ch b Kch C ghp n i m th c ch 0 40x25 vn CGA, EGA, B8000h 2KB 8x8 b n 16 mu MCGA, (xm) VGA 1 40x25 vn CGA, EGA, B8000h 2KB 8x8 b n 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 s c EGA, VGA Cc ch Ch s ch 4 ho c a mn hnh: c tnh Lo i ba 320x200p, 4mu 320x200p, 4mu(xm) 320x200p, 4mu 160x200p, 4mu CGA, EGA, MCGA, VGA CGA, EGA, MCGA, VGA CGA, EGA, MCGA, VGA PCjr a ch B8000 Kch th c 8 C

B8000

B8000

16

B8000

16

63

Hpv

HVKTMM

9 A D E F 10 11 12 13

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

PCjr PCjr PCjr EGA, VGA EGA, VGA EGA, VGA EGA, VGA VGA VGA, MCGA

B8000 B8000 A8000 A8000 A8000 A8000 A8000 A8000 A8000

32 32 8 16 28 28 38 38KB 38KB 8x16 8x8

3.2. CC NG T V CC CH C NNG CHO MN HNH


BIOS s d ng ng t 10h ph c v mn hnh v i 23 hm ch c nng. DOS s d ng ch c nng 02h c a ngt INT 21h in ra mn hnh: Ng t Ch c nng ph c v Hnh ng mn hnh INT 10h 00h Xc nh ch mn hnh c a BIOS 01h Xc nh kch th c con tr 02h Xc nh v tr con tr 03h c v tr con tr 04h c v tr d u ch m sng 05h Xc nh tr ng thi ho t ng 06h Cu n c a s ln cao 07h Cu n c a s xu ng th p 08h c k t v thu c tnh 09h Ghi k t v thu c tnh 0Ah Ghi k t 0Bh Xc nh b ng 4 mu 0Ch Ghi i m nh 0Dh c i m nh 0Eh Ghi k t ch teletype 0Fh c ch mn hnh hi n t i

64

Hpv

HVKTMM

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

INT 21h c a DOS

Giao di n b ng mu (thanh ghi mu) Giao di n my pht k t L a ch n tu n t Ghi hu i k t Ghi c m t h p hi n th L y l i tin v tr ng thi ho t ng Gi v tm l i tr ng thi mn hnh In k t ra mn hnh, m ASCII t trong DL

3.3. L P TRNH CHO MN HNH S D NG NG T 3.3.1. NHI M V


Xc nh: lo i card ho c ch (vn b n) v i phn gi i, c ch Xc nh s hi u c a trang mn hnh Xc nh v tr v kch th c con tr (ch vn b n), nh i m (ch ho ) Xc nh kch th c c a c a s mn hnh Xc nh mu n n, vi n, mu k t hay i m nh a ra ho c c vo t mn hnh cc k t ho c i m nh

3.3.2. PHNG PHP


Phng php can thi p tr c ti p ph n c ng: ghi cc l nh i u khi n tr c ti p b i u khi n mn hnh v b nh m c a mn hnh Phng php s d ng cc ng t c a MsDOS: Ng t BIOS: s d ng ng t INT 10h Ng t c a DOS: s d ng ng t 21h

3.3.3. L P TRNH CHUNG CHO MN HNH


3.3.3.1. XC NH CH V TR NG THI MN HNH M c ch ph n ny l xc nh ch m i khi bi t lo i Card mn hnh v l a ch n ch thch h p; c ch mn hnh ang s d ng Ch c nng 00h ghi ch mn hnh: Tham s vo: AH=00h, AL=s hi u ch Tham s ra: khng c V d : Xc l p ch ch vn b n 25x80 cho mn hnh, 16 mu xm, dng card CCA ...............
65

Hpv

HVKTMM

MOV AH, 00h MOV AL, 02h INT 10h Ch c nng 0Fh: c ch mn hnh Tham s vo: AH=0Fh Tham s ra: AL=s k t trn m t dng; BH=trang ho t ng Ch c nng 1Ah: l a ch n lo i card thch h p cho mn hnh: Tr v m t m 2byte ch t h p c a card mn hnh v ch hi n th . Cho php s d ng m t trong hai ch c nng con (ch c nng con c s d ng ph i t trong AL) Ch c nng con 00h: c m c a 2byte t h p trn vo BX. N u my c hai ch nh th gi tr trong BL l tch c c (ngha l BIOS ang s d ng ch ny). N u ch c m t ch mn hnh nh , BH=0 Ch c nng 01h: tc ng ng c l i, cho php t l i ch hi n hnh. Do ch s d ng ch c nng con ny khi bi t chnh xc c n lm g. Cc m t h p cho ch c nng 1Ah c m t trong b ng sau: M t h p Card mn hnh v ch 00h Khng dng m t card no 01h MDA 02h CGA 03h dnh 04h EGA v i hi n th mu 05h EGA v i hi n th n s c 06h Kh i i u khi n ho chuyn d ng 07h VGA n s c 08h VGA hi n th mu 09h, 0Ah dnh 0Bh MCGA hi n th n s c 0Ch MCGA hi n th mu 0FFh Cha s d ng Ch c nng 1Bh gi l i tin v tr ng thi mn hnh Ch s d ng cho card EGA, VGA Tham s vo: AH=1Bh, ES= a ch b t u o n nh c a b m 64K, DI=offset c a b m Tham s ra: AL=1Bh Th c hi n ch c nng ny, BIOS s l p y b m 64K thng tin v tr ng thi mn hnh hi n hnh Ch c nng 1Ch b o v v tm tr ng thi mn hnh: Ch dng cho card VGA c a PS/2. Ch c nng ny cho php gi m i thng tin v tr ng thi mn hnh, vng d li u trong RAM, gi tr hi n t i c a m i thanh ghi i u khi n mn hnh. C 3 ch c nng con:

66

Hpv

HVKTMM

Ch c nng 00h: xem lo i tin no mu n c, b ng cch t m t ho c ba bit th p c a gi tr vo CX Ch c nng 01h: gi tin v tr ng thi mn hnh hi n t i trong b m m a ch trong BX. Nn th c hi n ch c nng ny tr c khi c nh ng thay i v ch mn hnh Ch c nng 00h: cho php khi ph c l i tr ng thi c 3.3.3.2. XC NH TRANG MN HNH

Tu t ng lo i card mn hnh khc nhau m phn gi i khc nhau, dung l ng b nh m khc nhau, nn s trang mn hnh khc nhau. Do ph i l p trnh bi t trang no ang s d ng. S trang cho cc lo i card c m t trong b ng sau: S hi u ch S trang t i a cho t ng lo i CGA EGA VGA 0-1 8 8 8 2-3 4 8 8 7 Khng dng 8 8 Ng t 05h: xc nh trang mn hnh no c s d ng: Tham s vo: AH=05h, AL=s trang (tu theo ch m t trong b ng trn) Tham s ra: khng c V d : Xc nh ch vn b n 40x25, 16 mu, trang 1 cho card VGA .............. MOV AH, 00h ;Xc nh ch mn hnh MOV AL, 01h ;Ch n ch 01 INT 10h ;G i ng t xc l p ch MOV AH, 05h ;Xc l p trang mn hnh MOV AL, 01h ;Ch n trang 01h INT 10h ;G i ng t xc l p 3.3.3.3. XC NH V TR, KCH TH C CON TR

Ch c nng 02h: d ch chuy n con tr . Vi c d ch chuy n con tr chnh l vi c ghi v tr con tr nh ng th i i m xc nh. Tham s vo: AH=02h, BH=s hi u trang, DH=dng m i (0-24) trong ch vn b n (ghi d ng hexa), DL=c t m i (0-79)trong ch vn b n d ng hexa Tham s ra: khng c Ch c nng 03h: c v tr v kch th c con tr hi n th i Tham s vo: AH=03h, BH=s hi u trang Tham s ra: DH=dng, DL=c t, CH=dng qut u, CL=dng qut cu i Cc gi tr ny c ghi trong cc thanh ghi d i d ng hexa Ch c nng 01h: thay i kch th c con tr

67

Hpv

HVKTMM

Tham s vo: AH=01h, CH=dng qut Tham s ra: khng c 3.3.3.4. XC Thay

u, CL=dng qut cu i

NH KCH TH C C A C A S MN HNH

i kch th c c a s mn hnh so v i m t v tr m c c 2 kh nng: Thay i kch th c pha trn, ngha l cu n mn hnh ln trn, khi c n l y gc d i (dng, c t ghi trong DX) lm m c v c n bi t s dng cu n ln (s dng sng c a c a s ) Thanh i kch th c pha d i, ngha l cu n mn hnh xu ng d i, khi c n l y gc trn (dng, c t ghi trong CX) lm m c v c n bi t s dng cu n xu ng Ch c nng 06h cu n mn hnh ln: Tham s vo: AH=06h, AL=s dng cu n, BH=thu c tnh dng tr ng, CH, CL=dng ,c t gc tri trn, DH, DL=dng c t gc ph i d i Tham s ra: khng c Ch c nng 07h cu n mn hnh xu ng d i: cc tham s vo ra gi ng nh ch c nng 06h. V d : Xc nh c a s mn hnh c to gc trn tri l 0527h, gc d i ph i 1527h cho mn hnh c ch 25x80 MOV AH, 00h ;Xc nh ch mn hnh MOV AL, 02h INT 10h MOV AH, 06h ;Hm cu n mn hnh ln MOV AL, 12h ;S dng cu n l 18 (1*16+2) MOV CX, 0527h ;Gc trn tri MOV DX, 1547h ;Gc d i ph i MOV BH, 42h ;N n , k t xanh l cy INT 10h

3.3.4. L P TRNH

CH

VN B N

Trong ch vn b n, cc k t c hi n th trn mn hnh d i d ng ma tr n nh i m. Trong ch ny c th i u ch nh c mu n n, mu vi n mn hnh, mu k t . Ngoi cc cng vi c l p trnh chung cho mn hnh, l p trnh trong ch vn b n cn c thm: c, ghi k t ra mn hnh, thay i kch th c k t . 3.3.4.1. GHI CH I U KHI N

3.3.4.2. XC 3.3.4.3. XC 3.3.4.4.

NH MU CHO BA CGA NH MU CHO EGA/VGA( C TH KHNG C N)

C GHI K T V I NG T INT 10H


68

Hpv

HVKTMM

Ch c nng 08h: c k t t i v tr con tr Tham s vo: AH=08h, BH=s hi u trang Tham s ra: AH=thu c tnh k t , AL=m ASCII Ch c nng 09h: hi n th k t mu t i v tr con tr Tham s vo: AH=09h, BH=s hi u trang, AL=m ASCII, CX=s l n ghi k t , BL=thu c tnh k t Tham s ra: khng c V d : chng trnh i thu c tnh c a k t t i v tr con tr thnh thu c tnh o cho mn hnh n s c ................ MOV AH, 08h ; c k t t i v tr con tr , AL ch a m ASCII XOR BH, BH ;BH=0 INT 10h MOV AH, 09h ;Hi n th k t c v i MOV CX, 0Ah ;S l n l p MOV BL, 70h ;Thu c tnh thay i INT 10h Ch c nng 0Ah: ghi k t v i thu c tnh c s n. Gi ng 09h nhng byte thu c tnh khng thay i Tham s vo: AH=0Ah, BH=s hi u trang, AL=m ASCII, CX=s l n l p Tham s ra: khng c Ch c nng 0Eh: ghi k t v d ch con tr . Gi ng 09h nhng sau m i l n ghi k t , con tr t ng d ch i m t v tr c a k t (gi ng Ms Word) Tham s vo: AH=0Eh, AL=m ASCII, BH=s hi u trang, BL=thu c tnh mu Tham s ra: khng V d : ghi m i l n 2 k t t A-N v i mu n n tng d n t xanh l cy, mu k t tng d n t ;1.Xc nh ch mn hnh MOV AH, 00h MOV AL, 02h INT 10h ;2.D ch chuy n con tr t i v tr c n in. y l dng 12, c t 40 MOV AH, 02h MOV BH, 00h MOV DH, 0Ch MOV DL, 28h INT 10h ;3. Ghi k t t i v tr con tr v i thu c tnh mong mu n MOV AH, 09h MOV AL, 41h MOV BL, 01h
69

Hpv

HVKTMM

MOV CX, 02h PRINT_LOOP: INT 10h ;G i ng t INT 10h hi u l c vi c in INC AL ADD BL, 11h CMP AL, N JLE PRINT_LOOP ;L p n u m ASCII <= m ASCII c a N ;4.K t thc INT 20h Ch c nng 13h: ghi chu i k t ra mn hnh. Ch th c hi n trn PC/AT, EGA v PS/2. C cc ch c nng con: Ch c nng con 00h: ghi chu i k t ln mn hnh, thu c tnh trong BL, khng thay i v tr con tr Ch c nng con 01h: gi ng 00h nhng chuy n v tr t i cu i chu i Ch c nng con 02h: gi ng 01h nhng thu c tnh n m trong vng m c offset trong DX Ch c nng 11h: ghi k t v i kch th c thay i. Ch c nng ny ch dng c trong BIOS cho VGA, MCGA.. Cc nhm ch c nng con nh sau: 00h-04h: thay i c ch dng ch vn b n trn VGA, MCGA, EGA 10h-14h: thay i chi u cao k t 20h-24h: thay i kch th c k t trong ch ho 30h: l y l i thng tin lin quan n c ch hi n hnh v nh ng c ch c th c c a BIOS 3.3.4.5. GHI K T DNG NG T INT 21H C A DOS Ch c nng 02h: ghi m t k t Tham s vo: AH=02h, DL=m ASCII Tham s ra: khng Ch c nng 09h: ghi m t xu k t ra mn hnh Tham s vo: AH=09h, DS:DX= a ch c a xu k t . Xu ph i k t thc b i $ Tham s ra: khng

3.3.5. L P TRNH

CH

HO

Trong ch ho , mn hnh ch v m t i m nh t i m t th i i m. Cc k t cng c hi n th theo cc i m nh c a t ng dng lin ti p cho n h t trang c a b nh mn hnh nhng khng theo t ng ma tr n i m m theo b n bit (bitmap). Ch m hn nhi u so v i ch vn b n nhng phn gi i cao hn nhi u v c nhi u th vi n ph c v ho . C ba lo i card mn hnh ph bi n: CGA: Color Graphic Adapter: B ph i ghp ho mu

70

Hpv

HVKTMM

EGA: Enhanced Graphic Adapter: B ph i ghp ho nng cao VGA: Video Graphic Adapter: B ph i ghp ho ki u ma tr n i m M t s ch cho l p trnh trong ch ho : L p trnh ch ho cng gi ng l p trnh chung nhng c i m khc bi t: m i l n a ra mn hnh m t i m; c th a k t ra mn hnh theo nguyn t c v t ng i m nh trong b n bit (bitmap) Vi c xc nh ch hi n th cng gi ng l p trnh trong ch vn b n ch khc ch s ch . Cc s hi u ch c s d ng trong b ng ch ho .

3.4. L P TRNH TR C TI P CHO MN HNH


3.2.6.1. C U TRC V NGUYN L HO T NG C A CARD MN HNH Card mn hnh i n hnh c cc kh i: Kh i i u khi n mn hnh: i u khi n ton b ho t ng c a card mn hnh. Kh i ny th ng ch a vi x l ring: MC 6845 cho CGA, 8514/A cho EGA v VGA, TI 34010, Intel 82786 cho TIGA). Kh i nh ROM: ch a cc m u k t pht cc k t . Kh i pht cc k t . Kh i i u khi n thu c tnh i u khi n pht mu. Kh i nh m RAM cho mn hnh: ghi nh v pht m i i m nh c a mn hnh. Kh i i u khi n tn hi u: pht cc tn hi u qut ngang, qut d c, tn hi u video cho ng hnh. Hai kh i quan tr ng nh t c n hi u k l p trnh i u khi n tr c ti p mn hnh l kh i i u khi n v kh i m RAM. Kh i i u khi n: Lin h v i CPU qua 4 ng dy i u khi n v 8 ng dy s li u; i u khi n ng hnh qua cc ng dy i u khi n tn hi u v nh n cc tn hi u: xo, nh p, bt sng con tr . Kh i i u khi n dng vi x l s m nh t l MC 6845 c a Motorola. C th truy c p 16K RAM mn hnh v nh n m u k t t ROM. MC 6845 c 16 thanh ghi n i. Cc thanh ghi ny c m t trong b ng sau: a ch Thanh ghi Ch s Ch c nng 3x4h Thanh ghi a ch Ch n thanh ghi ho t ng Seg Offset 00h-05h D ng ngang 0-3 Xc nh cc tham s mn 3x5h hnh ngang 06h D ng d c 4-8 Xc nh cc tham s mn hnh d c (t ng dng)

71

Hpv

HVKTMM

07h-09h 0Ah 0Bh 0Ch 0Dh 0Eh, 0Fh 10h, 11h

Ch n i B t

kh i ghp 9 u con tr 10 11 12-13 14-15 15-17

K t thc con tr a ch b t u

a ch con tr a ch bt sng

Ch n xung ng b : t l i qut hng, hng t i a Xc nh dng qut cho v tr b t u con tr Xc nh dng qut cho v tr k t thc con tr Xc nh a ch b t u cho b nh mn hnh Xc nh v tr con tr Xc nh v tr bt sng

Tu theo lo i card mn hnh s d ng m kh i i u khi n c a ch v c u trc cc thanh ghi khc nhau. D i y ch xt cho card CGA thng d ng: Thanh ghi ch n ch : a ch 3Dh, cc bit m t nh sau: Bit M t 0 Ch ch vn b n: 40 k t (0), 80 k t (1) 1 Ch ho : 0 v i cc ch khc nhau, 1 v i 320pixel 2 Lo i mn hnh: n s c (1), mu (0) 3 Tr ng thi mn hnh: t t (0), b t (1) 4 Ch ho 640 c t (1), gi tr khc (0) 5 Cho php nh p nhy (1), khng cho php (0) 6,7 Khng dng (gi tr 0) T ng h p l i cc bit trn c gi tr c a thanh ghi ch tng ng v i 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 ch n mu vi n v b ng mu: a ch 3D9h, c cc bit: Bit 0-3: cc bit BGRI cho mu vi n (theo b ng mu) Bit 4: bit tng c ng n n( ch vn b n), t t (0), b t (1) Bit 5: ch n b ng mu (ch ho ) 0 v i b ng 0, 1 vi b ng 1 Bit 6,7: khng dng Thanh ghi tr ng thi: a ch 3Dah, v i cc bit Thanh ghi ch s : a ch 3D4h, ch s 0-17 c a thanh ghi n i Thanh ghi m s li u: a ch 3D5h. B nh m RAM cho mn hnh: Mn hnh c n b nh m ghi d li u ra mn hnh theo nguyn t c nh x (m t i m nh mn hnh ng v i m t nh ). Tu thu c vo ch v phn gi i khc nhau m c n dung l ng b nh khc nhau. H u h t cc card mn hnh c c i m chung: a ch nh u tin l B000:0000 ho c A000:000 M i card c CPU dnh cho 32KB (v i MDA, CGA...) hay 256KB (v i EGA, VGA...)
72

Hpv

HVKTMM

3.2.6.2. L P TRNH TR C TI P MN HNH Nguyn t c chung: L p trnh i u khi n tr c ti p mn hnh l ghi cc l i i u khi n, cc thng s vo cc thanh ghi n i c a vi x l i u khi n mn hnh, vo b nh RAM c a mn hnh v cc thanh ghi thng d ng c a CPU. ng th i cng c n c v x l tin v tr ng thi cc thanh ghi c a kh i i u khi n, c a RAM v cc thanh ghi thng d ng. Tr c khi ghi l i i u khi n v d li u c n: Xc nh a ch c a thanh ghi c a kh i i u khi n. S li u c a thanh ghi ch s chnh l ch s thanh ghi c n trao i d li u. Xc nh d li u c n ghi theo d ng cc thanh ghi i u khi n cho c a kh i i u khi n. Tr c khi c tin v d li u, tr ng thi c n xc nh a ch c a thanh ghi c n c. Cc v d : V d 1: Ghi vo thanh ghi c a kh i i u khi n: MOV DX, address c a MC6845 ;ghi a ch c a thanh ghi ch s MOV AL, s hi u thanh ghi n i OUT DX, AL ;ghi s hi u ra JMP Short $+2 ;t m d ng m t kho ng t ng n INC DX ;tng s hi u cho thanh ghi ti p theo MOV AL, AH ;AH ch a n i dung m i OUT DX, AL ;ghi n i dung m i RET V d 2: c thanh ghi c a kh i i u khi n: MOV AL, a ch c a MC6845 ;ghi a ch c a thanh ghi ch s MOV AL, s hi u ;s hi u thanh ghi n i OUT DX, AL ;ghi s hi u ra INC DX ;tng s hi u JMP Short $+2 ;tr th i gian IN AL, DX ; c n i dung m i RET V d 3: T o c u hnh cho thanh ghi i u khi n mn hnh MOV DX, CONTR REG ;chuy n a ch thanh ghi i u khi n vo DX MOV AL, 00101101B ;cho php hi n th mn hnh OUT DX, AL ;ghi l i i u khi n ra thanh ghi i u khi n RET ;c a ch ch a trong DX V d 4: Thao tc b i u khi n video: MOV CX, 0Ch ; t gi tr l p =12 MOV BH, 0 ;b t u t thanh ghi 0 LABEL1: LODSB ;l y gi tr thanh ghi t b ng

73

Hpv

HVKTMM

MOV AH, AL ;gi tr thanh ghi chuy n vo AH MOV AL, BH ;chuy n s hi u thanh ghi vo AL CALL Vidu1 ;chuy n gi tr n b i u khi n INC BH ;s hi u thanh ghi ti p theo LOOP LABEL1 OR BL, 08h ;mn hnh b t CALL Vidu3 ; t ch m i RET V d 5: Xc l p ch vn b n MOV SI, OFFSET TEXT ; a ch offset c a b ng thanh ghi MOV BL, 0010001b ;ch vn b n CALL Vidu4 RET V d 6: Xc l p ch ho MOV BL, 00010001b ;ch ho MOV SI, OFFSET GRAPHIC ; a ch offset c a b ng thanh ghi V d 7: Xc l p trang mn hnh V d 8: Xc l p v tr con tr V d 9: Xc l p kch th c con tr V d 10: Xc nh mu V d 11: Ghi i m nh V d 12: Ghi chu i k t

74

Hpv

HVKTMM

4. L P TRNH CHO MY IN
4.1. VI M CH C NG SONG SONG
H IBM-PC c cc vi m ch c ng song song sau: 8255A cho my lo i PC XT (VXL: 8086, 8088) 82345(c thm 2 my pht xung v b ki m tra ch n l ) cho my lo i PC AT (VXL 80286) v PS/2( VXL 80386) Cc lo i PC thng th ng c t i a 4 c ng song song k hi u (LPT1, LPT2, LPT3, LPT4) C u trc c a cc c ng song song u c 3 thanh ghi. Xt 82345: Thanh ghi i u khi n: a ch l a ch c s + 2 Thanh ghi tr ng thi: a ch l a ch c s + 1 Thanh ghi d li u: a ch l a ch c s ; s d ng ghi/ c d li u cho thi t b ngo i vi Cc bit c a thanh ghi i u khi n: D0 = 1: Tn hi u Strobe i u khi n ghi d li u cho thi t b ngo i vi D1 = 1: i u khi n t ng xu ng dng sau m i dng ... Cc bit c a thanh ghi tr ng thi: D0 D1: Khng dng D2 = 0: Thi t b ngo i vi nh n d li u D3 = 0: Thi t b ngo i vi l i D4 = 1: Thi t b ngo i vi c ch n D5 = 1: Thi t b ngo i vi l i D6 = 0: Thi t b ngo i vi s n sng ho t ng D7 = 0: Thi t b ngo i vi b n C ng song song n i v i thi t b ngo i vi qua c m DB-25(25 chn) theo cc tn hi u: S 1: Tn hi u STROBE ghi d li u ra S 2-9: Tn hi u( ng) d li u t D0-D7 .....................................

4.2. L P TRNH TR C TI P CHO MY IN SONG SONG


My in song song th ng n i v i c ng vo/ra song song LPT1 ho c LPT 2 qua c m DB-25. L p trnh tr c ti p cho my in th ng th c hi n cc hnh ng: Kh i pht my in

4.2.1. KH I PHT MY IN
Ghi cc bit thch h p (vo thanh ghi i u khi n) cho c ng v my in sng ho t ng v nh n tin vo
75

chng s n

Hpv

HVKTMM

Cc bit cho c ng: cho php ng t (D4=1), a d li u ra (D5=0) Cc bit cho my in: cho php xu ng dng sau m i dng (D1=1), kh i pht (D2=0), l a ch n l i vo (D3=1) L i i u khi n l: 00011010B=8Ah. a l i i u khi n vo thanh ghi AX v ghi vo thanh ghi i u khi n( a ch l a ch c s + 2) m b o tin c y, sau khi kh i pht, c n c tr b ng cch th c hi n chng trnh tr tng ng. Chng trnh kh i pht my in nh sau: // 1. Ghi l i i u khi n ra thanh ghi i u khi n cho c ng v my in // Tnh a ch c a thanh ghi i u khi n MOV DX, 0378 ADD DX, 2 // Lu l i i u khi n vo thanh ghi AL MOV AL, 8A // Ghi l i i u khi n ra thanh ghi i u khi n OUT DX, AL // G i tr CALL DELAY // 2. Ghi l i i u khi n v cc tr ng thi ng m nh MOV AL, 00001100B OUT DX, AL CALL DELAY // 3. K t thc chng trnh INT 20 // nh ngha o n chng trnh tr DELAY DELAY: MOV AH, 00 INT 1A ; Ng t ph c v m ng h ADD DX, 2 ; T th p c a b m + 2 lm b m cu i MOV BX, DX ; Lu t th p + 2 A: INT 1A ; c gi tr m i c a b m CMP DX, BX ; So snh v i b m cu i JB A ; N u nh hn quay l i A RET ; Tr v t chng trnh con

4.2.2. A K T C N IN RA MY IN
Ti n trnh a k t c n in ra my in g m ba giai o n: 1. Chuy n v ghi s li u ra thanh ghi m s li u c a c ng ( a ch c s ). Trong tr ng h p ny l m ASCII c a k t . 2. Ki m tra tr ng thi my in. N u cha s n sng ph i i b ng cch quay tr l i c v ki m tra tr ng thi cho n khi s n sng

76

Hpv 3.

HVKTMM

a bit D0 = 1 vo thanh ghi i u khi n in yu c u in

a tn hi u STROBE cho my

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. L P TRNH S D NG NG T CHO MY IN 4.3.1. A N I DUNG MN HNH RA MY IN: S D NG NG T INT 5H


INT 5h l ng t ring c a VXL, s d ng : a n i dung c a mn hnh ra my in theo s ki n nh n phm Print Screen. Ho t ng nh sau: Khi nh n c tn hi u nh n phm Print Screen, BIOS s kh i t o vecto ng t tr t i cc chng trnh ph c v in n i dung mn hnh c a BIOS trong ROM BIOS G i m t s k t qu trung gian ra my in trong qu trnh th c hi n cc chng trnh khi ng t c g i Ng t INT 5h khng c tham s vo v tham s ra

4.3.2. S D NG NG T INT 17H


INT 17h l ng t c a BIOS, c 3 ch c nng: 00h: In ra m t k t Tham s vo:

78

Hpv

HVKTMM

AH=00h AL=M ASCII c a k t DX=S hi u my in (0-2) Tham s ra: AH=Tr ng thi my in. Cc bit m t nh trong thanh ghi tr ng thi 01h: Kh i ng my in. C n c g i tr c khi in Tham s vo: AH = 01h DX = S hi u my in Tham s ra: AH = tr ng thi my 02h: Ki m tra tr ng thi Tham s vo: AH = 02h DX = S hi u my in Tham s ra: AH = Tr ng thi my in v i cc bit c m t nh sau: D0=1:l i time out, D1 -D2: khng dng, D3=1:l i truy n, D4=1:s n sng nh n, D5=1:h t gi y, D6=1:t ch i, D7=1:b n.

4.3.3. CHNG TRNH V D


In ra 10 k t b t 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 ;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

HVKTMM

80

Hpv

HVKTMM

BI T P

81

Hpv

HVKTMM

CHNG IV. L P TRNH THAO TC A V FILE


M m x N c ch: h th ng l i c u trc, nguyn l ho t ng c a a c ng, a m; cch th c h i u hnh qu n l d li u trn a ph c v l p trnh l file v thao tc a. i dung chnh: L p trnh a c ng L p trnh a m m L p trnh cho USB

82

Hpv

HVKTMM

1. T CH C LU TR FILE TRN A
1.1. C U TRC A
Thng tin c t ch c trn cc m t a theo cc track( rnh); track l i c chia thnh cc sector(cung). Dos nh d u cc m t a b t trong m t track, cc sector b t hi u. u t 0, track b t u t 0, u t 1. S sector trn m t track, s track trn m t

m t a tu thu c vo t ng lo i a. Tr ( cylinde) l t p h p cc rnh c cng s

1.2. DUNG L NG A: (BYTE)


DiskSize = s m t * s rnh trn 1 m t * s cung trn 1 rnh * s byte trn 1 cung

1.3. TRUY NH P A:
Phng php truy nh p a m m v a c ng gi ng nhau. a n m d i s i u khi n c a m ch i u khi n a; m ch i u khi n a c nhi m v chuy n d ch u c ghi ( u c ghi ch d ch chuy n ti n/li, a lun quay quanh tr c). D li u c truy nh p theo t ng sector. truy nh p d li u, u t ph i d ch chuy n n track c n truy nh p. Khi t vo ng track u t s i sector c n c i t i. V m i rnh trn m t tr c th truy nh p m khng c n d ch chuy n u t nn khi ghi d li u, Dos th ng ghi y m t tr r i m i chuy n sang tr k ti p

1.4. S PHN B CC FILE:


theo di d li u ghi trn a, Dos s d ng c u trc cy th m c. Cc track v cc sector u tin c a a ch a thng tin v c u trc file c a a. Cc a th ng phn b chung nh sau: Boot Sector B ng FAT Folder(Root) Data Th m c File: Dos t o m t i m nh p 32byte cho m i file trong th m c, c u trc m i i m nh p nh sau: Byte Ch c nng 0-7 Tn file, byte 0 dng lm byte tr ng thi 8-10 Ph n m r ng 11 Thu c tnh 12-21 m r ng 22-23 Gi t o (h:m:s) 25-25 Ngy t o (y:m:d) 26-27 S hi u cluster u tin (v a l a ch cluster u tin
83

Hpv

HVKTMM

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

c a file trong vng d li u v a l s th t c a i m nh p c a file trong b ng FAT). i m nh p b ng FAT bt u t 0 Kch th c file theo byte 2 File h th ng 3 Nhn a 4 5 Th Bit lu m c con 6 Khng s d ng 7 Khng s d ng

1.4.1. CLUSTER (LIN CUNG):


Dos lu tr cc file theo cc cluster. M i cluster g m m t s secter, s secter c a m t cluster lun l lu th a c a 2. Cc cluster c nh s b t u t 0; cluster 0 l cc sector cu i cng c a th m c. Khi kch th c file nh hn 1 cluster, Dos v n ginh cho file c cluster . Do c tr ng h p trn a v n cn ch cha s d ng nhng Dos v n thng bo a y.

1.4.2. B NG FAT:
M c ch c a b ng FAT (File Allocation Table) l t o ra b n cc file trn a. B ng FAT bao g m cc i m nh p cho file, kch th c c a i m nh p tu thu c vo t ng lo i a. Byte u tin c a b ng FAT dng ch ra lo i a. N i dung m i i m nh p trong b ng FAT: n u l FFF th ch y s th t c a i m nh p ny l a ch cluster cu i cng c a file; n u l 000 th i m nh p cha s d ng; n u l s 000 < a < FFF th a v a ch a ch cluster hi n t i v a ch tr ng thi c a file s xem ti p trong i m nh p th a c a b ng FAT. Ngha l file s khng lu tr thnh cc cluster lin ti p m cc cluster c a file s c tham chi u trong b ng FAT

1.5. TI N TRNH 1.5.1. DOS

C GHI FILE C A DOS

C M T FILE:

Ti n trnh c file nh sau: 1. Nh n s hi u cluster u tin t th m c (chnh l s th t i m nh p trong b ng FAT ). V d l 2 2. Dos c c n i dung cluster vo m t vng nh g i l vng chuy n d li u (DTA: Data Transfer Area), chng trnh s nh n c d li u t DTA khi c n. 3. Dos c n i dung c a i m c s th t chnh l s hi u cluster u tin tren (gi s l 2 ) trong b ng FAT bi t y l cluster cu i cng c a file hay bi t s hi u cluster ti p theo v i m nh p file ti p c s hi u b ng n i dung c a i m nh p ny (trong v d ny l 004)
84

Hpv

HVKTMM

4.

i m nh p 4 trong b ng FAT ch a gi tr FFF nn cluster 4 l cluster cu i cng c a file Ho c v d khc: file ch a trong cc cluster: 3 5 6 7 8

1.5.2. DOS GHI M T FILE:


Ti n trnh nh sau: 1. Xc nh m t i m nh p cha s d ng trong th m c v lu vo tn file cng v i thu c tnh file, ngy gi t o 2. Tm trong b ng FAT i m nh p u tin nh d u m t cluster cha s d ng (000 ngha l cluster cha s d ng - i m nh p cha ng v i cluster no) v ch a s hi u cluster u tin c a file vo i m nh p file trong th m c chnh b ng s hi u i m nh p ny trong b ng FAT. V d 9 3. N u d li u ch a v a trong m t cluster, Dos ch a d li u trong cluster ny, t n i dung c a i m nh p file trong b ng FAT c s hi u b ng v i s hi u cluster l FFF. N u cn d li u, Dos s tm cluster ti p theo cha s d ng t s hi u cluster vo i m nh p ny c a FAT

2. L P TRNH X L FILE
2.1. TH FILE:
M t file khi c m hay c t o trong chng trnh DOS gn cho n m t s duy nh t g i l th file. Con s ny dng xc nh cc file do chng trnh ph i lu n. C 5 lo i th file nh ngha tr c: 0 Bn phm 1 Mn hnh 2 Thng bo l i u ra mn hnh 3 Thi t b ph 4 My in Ngoi cc file ny Dos cn cho php ng i s d ng 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 m t file 2.2.4. Con tr file

2.3. THAY

I THU C TNH FILE:


thay i thu c tnh file:

S d ng hm 43h c a ng t INT 21h Tham s vo: AH=43h

85

Hpv

HVKTMM

DS:DX= a ch chu i ASCII (chu i tn file, k t thc b ng byte 0) AL=0 l y thu c tnh AL=1 thay i thu c tnh CX=thu c tnh file m i (n u AL = 1) Tham s ra: CX = thu c tnh hi n th i n u thnh cng CF c t th c l i, m l i t trong AX V d : thay i thu c tnh file thnh n: MOV AH, 43h MOV AL, 1 LEA DX, FileName MOV CX, 1 INT 21h JC MSG_ERROR ;nh y n thng bo l i n u c CF c

3.

C V GHI CC SECTOR TR C TI P C A A:

S d ng ng t 25h v 26h c a DOS. Tr c khi g i cc ng t ny ph i kh i t o cc thanh ghi: AL = s hi u a (0= A; 1= B, 2= C... gi ng Debug) DS:BX = segment:offset c a vng m d li u b nh CX = s sector mu n ghi DX = s hi u sector lgic u tin Khng c s hm ch c nng no ph i t trong AH, g i tr c ti p ng t N u CF=1 th c l i, AX ch a m l i Cc sector lgic c s hi u b t u t 0 v tng d n ng v i sector v t l. V d : M t 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 m c file 1 0 1-3 9-11 Th m c file 1 0 4-9 12-17 D li u 0 1 1-9 18-26 D li u c m t sector: V d : c sector lgic 5 - sector u tin c a th m c c a ....... D_SEG SEGMENT BUFFER DB 512 DUP(0) ERROR DB ERROR$ D_SEG ENDS a A

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 AL, 2 ; a C DX, 5 ;s hi u sector u tin CX, 1 ;chuy n s sector c n c vo CX 25h ; c EXIT ;nh y n exit n u khng c l i ;n u c l i, hi n th thng bo l i MOV AH, 09h ;ch c nng 09h c a ng t INT 21h hi n th chu i MOV DX, Offset ERROR ;<=> LEA DX, ERROR INT 21h EXIT: MAIN C_SEG
END

MOV MOV MOV INT JNC

MOV AH, 4Ch INT 21h ENDP ENDS


START

87

Hpv

HVKTMM

PH L C:
DEBUG C A MSDOS ASSEMBLY C B N T P L NH 82086
Tm t t cc l nh 8086 / 8088
Cc ch vi t t t trong cc nhm l nh: reg : thanh ghi t ng qut. reg16 : thanh ghi 16 bit. segreg : thanh ghi o n. accum : thanh ghi b tch ly AX ho c AL. mem : b nh ( a ch hi u d ng). mem16 : b nh 2 byte lin ti p ( a ch hi u d ng). mem32 : b nh 4 byte lin ti p ( a ch hi u d ng). immed : s t c th i. immed8 : s t c th i 8 bit. shortlabel : nhn ng n (-128 byte +127 byte). nearlabel : nhn trong o n (2 byte offset). farlabel : nhn ngoi o n (4 byte : 2 byte segment v 2 byte offset). Nhm l nh chuy n d li u : 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 Nhm l nh s h c : 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 l nh 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

HVKTMM

89

Hpv 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 chu i : REP l nh x l chu i REPE/REPZ l nh x l chu i REPNE/REPNZ l nh x l chu i MOVSB / MOVSW CMPSB / CMPSW SCASB / SCASW LODSB / LODSW STOSB / STOSW Chuy n i u khi n : 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

HVKTMM

Jcond shortlabel Jcond Gi i thch i u ki n JE/JZ Nh y n u b ng/khng ZF = 1 JL/JNGE Nh y n u nh hn/khng l n hn ho c b ng (SF xor OF) = 1 JLE/JNG Nh y n u nh hn ho c b ng /khng l n hn ((SF xor OF) or ZF) = 1 JB/JNAE/JC Nh y n u d i /khng trn ho c b ng/nh CF = 1 JBE/JNA Nh y n u d i ho c b ng /khng trn (CF or ZF) = 1 JP/JPE Nh y n u ki m tra / ki m tra ch n PF = 1 JO Nh y n u trn OF = 1 JS Nh y n u d u SF = 1 JNE/JNZ Nh y n u khng b ng/khc khng ZF = 0 JNL/JGE Nh y n u khng nh hn/l n hn ho c b ng (SF xor OF) = 0 JNLE/JG Nh y n u khng nh hn ho c b ng /l n hn ((SF xor OF) or ZF) = 0

90

Hpv JNB/JAE/JNC Nh y n u khng d i /trn ho c b ng/khng nh CF = 0 JNBE/JA Nh y n u khng d i ho c b ng /trn (CF or ZF) = 0 JNP/JPO Nh y n u khng ki m tra / ki m tra l PF = 0 JNO Nh y n u khng trn OF = 0 JNS Nh y n u khng d u SF = 0 LOOP shortlabel LOOPE/LOOPZ shortlabel LOOPNE/LOOPNZ shortlabel JCXZ shortlabel INT immed8 INT 3 INTO IRET i u khi n b x l : CLC STC CMC NOP CLD STD CLI STI HLT WAIT LOCK l nh ESC immed,reg ESC immed,mem

HVKTMM

91

Hpv

HVKTMM

BI T P L N
1. Tm hi u v Virus lin quan n BIOS 2. Tm hi u, vi t chng trnh virus lin quan n ho t ng c a bn phm, chu t; chng trnh di t, ngn ng a virus lin quan n bn phm, chu t 3. Tm hi u, vi t chng trnh virus lin quan n ho t ng c a mn hnh; vi t chng trnh di t, ngn ng a virus lin quan n mn hnh 4. Tm hi u, vi t chng trnh virus lin quan chng trnh di t, ngn ng a virus lin quan n ho t ng c a my in; vi t n my in ng n a m m, a m m, USB a a

5. Tm hi u, vi t chng trnh virus lin quan n ho t c ng; chng trnh di t, ngn ng a virus lin quan c ng 6. Nguyn l boot( kh i 7. Ci th ng) h i u hnh; kh i USB

ng my t

i u hnh (window xp) trn

8. Tm hi u v nguyn l t o cc file, th m c n. Vi t chng trnh cho lm n ho c hi n ton b ho c m t s file, th m c con trong th m c xc nh Yu c u: bo co 5-10 trang; n u c chng trnh v d th c ti li u m t gi i thu t, v lu gi i thu t c a ng d ng

92

You might also like