You are on page 1of 8

Bi giang hop ng Chuong VIII: Su dung ngt trong hop ng

60
CHUONG VIII: SU DJNG NGAT TRONG HP NG
8.1 Khi nim ngt
Trong chuong II ta d d cp toi khi nim chuong trnh ngt nhung chua giai thch
ngt l g. C th tm tt v khi nim ngt nhu sau:
Ngt l hnh dong dung chuong trnh dang chay d thuc hin mot chuong trnh khc
(chuong trnh ny duoc goi l chuong trnh xu l ngt). B vi xu l s dung cc cng
vic dang thuc hin khi n nhn duoc mt tn hiu yu cu ngt ri trao quyn diu khin
lai cho chuong trnh xu l ngt. Tn hiu yu cu ngt c th do mt thit bi phn cung
hoc do mt lnh INT trong chuong trnh sinh ra. Qu trnh ngt duoc m ta trong hnh
duoi dy:
Chuong trnh xu l ngt cn duoc kt thc bng lnh IRET d sau khi thuc hin xong
c th quay tro v thuc hin tip chuong trnh bi ngt truoc d.
C nhiu loai ngt khc nhau, d phn bit cc ngt cn dua vo s hiu cua chng. B
vi xu l 8086 c th quan l 256 ngt, duoc dnh s ln luot tu 0, 1, 2,..., FFh. Duoi dy
l bang danh sch cc ngt:
S hiu ngt Chc nng
0 1Fh Ngt cua BIOS
20h 3Fh Ngt cua DOS
40h 7Fh Du tru
80h F0h Dng cho chuong trnh BASIC trong ROM
F1h FFh Khng su dung
Giai thch:
Chuong trnh xu l ngt c th l mt b phn cua BIOS hay cua DOS, cung c th do
nguoi su dung tu vit. Ta cn phn bit r hai khi nim: Ngt v Chuong trnh xu l
ngt. Khng phai s hiu ngt no cung c c chuong trnh xu l ngt tuong ung.
Khi mt ngt c s hiu tu 0 1Fh xut hin th chng s duoc xu l boi cc chuong
trnh vit sn nm trong ROM BIOS (chu yu l giai quyt cc yu cu vo/ ra co ban).
Cn nu ngt c s hiu tu 20h 3Fh th s do h diu hnh DOS xu l.
Lnh 1
Lnh 2
...
INT <...>
...
Lnh 1
Lnh 2
...
IRET
Chuong trnh bi ngt
Chuong trnh xu l ngt
Bi giang hop ng Chuong VIII: Su dung ngt trong hop ng
61
8.2 Phn loi ngt
D phn loai cn dua trn mt tiu ch no d, o dy ta s phn loai ngt dua trn cch
thuc pht sinh ngt, tam chia lm hai loai sau: Ngt mm v Ngt cung.
8.2.1 Ngt mm
Ta goi mt ngt l ngt mm nu n duoc pht sinh khi c loi goi ngt bng lnh INT
trong chuong trnh. C php cua lnh INT l:
INT <S hiu ngt>
V du:
INT 21h ;Goi ngt 21h cua DOS
INT 13h ;Goi ngt 13h cua BIOS
8.2.2 Ngt cng
Mt ngt cung pht sinh khi c mt thit bi phn cung gui tn hiu yu cu ngt toi b
vi xu l.
V du:
Khi ta g mt phm trn bn phm hay bm chut, s c tn hiu ngt gui toi b vi xu
l d yu cu xu l hnh dng vua thuc hin.
Cc ngt duoc kch hoat tu thit bi ngoi (bn phm, chut...) ging nhu v du trn
duoc goi l Ngt cung ngoi. Cn nu ngt pht sinh boi cc kinh kin b tro nm trn
mainboard th duoc goi l Ngt cung trong (hay ngt cung noi bo).
8.3 Mt s ngt thng dng
Trong phn ny ta s tm hiu tc dung cua mt s ngt v cch thuc su dung chng
trong chuong trnh. Ni chung mi ngt thuong c nhiu chuc nng khc nhau, s hiu
chuc nng cn duoc dt vo thanh ghi AH truoc khi goi ngt bng lnh INT.
8.3.1 Ngt 17h Vo/ra my in
Dy l ngt do BIOS quan l, n c ba chuc nng:
a) Chuc nng so 0: ua mot k tu ra my in
Cc tham s: AH = 0
AL = M ASCII cua k tu cn in
DX = S hiu my in
V du:
Gui k tu A ra my in.
Giai:
MOV AH, 0
MOV AL, A ;K tu cn in
MOV DX, 0 ;My in s 0
INT 17h
MOV AH, 0
MOV AL, 0Ah ;in tip k tu xung dng
INT 17h
Bi giang hop ng Chuong VIII: Su dung ngt trong hop ng
62
b) Chuc nng so 1: Khoi tao cong my in
Cc tham s: AH = 1
DX = S hiu my in
c) Chuc nng so 2: Kim tra trang thi my in
Vo: AH = 2
DX = S hiu my in
Ra: AH chua trang thi my in
Cc trang thi cua my in duoc lit k trong bang sau:
Cc bt cua AH Gi tr| bt nghia
Bt 0 1 My in qu thoi gian
Bt 1 Khng su dung
Bt 2 Khng su dung
Bt 3 1 Li vo ra
Bt 4 1 My in duoc chon
Bt 5 1 Khng c giy
Bt 6 1 Chp nhn in
Bt 7 1 My in khng bn
8.3.2 Ngt 21h
Dy l ngt hay dng nht cua DOS, n c rt nhiu chuc nng. O cc chuong truoc ta
d su dung bn chuc nng cua ngt ny (chuc nng s 1, 2, 9 v 4Ch). Trong phn ny ta
s tm hiu thm mt s chuc nng khc.
a) Chuc nng so 39h: Tao mot thu muc trn o dia
Cc tham s: AH = 39h
DS:DX = Dia chi cua chui chua duong dn
(chui ny phai c tn cng l 0)
V du:
Tao thu muc ASM trong dia C.
Giai:
TITLE Tao thu muc
.MODEL SMALL
.STACK 100H
.DATA
DuongDan DB 'C:\ASM', 0
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX
MOV AH, 39h ;Chc nang s 39h: tao thu mc
LEA DX, DuongDan ;Ly dia chi offset cua chui dat
;vo DX
Bi giang hop ng Chuong VIII: Su dung ngt trong hop ng
63
INT 21h ;Goi ngt
MOV AH, 4Ch ;Kt thc
INT 21h
MAIN ENDP
END MAIN
b) Chuc nng so 3Ah: Xo mot thu muc
Cc tham s: AH = 3Ah
DS:DX = Dia chi cua chui chua duong dn
(chui ny phai c tn cng l 0)
Cch su dung tuong tu nhu chuc nng 39h o trn.
c) Chuc nng so 41h: Xo file
Cc tham s: AH = 41h
DS:DX = Dia chi cua chui chua duong dn
(chui ny phai c tn cng l 0)
V du:
Xo file Vidu.txt trong thu muc gc cua dia C.
Giai:
TITLE Xoa file
.MODEL SMALL
.STACK 100H
.DATA
DuongDan DB 'C:\Vidu.txt', 0
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX
MOV AH, 41h ;Chc nang s 41h: xo file
LEA DX, DuongDan ;Ly dia chi offset cua chui
;dat vo DX
INT 21h ;Goi ngt
MOV AH, 4Ch ;Kt thc
INT 21h
MAIN ENDP
END MAIN
d) Chuc nng so 2Ch: Lay thoi gian tu dong ho h thong
Vo: AH = 2Ch
Ra: CH = gio (0 _ CH _ 23)
CL = pht (0 _ CL _ 59)
DH = giy (0 _ DH _ 59)
Bi giang hop ng Chuong VIII: Su dung ngt trong hop ng
64
DL = % giy (0 _ DL _ 99)
V du:
Vit chuong trnh hin ra mn hnh gio hin tai cua h thng.
Giai:
TITLE Hien thoi gian
.MODEL SMALL
.STACK 100H
.DATA
Time_Buf DB '00:00:00$'
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX
MOV AH, 2Ch ;Chc nang s 2Ch: doc thi gian
INT 21h ;Goi ngt
;i Gi (trong CH) tu s thp phn sang m ASCII ri
;ct vo Time_Buf
MOV AL, CH ;Chuyn Gi vo AX
MOV AH, 0
MOV DL, 10 ;Chia AX cho 10
DIV DL ;AL = Thuong = S hng chc
;AH = S du = S hng don vi
ADD AL, 30h ;i s hng chc sang m ASCII
ADD AH, 30h ;i s hng don vi sang m ASCII
MOV Time_Buf, AL ;Ct vo chui
MOV Time_Buf+1, AH
;i Pht (trong CL) tu s thp phn sang m ASCII ri
;ct vo Time_Buf
MOV AL, CL ;AX cha Pht
MOV AH, 0
MOV DL, 10 ;Chia AX cho 10
DIV DL ;AL cha s hng chc cua Pht
;AH cha s hng don vi cua Pht
ADD AL, 30h ;i sang m ASCII
ADD AH, 30h
MOV Time_Buf+3, AL ;Ct vo chui (sau du hai chm)
MOV Time_Buf+4, AH
;i Giy (trong DH) tu s thp phn sang m ASCII ri
;ct vo Time_Buf
MOV AL, DH ;AX cha Giy
MOV AH, 0
MOV DL, 10 ;Chia AX cho 10
Bi giang hop ng Chuong VIII: Su dung ngt trong hop ng
65
DIV DL ;AL cha s hng chc cua Giy
;AH cha s hng don vi cua Giy
OR AX, 3030h ;i sang m ASCII
MOV Time_Buf+6, AL
MOV Time_Buf+7, AH
;Hin chui cha thi gian (Time_Buf) ra mn hnh.
MOV AH, 9 ;Chc nang s 9
LEA DX, Time_Buf ;Ly dia chi chui k t dat vo
;thanh ghi DX
INT 21h ;Goi ngt
MOV AH, 4Ch ;Kt thc
INT 21h
MAIN ENDP
END MAIN
Giai thch:
Chuong trnh trn s hin ra mn hnh gio cua dng h h thng duoi dang
HH:MM:SS (Gio:Pht:Giy). Cc gi tri thoi gian duoc di sang dang k tu ri
ct vo chui Time_Buf. Chui ny duoc kt thc boi $ d c th hin thi bng
chuac nng s 9 cua ngt 21h.
Sau khi goi ngt, cc gi tri gio, pht v giy duoc chua trong cc thanh ghi CH,
CL, DH. Chng l cc s thp phn c 2 chu s, mun hin thi chng cn tch
ring chu s hng chuc v hng don vi ra, sau d chuyn di sang m ASCII
tuong ung.
V du:
Gia su AX dang chua s thp phn 46.
D tch ring hng chuc v hng don vi, ta dem chia AX cho 10. Nhu vy Thuong =
4 = AL v S du = 6 = AH.
D di mt s sang m ASCII ta dem s d cng voi 30h (xem lai chuong III):
Chu s hng chuc: AL + 30h = 34h
Chu s hng don vi: AH + 30h = 36h
Mt cch khc d di sang m ASCII l thuc hin php ton OR voi 30h:
4 OR 30h = 34h
6 OR 30h = 36h
Vy s thp phn 46 ung voi 2 k tu c m ASCII l 34h v 36h.
8.4 Bang vector ngt
Cc chuong trnh xu l ngt nm trong b nho o nhung vi tr khc nhau, dia chi cua
chng duoc goi l vector ngt. Bang vector ngt l noi luu giu nhung dia chi ny.
Bang vector ngt c kch thuoc 1024 byte (= 400h byte) v nm o ngay du b nho:
Bi giang hop ng Chuong VIII: Su dung ngt trong hop ng
66
...
003FFh
...
00002h
00001h
00000h
Mi dia chi bao gm 4 byte (2 byte thp cho offset 2 byte cao cho segment). C tt ca
256 ngt, do d kch thuoc cua bang = 256 x 4 byte = 1024 byte.
Nu nguoi su dung mun vit cc chuong trnh xu l ngt cua ring mnh (khng
mun dng cc chuong trnh c sn cua DOS hay BIOS) th cn tc dng toi bang vector
ngt ny. Cc buoc thuc hin nhu sau:
Buoc 1: Vit chuong trnh xu l ngt moi.
Buoc 2: Nap chuong trnh xu l ngt moi vo b nho.
Buoc 3: Truy nhp vo bang vector ngt d thay th dia chi cua chuong trnh xu l ngt
cu bng dia chi cua chuong trnh tu vit.
Nguoi su dung c th tu lp trnh truy nhp vo bang vector d tm kim dia chi cua
cc ngt (cu mi ngt ung voi 4 byte), hoc don gian hon l su dung cc chuc nng c
sn cua ngt 21h:
Chuc nng s 35h: Xc dinh dia chi cua chuong trnh xu l ngt
Vo: AH = 35h
AL = S hiu ngt
Ra: ES:BX chua dia chi cua chuong trnh xu l ngt
V du:
Hy xc dinh dia chi cua chuong trnh xu l ngt 13h.
Giai:
MOV AH, 35h
MOV AL, 13h
INT 21h
Chuc nng s 25h: Thay th dia chi cua chuong trnh xu l ngt
Vo: AH = 25h
AL = S hiu ngt
DS:DX = Dia chi cua chuong trnh xu l ngt moi
V du:
Hy thay th chuong trnh xu l ngt 13h bng mt thu tuc do nguoi dng tu vit.
Giai:
Gia su thu tuc do nguoi dng tu vit c tn l NewProc.
MOV AH, 25h
MOV AL, 13h
Bi giang hop ng Chuong VIII: Su dung ngt trong hop ng
67
MOV BX, SEG NewProc
MOV DS, BX ;DS chua segment cua thu tuc tu vit
MOV DX, OFFSET NewProc ;DX chua offset cua thu tuc tu vit
INT 21h
O dy ta su dung cc ton tu gia SEG v OFFSET d ly dia chi cua thu tuc NewProc.

You might also like