Bài giảng hợp ngữ - Chương 8
lượt xem 21
download
Tài liệu tham khảo Bài giảng hợp ngữ gồm 9 chương - Chương 8 Sử dụng ngắt trong hợp ngữ
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng hợp ngữ - Chương 8
- Bài gi ng h p ng Ch ng VIII: S d ng ng t trong h p ng CH NG VIII: S D NG NG T TRONG H P NG 8.1 Khái ni m ng t Trong ch ng II ta ã c p t i khái ni m ch ng trình ng t nh ng ch a gi i thích ng t là gì. Có th tóm t t v khái ni m ng t nh sau: Ng t là hành ng d ng ch ng trình ang ch y th c hi n m t ch ng trình khác (ch ng trình này c g i là ch ng trình x lý ng t). vi x lý s d ng các công vi c ang th c hi n khi nó nh n c m t t ín hi u yêu c u ng t r i trao quy n u khi n i cho ch ng trình x lý ng t. Tín hi u yêu c u ng t có th do m t thi t b p h n c ng ho c do m t l nh INT trong ch ng trình sinh ra. Quá trình ng t c mô t trong hình i ây: Ch ng trình b ng t Ch ng trình x lý ng t nh 1 nh 2 nh 1 nh 2 ... ... INT ... IRET Ch ng trình x lý ng t c n c k t thúc b ng l nh IRET sau khi th c hi n xong có th quay tr v th c hi n ti p ch ng trình b ng t tr c ó. Có nhi u lo i ng t khác nhau, p hân bi t các ng t c n d a vào s hi u c a chúng. B vi x lý 8086 có th qu n lý 256 ng t, c ánh s l n l t t 0, 1, 2,..., FFh. D i â y là b ng danh sách các ng t: hi u ng t Ch c n ng 0 – 1Fh Ng t c a BIOS 20h – 3Fh Ng t c a DOS 40h – 7Fh D tr 80h – F0h Dùng cho ch ng trình BASIC trong ROM F1h – FFh Không s d ng Gi i thích: Ch ng trình x lý ng t có th là m t b ph n c a BIOS hay c a DOS, c ng có th do ng i s d ng t vi t. Ta c n phân bi t rõ hai khái ni m: “Ng t” và “Ch ng trình x lý ng t”. Không ph i s hi u ng t nào c ng có có ch ng trình x lý ng t t ng ng. Khi m t ng t có s hi u t 0 – 1Fh xu t hi n thì chúng s c x lý b i các ch ng trình vi t s n n m trong ROM BIOS (ch y u là gi i quy t các yêu c u vào/ ra c b n). Còn n u ng t có s hi u t 20h – 3Fh thì s do h u hành DOS x lý. 60
- Bài gi ng h p ng Ch ng VIII: S d ng ng t trong h p ng 8.2 Phân lo i ng t phân lo i c n d a trên m t t iêu chí nào ó, ây ta s phân lo i ng t d a trên cách th c phát sinh ng t, t m chia làm hai lo i sau: Ng t m m và Ng t c ng. 8.2.1 Ng t m m Ta g i m t ng t là ng t m m n u nó c phát sinh khi có l i g i ng t b ng l nh INT trong ch ng trình. Cú pháp c a l nh INT là: INT Ví d : INT 21h ;G i ng t 21h c a DOS INT 13h ;G i ng t 13h c a BIOS 8.2.2 Ng t c ng M t ng t c ng phát sinh khi có m t t hi t b ph n c ng g i tín hi u yêu c u ng t t i b vi x lý. Ví d : Khi ta gõ m t phím trên bàn phím hay b m chu t, s có tín hi u ng t g i t i b vi x lý yêu c u x lý hành ng v a th c hi n. Các ng t c kích ho t t thi t b ngoài (bàn phím, chu t...) gi ng nh ví d trên c g i là Ng t c ng ngoài. Còn n u ng t phát sinh b i các kinh ki n b tr n m trên mainboard thì c g i là Ng t c ng trong (hay ng t c ng n i b ). 8.3 M t s ng t thông d ng Trong ph n này ta s tìm hi u tác d ng c a m t s ng t và cách th c s d ng chúng trong ch ng trình. Nói chung m i ng t th ng có nhi u ch c n ng khác nhau, s hi u ch c n ng c n c t vào thanh ghi AH tr c khi g i ng t b ng l nh INT. 8.3.1 Ng t 17h – Vào/ra máy in ây là ng t do BIOS qu n lý, nó có ba ch c n ng: a) Ch c n ng s 0: a m t kí t ra máy in Các tham s : AH = 0 AL = Mã ASCII c a kí t c n in DX = S hi u máy in Ví d : G i kí t ‘A’ ra máy in. Gi i: MOV AH, 0 MOV AL, ‘A’ ;Kí t c n in MOV DX, 0 ;Máy in s 0 INT 17h MOV AH, 0 MOV AL, 0Ah ;in ti p kí t xu ng dòng INT 17h 61
- Bài gi ng h p ng Ch ng VIII: S d ng ng t trong h p ng b) Ch c n ng s 1: Kh i t o c ng máy in Các tham s : AH = 1 DX = S hi u máy in c) Ch c n ng s 2: Ki m tra tr ng thái máy in Vào: AH = 2 DX = S hi u máy in Ra: AH ch a tr ng thái máy in Các tr ng thái c a máy in c li t kê trong b ng sau: Các bít c a AH Giá tr bít Ý ngh a Bít 0 1 Máy in quá th i gian Bít 1 Không s d ng Bít 2 Không s d ng Bít 3 1 L i vào ra Bít 4 1 Máy in c ch n Bít 5 1 Không có gi y Bít 6 1 Ch p nh n in Bít 7 1 Máy in không b n 8.3.2 Ng t 21h ây là ng t hay dùng nh t c a DOS, nó có r t nhi u ch c n ng. các ch ng tr c ta ã s d ng b n ch c n ng c a ng t này (ch c n ng s 1, 2, 9 và 4Ch). Trong ph n này ta tìm hi u thêm m t s ch c n ng khác. a) Ch c n ng s 39h: T o m t th m c trên a Các tham s : AH = 39h DS:DX = a ch c a chu i ch a ng d n (chu i này ph i có t n cùng là 0) Ví d : T o th m c ASM trong a C. Gi i: 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 ;Ch c n ng s 39h: t o th m c LEA DX, DuongDan ;L y a ch offset c a chu i t ;vào DX 62
- Bài gi ng h p ng Ch ng VIII: S d ng ng t trong h p ng INT 21h ;G i ng t MOV AH, 4Ch ;K t thúc INT 21h MAIN ENDP END MAIN b) Ch c n ng s 3Ah: Xoá m t th m c Các tham s : AH = 3Ah DS:DX = a ch c a chu i ch a ng d n (chu i này ph i có t n cùng là 0) Cách s d ng t ng t nh ch c n ng 39h trên. c) Ch c n ng s 41h: Xoá file Các tham s : AH = 41h DS:DX = a ch c a chu i ch a ng d n (chu i này ph i có t n cùng là 0) Ví d : Xoá file Vidu.txt trong th m c g c c a a C. Gi i: 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 ;Ch c n ng s 41h: xoá file LEA DX, DuongDan ;L y a ch offset c a chu i ; t vào DX INT 21h ;G i ng t MOV AH, 4Ch ;K t thúc INT 21h MAIN ENDP END MAIN d) Ch c n ng s 2Ch: L y th i gian t ng h h th ng Vào: AH = 2Ch Ra: CH = gi (0 CH 23) CL = phút (0 CL 59) DH = giây (0 DH 59) 63
- Bài gi ng h p ng Ch ng VIII: S d ng ng t trong h p ng DL = % giây (0 DL 99) Ví d : Vi t ch ng trình hi n ra màn hình gi hi n t i c a h th ng. Gi i: 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 ;Ch c n ng s 2Ch: c th i gian INT 21h ;G i ng t ; i Gi (trong CH) t s th p phân sang mã ASCII r i ;c t vào Time_Buf MOV AL, CH ;Chuy n Gi vào AX MOV AH, 0 MOV DL, 10 ;Chia AX cho 10 DIV DL ;AL = Th ng = S hàng ch c ;AH = S d = S hàng nv ADD AL, 30h ; i s hàng ch c sang mã ASCII ADD AH, 30h ; i s hàng n v sang mã ASCII MOV Time_Buf, AL ;C t vào chu i MOV Time_Buf+1, AH ; i Phút (trong CL) t s th p phân sang mã ASCII r i ;c t vào Time_Buf MOV AL, CL ;AX ch a Phút MOV AH, 0 MOV DL, 10 ;Chia AX cho 10 DIV DL ;AL ch a s hàng ch c c a Phút ;AH ch a s hàng n v c a Phút ADD AL, 30h ; i sang mã ASCII ADD AH, 30h MOV Time_Buf+3, AL ;C t vào chu i (sau d u hai ch m) MOV Time_Buf+4, AH ; i Giây (trong DH) t s th p phân sang mã ASCII r i ;c t vào Time_Buf MOV AL, DH ;AX ch a Giây MOV AH, 0 MOV DL, 10 ;Chia AX cho 10 64
- Bài gi ng h p ng Ch ng VIII: S d ng ng t trong h p ng DIV DL ;AL ch a s hàng ch c c a Giây ;AH ch a s hàng n v c a Giây OR AX, 3030h ; i sang mã ASCII MOV Time_Buf+6, AL MOV Time_Buf+7, AH ;Hi n chu i ch a th i gian (Time_Buf) ra màn hình. MOV AH, 9 ;Ch c n ng s 9 LEA DX, Time_Buf ;L y a ch chu i kí t t vào ;thanh ghi DX INT 21h ;G i ng t MOV AH, 4Ch ;K t thúc INT 21h MAIN ENDP END MAIN Gi i thích: • Ch ng trình trên s hi n ra màn hình gi c a d ng h h th ng d i d ng HH:MM:SS (Gi :Phút:Giây). Các giá tr th i gian c i sang d ng kí t r i t vào chu i Time_Buf. Chu i này c k t thúc b i ‘$’ có th hi n th b ng ch ac n ng s 9 c a ng t 21h. • Sau khi g i ng t, các giá tr gi , phút và giây c ch a trong các thanh ghi CH, CL, DH. Chúng là các s th p phân có 2 ch s , mu n hi n th chúng c n tách riêng ch s hàng ch c và hàng n v ra, sau ó chuy n i sang mã ASCII ng ng. Ví d : Gi s AX ang ch a s th p phân 46. t ách riêng hàng ch c và hàng n v , t a em chia AX cho 10. Nh v y Th ng = 4 = AL và S d = 6 = AH. i m t s sang mã ASCII ta em s ó c ng v i 30h (xem l i ch ng III): Ch s hàng ch c: AL + 30h = 34h Ch s hàng n v : AH + 30h = 36h t cách khác i sang mã ASCII là th c hi n phép toán OR v i 30h: 4 OR 30h = 34h 6 OR 30h = 36h V y s th p phân 46 ng v i 2 kí t có mã ASCII là 34h và 36h. 8.4 B ng vector ng t Các ch ng trình x lý ng t n m trong b nh nh ng v trí khác nhau, a ch c a chúng c g i là vector ng t. B ng vector ng t là n i l u gi nh ng a ch này. ng vector ng t có kích th c 1024 byte (= 400h byte) và n m ngay u b nh : 65
- Bài gi ng h p ng Ch ng VIII: S d ng ng t trong h p ng ... 003FFh ... 00002h 00001h 00000h M i a ch bao g m 4 byte (2 byte th p cho offset 2 byte cao cho segment). Có t t c 256 ng t, do ó kích th c c a b ng = 256 x 4 byte = 1024 byte. N u ng i s d ng mu n vi t các ch ng trình x lý ng t c a riêng mình (không mu n dùng các ch ng trình có s n c a DOS hay BIOS) thì c n tác ng t i b ng vector ng t này. Các b c th c hi n nh sau: c 1: Vi t ch ng trình x lý ng t m i. c 2: N p ch ng trình x lý ng t m i vào b nh . c 3: Truy nh p vào b ng vector ng t thay th a ch c a ch ng trình x lý ng t b ng a ch c a ch ng trình t vi t. Ng i s d ng có th t l p t rình truy nh p vào b ng vector tìm ki m a ch c a các ng t (c m i ng t ng v i 4 byte), ho c n gi n h n là s d ng các ch c n ng có n c a ng t 21h: • Ch c n ng s 35h: Xác nh a ch c a ch ng trình x lý ng t Vào: AH = 35h AL = S hi u ng t Ra: ES:BX ch a a ch c a ch ng trình x lý ng t Ví d : Hãy xác nh a ch c a ch ng trình x lý ng t 13h. Gi i: MOV AH, 35h MOV AL, 13h INT 21h • Ch c n ng s 25h: Thay th a ch c a ch ng trình x lý ng t Vào: AH = 25h AL = S hi u ng t DS:DX = a ch c a ch ng trình x lý ng t m i Ví d : Hãy thay th ch ng trình x lý ng t 13h b ng m t t h t c do ng i dùng t vi t. Gi i: Gi s t h t c do ng i dùng t vi t có tên là NewProc. MOV AH, 25h MOV AL, 13h 66
- Bài gi ng h p ng Ch ng VIII: S d ng ng t trong h p ng MOV BX, SEG NewProc MOV DS, BX ;DS ch a segment c a th t c t vi t MOV DX, OFFSET NewProc ;DX ch a offset c a th t c t vi t INT 21h ây ta s d ng các toán t gi SEG và OFFSET l y a ch c a th t c NewProc. 67
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Giáo trình kỹ thuật vi xử lý tập 1 part 1
54 p | 593 | 224
-
BÀI 7.1: LẬP TRÌNH HỢP NGỮ
44 p | 134 | 18
-
Giáo trình Trí tuệ Nhân tạo part 8
8 p | 98 | 15
-
Tự học Indesign CS2 : Văn bản part 6
9 p | 144 | 13
-
Tự học Indesign CS2 : Văn bản part 8
9 p | 117 | 13
-
Lập trình iSO (Module 2) - TTTH ĐH KHTN
143 p | 87 | 11
-
Tài liệu Cấu trúc máy tính& Hợp ngữTổ chức CPU_Chương 2
19 p | 92 | 5
-
Bài giảng Ngôn ngữ lập trình C/C++ (Bài giảng tuần 8) – Nguyễn Hải Châu
4 p | 85 | 5
-
Bài giảng Tin học đại cương: Bài 8 - Nguyễn Mạnh Hiển
15 p | 58 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn