3.4.2. Thiết bị quang
Ngµy nay ®Üa quang ®îc sö dông rÊt phæ biÕn, chóng cã mËt ®é ghi th«ng tin cao h¬n ®Üa tõ th«ng thêng rÊt nhiÒu. Ban ®Çu c¸c ®Üa quang ®îc chÕ t¹o vµ ph¸t triÓn nh»m ghi c¸c ch¬ng tr×nh truyÒn h×nh sau ®ã ®îc sö dông lµm ph¬ng tiÖn nhí ngoµi cho m¸y tÝnh.
* Nguyªn lý chÕ t¹o (ghi)
Ngêi ta t¹o ra c¸c ®Üa CD ROM b»ng c¸ch dïng mét tia laser m¹nh ®èt ch¸y c¸c hèc ®êng kÝnh 1m trªn mét ®Üa chñ, tõ ®Üa chñ nµy t¹o ra khu«n ®Ó t¹o ra c¸c b¶n copy trªn c¸c ®Üa chÊt dÎo. Sau ®ã ngêi ta phñ lªn mét líp nh«m máng råi mét líp chÊt dÎo trong suèt lªn trªn líp nh«m ®Ó b¶o vÖ.
C¸c hèc bÞ ®èt gäi lµ c¸c pits (tÝ hiÖu 0), phÇn kh«ng bÞ ®èt gäi lµ c¸c lands (tÝn hiÖu 1), chóng cã ®é t¬ng ph¶n kh¸c nhau do ®ã cã thÓ ph©n biÖt ®îc pits vµ lands.
* Tæ chøc th«ng tin
Th«ng tin trªn CDROM ®îc tæ chøc theo mét ®êng xo¾n èc duy nhÊt. D÷ liÖu ghi tõng nhãm 24 byte, mçi byte ®Çu tiªn ®îc më réng thµnh 14 bit. Ba bit ®Æc biÖt ®îc bæ xung vµo gi÷a c¸c nhãm vµ mét byte ®ång bé ®îc bæ xung ®Ó t¹o thµnh 1 frame. Mét nhãm 98 frame t¹o thµnh 1 block chøa 2 KB d÷ liÖu cña ngêi sö dông. Mçi CDROM chøa 270.000 block, cho dung lîng lµ 553 MB.
* C¸ch ®äc th«ng tin
C¸c ®Üa CDROMs ®îc ®äc b»ng thiÕt bÞ nh m¸y ghe nh¹c CD, dïng mét ®Çu dß (detector) ®o n¨ng lîng ph¶n x¹ tõ bÒ mÆt ®Üa khi chiÕu lªn bÒ mÆt mét tia laser c«ng xuÊt nhá. D÷ liÖu ®îc ®äc víi vËn tèc tuyÕn tÝnh kh«ng ®æi lµ 57 inches/sec, cho ta tèc ®é ®äc ghi d÷ liÖu lµ 153,60 KB/sec
* ¦u ®iÓm, nhîc ®iÓm vµ c¸ch kh¾c phôc:
¦u ®iÓm : c«ng nghÖ chÕ t¹o CDROM b»ng c¸ch dËp khu«n do ®ã gi¸ thµnh 1 CDROM rÊt rÎ, ngoµi ra viÖc ®äc dïng tia laser kh«ng cÇn sù tiÕp xóc c¬ khÝ, bÒ mÆt cã sù b¶o vÖ do ®ã cã ®é tin cËy cao, dung lîng lín nªn ®îc sö dông réng r·i.
Nhîc ®iÓm : viÖc dËp khu«n khã ®¹t ®îc ®é chÝnh x¸c cao vµ ®ång ®Òu do vËy c¸c th«ng tin sè thêng cã nhiÒu lçi.
Kh¾c phôc : ®Çu ®äc trong æ ®Üa thêng cã mét g¬ng chÝnh x¸c, ®îc ®iÒu khiÓn bëi mét c¬ cÊu servo nh»m b¸m s¸t bÒ mÆt ®Üa, bï trõ cho c¸c lçi s¶n xuÊt. Thø hai sö dông lo¹i m· söa sai tèt h¬n khi ghi th«ng tin.
3.4.3. Phương pháp tác động
Chóng ta cã thÓ sö dông mét sè ng¾t ®Ó lËp tr×nh trùc tiÕp víi c¶ ®Üa cøng vµ ®Üa mÒm.
BIOS : Ng¾t 13 h cho c¶ ®Üa cøng vµ ®Üa mÒm
Ng¾t 41h chØ tíi b¶ng th«ng sè cña ®Üa cøng 1
Ng¾t 46h chØ tíi b¶ng th«ng sè cña ®Üa cøng 2
DOS : Ng¾t 25h ®äc trùc tiÕp tõ ®Üa cøng
Ng¾t 26h ghi trùc tiÕp vµo ®Üa cøng.
LËp tr×nh ng¾t trong PASCAL
ViÖc gäi ng¾t trong PASCAL còng ®îc thùc hiÖn theo mÉu trªn.Song ph¶i theo mét sè quy ®Þnh sau:
-
C¸c lÖnh ®îc sö dông lµ c¸c lÖnh cña PASCAL. LÖnh g¸n t¬ng ®¬ng víi lÖnh MOV trong ASSEMBLY
-
NÕu sö dông hÖ ®Õm thËp lôc ph©n,th× ph¶i cµi ®Æt dÊu ‘$’ ®øng tríc mçi sè ®ã.
-
Muèn t¸c ®éng trùc tiÕp tíi c¸c thanh ghi cña bé vi xö lý ,ta ph¶i sö dông biÕn cã kiÓu lµ REGISTERS. kiÓu nµy ®îc quy ®Þnh trong UNIT DOS nh sau:
+ KiÓu REGISTERS ®îc khai b¸o trong UNIT DOS:
TYPE
REGISTERS=RECORD
CASE integer OF
0:(AX,BX,CX,DX,BP,SI,DI,DS,ES,Flags:word);
1:(AL,AH,BL,BH,CL,CH,DL,DH:Byte);
END;
+ C¸c thanh ghi cña bé vi xö lý ®îc quy ®Þnh b»ng c¸c tªn biÕn. Muèn truy nhËp ®Õn c¸c biÕn nµy, ta ph¶i quy ®Þnh vÒ kiÓu b¶n ghi. VÝ dô : R lµ biÕn kiÓu REGISTERS
=>R.AH:=$01; hoÆc with R do AH:=$01;
- Muèn gäi ng¾t trong PASCAL, cã thÓ sö dông thñ tôc:
INTR(,);
VÝ dô : R lµ biÕn kiÓu REGISTERS => INTR($ 10,R);
- Riªng víi sè hiÖu ng¾t 21h ta cã thÓ sö dông thñ tôc
MSDOS();
VÝ dô: INTR($21,R); <=>MSDOS(R);
Mét sè ng¾t th«ng dông
Ng¾t 21h: Ng¾t chøc n¨ng cña DOS
Hµm 01h: Vµo mét kÝ tù tõ bµn phÝm vµ hiÓn thÞ ra mµn h×nh
M« t¶
|
VÝ dô minh ho¹
|
Vµo: AH=01h
Ra: AL=M· ASCII cña kÝ tù nhËp vµo
|
MOV AH,01H
INT 21H
MOV ktu,AL
|
Hµm 02h: In mét ký tù ra mµn h×nh v¨n b¶n
Vµo AH=02h
DL= m· ASCII cña kÝ tù nhËp vµo
Ra Kh«ng
|
MOV AH,02H ;In ra mµn h×nh
MOV DL,’A’ ; ch÷ ’A’
INT 21H
|
Hµm 08h: Vµo mét kÝ tù tõ bµn phÝm,kh«ng hiÓn thÞ kÝ tù ra mµn h×nh
Vµo AH=01h
Ra AL= m· ASCII cña kÝ tù nhËp vµo
|
MOV AH,08H
INT 21H
MOV ktu,AL
|
Hµm 09h: In mét chuçi kÝ tù ra mµn h×nh
Vµo AH=09h
DS:DX=Con trá ®Õn chuçi kÕt thóc b»ng ‘$’
Ra Kh«ng
|
MOV AH,09H
LEA DX,chuçi
INT 21H
|
Hµm 4Ch: KÕt thóc ch¬ng tr×nh .EXE
Vµo : AH=4Ch
Ra : Kh«ng
|
MOV AH,4CH
INT 21H
|
Hµm 2Ah: X¸c ®Þnh ngµy th¸ng
Vµo : AH=2Ah
Ra : AL=ngµy trong tuÇn(0-6)
CX=n¨m(1980-2099)
DH=th¸ng(1-12)
DL=ngµy(1-31)
|
R.AH:=$2A
INTR($21,R)
Ngay-tuan:=R.AL;
Nam:=R.CX;
Thang:=R.DH;
Ngay:=R.DL;
|
Hµm 2Bh: §Æt ngµy th¸ng (§Æt l¹i ngµy hÖ thèng)
Vµo : AH= 2Bh
CX=n¨m(1980-2099)
DH=th¸ng(1-12)
DL= ngµy(1-31)
Ra : AL=0 nÕu ngµy hîp lÖ;
AL=FFh nÕu ngµy kh«ng hîp lÖ
|
R.AH:=$2B;
Nam:=R.CX;
Thang:=R.DH;
Ngay:=R.DL;
INTR($21,R);
IF R>AL=0 then write(‘OK!’);
Else write(‘Not OK!’);
|
Hµm 2Ch: X¸c ®Þnh thêi gian hÖ thèng
Vµo: AH=2Ch
Ra : CH=giê(0-23)
CL=phót(0-59)
DH=gi©y(0-59)
DL=phÇn tr¨m gi©y(0-99)
|
R.AH:=$2C;
NTR($21,R);
Gio:=R.CH;
Phut:=R.CL;
Giay:=R.DH;
Phan_tram:=R.DL
|
Hµm 2Dh: §Æt thêi gian (§Æt l¹i thêi gian hÖ thèng)
Vµo: AH=2Dh
CH=giê(0-23)
CL=phót(0-59)
DH=gi©y(0-59)
DL=phÇn tr¨m gi©y(0-99)
Ra : AL=0 nÕu thêi gian hîp lÖ
AL=FFh nÕu thêi gian kh«ng hîp lÖ
|
R.AH:=$2D;
R.CH:=gio;
R.CL:=phut;
R.DH:=giay;
R.DL:=phan_tram;
INTR($21,R);
If R.AL=0 then write(‘OK!’)
Else write(‘Not OK!’);
|
Hµm 30h: X¸c ®Þnh sè phiªn b¶n cña DOS
Vµo : AH=30h
Ra : BX=0000h
CX=0000h
AL=sè tríc dÊu phÈy
AH=sè sau dÊu phÈy
|
R.AH:=30H
INTR($21,R);
Ver1:=R.AL;
Ver2:=R.AH;
Write(‘MS_DOS Version ‘,ver1,’,’,ver2)
|
Hµm 36h: X¸c ®Þnh dung lîng cßn trèng trªn ®Üa
Vµo :AH=36h
DL=æ ®Üa(0_mÆc ®Þnh;1_A;1_B;...)
Ra : BX=Sè liªn cung cha dïng
CX=Sè byte/cung
DX=Sè liªn cung / ®Üa
AX=FFFFh nÕu æ ®Üa kh«ng hîp lÖ=sè cung/liªn cung(hîp lÖ)
|
R.AH:=36H;
R.DL:=1;
INTR($21,R);
Free_cyl:=R.BX;
Bps:=R.CX; {byte per sector}
Cpd:=R.DX; {cylinder per dick}
If AX=$FFFF then write(‘No Dick’)
Else spc:=R.AX; {sector per cylinder);
|
Ng¾t 10h: Ng¾t mµn h×nh
Hµm 00h: Chän chÕ ®é hiÓn thÞ cho mµn h×nh
Vµo: AH=0h
AL=chÕ ®é
03h:Text 80*25*16
12h:Grapt 640*480*16
13h: Grapt 320*200*256
Ra : Kh«ng
|
R.AH:=0h;
R.AL:=mode;
INTR($10,R);
|
Hµm 02h: DÞch chuyÓn Con trá
Vµo: AH=02h
BH=trang sè
DH=hµng
DL=cét
Ra : Kh«ng
|
R.AH:=02h;
R.BH:=trang;
R.DH:=hang;
R.DL:=cot;
INTR($10,R)
|
Hµm 06h: Cuèn mµn h×nh hay cöa sæ lªn mét sè dßng x¸c ®Þnh
Vµo: AH=06h
AL=sè dßng cuèn(=0;toµn bé)
BH=thuéc tÝnh cña dßng trèng
CH,DL=dßng,cét gãc trªn tr¸i
DL,DL=dßng,cét gãc díi ph¶i
Ra: Kh«ng
|
R.AH:=06h;
R.AL:=so_dong;
R.BH:=thuoc_tinh;
R.CH:=dong1;R.CL=cot1;
R.DH:=dong2;R.DL=cot2;
INTR($10,R);
|
Hµm 07h: Cuèn mµn h×nh hay cöa sæ xuèng mét dßng x¸c ®Þnh
Vµo : AH=07h
AL=sè dßng cuèn(=0;toµn bé)
BH=thu«c tÝnh c¸c dßng trèng
CH,CL=dong,cét gãc díi ph¶i
Ra : Kh«ng
|
R.AH:=07h;
R.AL:=so_dong;
R.BH:=thuoc_tinh;
R.CH:=dong1;R.CL=cot1;
R.DH:=dong2;R.DL=cot2;
INTR($10,R);
|
Hµm 09h: HiÓn thÞ kÝ tù víi thuéc tÝnh t¹i vÞ trÝ Con trá
Vµo: AH=09h
AL=m· ASCII cña kÝ tù
BH=trang sè
BL=thuéc tÝnh(text); mµu(graph)
CX=sè lÇn viÕt kÝ tù
Ra :Kh«ng
|
R.AH:=09h;
R.AL:=kitu;
R.BH:=0; {trang so 0}
R.BL:=mau;
R.CX=solan;
INTR($10,R);
|
Ng¾t 16h: Ng¾t bµn phÝm
Hµm 00h: §äc kÝ tù tõ bµn phÝm
Vµo : AH=00h
Ra :AH=m· quÐt cña phÝm
AL=m· ASCII cña kÝ tù
|
R.AH:=00h;
INTR($16,R);
R.AH:=ma_scan;
R.AL:=ma_ascii;
|
Hµm 02h: LÊy c¸c cê bµn phÝm
Vµo : AH=02h
Ra : AL=c¸c cê
Bit 7: insert; bit 6:capslock; bit 5:numlock; bit 4:scrollock
|
R.AH:=00h;
INTR($16,R);
R.AH:=ma_scan;
R.AL:=ma_ascii;
|
Ng¾t 33h: Ng¾t con chuét
Hµm 00h: Khëi t¹o chuét
Vµo : AX=00h
Ra : AX=FFFFh kh«ng nhËn chuét
|
R.AX:=00h;
INTR($33,R);
if R.AX=FFFFh then
WRITE('Khong khoi tao duoc chuot!');
|
Hµm 01h: HiÖn trá chuét
Vµo : AX=01h
Ra : Kh«ng
|
R.AX:=01h;
INTR($33,R);
|
Hµm 02h: Èn trá chuét
Vµo : AX=02h
Ra : Kh«ng
|
R.AX:=02h;
INTR($33,R);
|
Hµm 03h: Tr¹ng th¸i nhÊn chuét
Vµo : AX=03h
Ra : CX,DX=to¹ ®é ¶o cña chuét.
BX=tr¹ng th¸i nót chuét nhÊn
bit 0: Nót tr¸i
bit 1: Nót ph¶i
bit 2: Nót gi÷a
|
R.AX:=03h;
INTR($33,R);
X=R.CX shl 3+1;
Y=R.DX shl 3+1;
if (R.BX and 1)=1 then
WRITE('Phim trai chuot!!!');
|
NV&GD Trang 3 - Bộ môn KTMT
Chia sẻ với bạn bè của bạn: |