Bài giảng Công nghệ thông tin - Chương 11: Lập trình xử lí màn hình và bàn phím
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Công nghệ thông tin - Chương 11: Lập trình xử lí màn hình và bàn phím", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- bai_giang_cong_nghe_thong_tin_chuong_11_lap_trinh_xu_li_man.ppt
Nội dung text: Bài giảng Công nghệ thông tin - Chương 11: Lập trình xử lí màn hình và bàn phím
- LẬP TRÌNH XỬ LÝ MÀN HÌNH & BÀN PHÍM Giôùi thieäu maøn hình & vieäc quaûn lyù maøn hình Hieåu ñöôïc toå chöùc cuûa maøn hình. So saùnh chöùc naêng ñieàu khieån maøn hình cuûa INT 10h cuûa ROM BIOS vôùi chöùc naêng cuûa INT 21h. Bieát caùch laäp trình quaûn lyù maøn hình trong ASM. Bieát caùch laäp trình xöû lyù phím vaø 1 soá öùng duïng cuûa noù. Chuoung 10 Lap trinh xu ly man hinh 1
- MÀN HÌNH ĐẶC TR ƯNG C ỦA MÀN HÌNH ĐỘ PHÂN GIÀI Ñoä phaân giaûi : soá ñieåm trong maøn hình.Hình aûnh ma trận goàm 1 löôùi hình chöõ nhaät caùc ñieåm (thí duï 640*480). Ñoä phaân giaûi thöôøng cho döôùi daïng h x v trong ñoù h laø soá löôïng pixel theo doøng vaø v laø soá löôïng pixel theo coät. Chuoung 10 Lap trinh xu ly man hinh 2
- Chuoung 10 Lap trinh xu ly man hinh 3
- CARD MÀN HÌNH Độ phân giải Cung cấp các chế độ MH Số điểm ngang x số điểm dọc x số màu (số bit màu) CHẾ ĐỘ 800x600x16 bits = 960 000 bytes 1Mb ĐỒ HỌA 1024x 768x32 bits 3.145.728 bytes 4Mb RAM MÀN HÌNH Dung lượng Chuoung 10 Lap trinh xu ly man hinh 4
- Địa chỉ (i,j) = B800:0000+ (i*160+j*2) Chuoung 10 Lap trinh xu ly man hinh 5
- Chuoung 10 Lap trinh xu ly man hinh 6
- QUAÛN LYÙ MAØN HÌNH Maøn hình ñöôïc ñieàu khieån hieäu quaû nhôø caùc chöùc naêng cuûa INT 10H trong Rom Bios. Caùc chöùc naêng naøy quaûn lyù maøn hình toát hôn caùc chöùc naêng cuûa INT 21h cuûa Dos. Beân caïnh 1 soá chöùc naêng do INT 21h cuûa Dos cung caáp, 1 soá taùc vuï ñöôïc thöïc hieän treân maøn hình nhôø caùc chöùc naêng trong INT 10h nhö xoaù maøn hình, ñònh vò con troû, thieát laäp maøn hình IBM PC hoã trôï 3 loaïi maøn hình cô baûn coù teân tuøy thuoäc vaøo loaïi Card maøn hình caém treân Bus môû roäng treân Mianboard nhö : Monochrome chæ hieån thò text ñôn saéc; CGA (Color Graphic Adaptor) cho pheùp hieån thò text vaø ñoà hoïa; EGA (Enhanced Graphics Adaptor) hieån thò text vaø ñoà hoïa vôùi ñoä phaân giaûi cao hôn. Ngoaøi ra coøn coù card VGA (Video Graphics Array), SVGA . Chuoung 10 Lap trinh xu ly man hinh 7
- THUỘC TÍNH MÀN HÌNH Chuoung 10 Lap trinh xu ly man hinh 8
- THUOÄC TÍNH MAØN HÌNH Moãi vò trí treân maøn hình coù theå löu 1 kyù töï ñôn cuøng vôùi thuoäc tính rieâng cuûa kyù töï naøy chaúng haïn nhö ñaûo maøu, nhaáp nhaùy, chieáu saùng, gaïch döôùi Thuoäc tính cuûa kyù töï ñöôïc löu trong 1 byte goïi laø byte thuoäc tính. HIGHT/LOW BIT 7 6 5 4 3 2 1 0 00 00 00 00 00 11 11 11 BLINK BACKGROUND BITS FOREGROUND BITS Chuoung 10 Lap trinh xu ly man hinh 9
- THUOÄC TÍNH MAØN HÌNH Ex : caùc kyù töï maøu vaøng chanh nhaáp nhaùy treân neàn maøu naâu BLINKBLINK == 10000000B10000000B REDRED == 100B100B MOVMOV BH,BH, (RED(RED SHLSHL 4)4) +YELLOW+BLINK+YELLOW+BLINK ÑEÅ TAÏO 1 BYTE THUOÄC TÍNH VIDEO TÖØ 2 MAØU , TA DUØNG SHL CHUYEÅN CAÙC BIT MAØU NEÀN SANG TRAÙI 4 VI TRÍ. Chuoung 10 Lap trinh xu ly man hinh 10
- VUØNG HIEÅN THÒ MAØN HÌNH Vuøng hieån thò cuûa maøn hình ñôn saéc ôû ñòa chæ B000h trong Bios. Vuøng hieån thò video ñoà hoïa maøu cô baûn bắt ñaàu töø vò trí B800h cuûa Bios. Chuoung 10 Lap trinh xu ly man hinh 11
- THUOÄC TÍNH MAØN HÌNH CaùcCaùc thuoäcthuoäc tínhtính chuaånchuaån cuûacuûa maønmaøn hìnhhình MonochromeMonochrome :: HEXHEX VALUEVALUE ATTRIBUTEATTRIBUTE 07H07H NormalNormal –– thöôøngthöôøng 87H87H BlinkingBlinking –– nhaápnhaáp nhaùynhaùy 0FH0FH BrightBright –– saùngsaùng 70H70H ReverseReverse –– ñaûoñaûo thuoäcthuoäc tínhtính 01H01H UnderlineUnderline 09H09H BrightBright UnderlineUnderline Chuoung 10 Lap trinh xu ly man hinh 12
- THUOÄC TÍNH MAØN HÌNH (tt) BaátBaát kyøkyø 11 thuoäcthuoäc tínhtính naøonaøo cuõngcuõng coùcoù theåtheå theâmtheâm thuoäcthuoäc tínhtính nhaápnhaáp nhaùynhaùy baèngbaèng caùchcaùch chocho bitbit 77 coùcoù tròtrò laølaø 1.1. ThíThí duïduï normalnormal blinkingblinking 87H,87H, brightbright linkinglinking 8Fh.8Fh. Card maøn hình CGA vaø EGA khoâng hoã trôï thuoäc tính Underline nhöng cho pheùp söû duïng maøu trong text mode. Caùc maøu ñöôïc chia laøm 2 loaïi : maøu chöõ (Foreground) vaø maøu neàn (Background). Bit 6,5,4 : maøu neàn Bit 2,1,0 : maøu chöõ Bit 3 : ñoä saùng Chuoung 10 Lap trinh xu ly man hinh 13
- BAÛNG MAØU (COLOR PALETTE) FOREGROUND OR BACKGROUND COLOR FOREGROUND COLOR ONLY 000 BLACK 1000 GRAY 001 BLUE 1001 LIGHT BLUE 010 GREEN 1010 LIGHT GREEN 011 CYAN 1011 LIGHT CYAN 100 RED 1100 LIGHT RED 101 MAGENTA 1101 LIGHT MAGENTA 110 BROWN 1110 YELLOW 111 WHITE 1111 BRIGHT WHITE EX : 01101110 : 06EH neàn Brown, chöõ Yellow, khoâng nhaáp nhaùy. EX : 11010010 : 0D2H neàn Magenta, chöõ Green, nhaáp nhaùy. Chuoung 10 Lap trinh xu ly man hinh 14
- CAÙCCAÙC MODEMODE MAØNMAØN HÌNHHÌNH CaùcCaùc CardCard maønmaøn hìnhhình CGA,EGA,VGACGA,EGA,VGA chocho pheùppheùp chuyeånchuyeån ñoåiñoåi VideoVideo modemode nhôønhôø INTINT 10h.10h. Caùc trình öùng duïng thöôøng duøng INT 10h ñeå tìm Video mode hieän haønh. Ex: 1 öùng duïng thöôøng muoán theå hieän ñoà hoïa vôùi ñoä phaân giaûi cao (640x200) phaûi kieåm tra chaéc chaén raèng MT hieän ñang söû duïng ñang duøng Card maøn hình CGA,VGA hoaëc EGA. Chuoung 10 Lap trinh xu ly man hinh 15
- CAÙCCAÙC MODEMODE MAØNMAØN HÌNHHÌNH CoùCoù 22 cheácheá ñoäñoä laømlaøm vieäcvieäc cuûacuûa maønmaøn hìnhhình :: texttext vaøvaø ñoàñoà hoïa.hoïa. Maøn hình laø hình aûnh cuûa Video Ram. Cheá ñoä maøn hình : ÔÛû cheá ñoä text moät trang maøn hình caân toái thieåu bao nhieâu byte cuûa 25 doøng vaø 80 coät VIDEO Ram 25 doøng vaø 40 coät. 25X80X2 = 4000BYTES RAM VIDEO VUØNG NHÔÙ NAØY NAÈM TREÂN CARD MH Chuoung 10 Lap trinh xu ly man hinh 16
- CAÙCCAÙC MODEMODE MAØNMAØN HÌNHHÌNH Caùc Video mode thoâng duïng : Mode Moâ taû 02h 80x25 black and white text 03h 80x25 color text 04h 320x400 4 color graphics 06h 640x200 2 color graphics 07h 80x25 black and white text, monochrome adaptor only 0Dh 320x200 16 color graphics 0Eh 640x200 16 colors graphics, EGA, VGA only 0Fh 640x350 monochrome graphics, EGA, VGA only 10h 640x350 16 colors graphics, EGA, VGA only Chuoung 10 Lap trinh xu ly man hinh 17
- TRANGTRANG MAØNMAØN HÌNHHÌNH (VIDEO(VIDEO PAGE)PAGE) TaátTaát caûcaû caùccaùc CardCard CGACGA ñeàuñeàu coùcoù khaûkhaû naêngnaêng löulöu tröõtröõ nhieàunhieàu maønmaøn hìnhhình texttext goïigoïi laølaø caùccaùc trangtrang maønmaøn hìnhhình (video(video page)page) trongtrong boäboä nhôù.nhôù. RieângRieâng cardcard monomono chæchæ hieånhieån thòthò 11 trangtrang –– trangtrang 0.0. SoáSoá trangtrang phuïphuï thuoäcthuoäc vaøovaøo modemode maønmaøn hình.hình. TrongTrong cardcard maønmaøn hìnhhình maøu,maøu, tata coùcoù theåtheå ghighi vaøovaøo 11 trangtrang naøynaøy trongtrong khikhi hieånhieån thòthò trangtrang khaùckhaùc hoaëchoaëc chuyeånchuyeån ñoåiñoåi quaqua laïilaïi vòvò trítrí giöõagiöõa caùccaùc trang.trang. CaùcCaùc trangtrang ñöôïcñöôïc ñaùnhñaùnh soásoá töøtöø 00 ñeánñeán 7.7. Chuoung 10 Lap trinh xu ly man hinh 18
- TRANGTRANG MAØNMAØN HÌNHHÌNH (VIDEO(VIDEO PAGE)PAGE) soásoá trangtrang modemode adaptoradaptor 00 07h07h monochromemonochrome 0-70-7 00h00h –– 01h01h CGACGA 0-30-3 02h-03h02h-03h CGACGA 0-70-7 02h-03h02h-03h EGAEGA 0-70-7 0Dh0Dh EGAEGA 0-30-3 0Eh0Eh EGAEGA 0-10-1 0Fh,0Fh, 10h10h EGAEGA Chuoung 10 Lap trinh xu ly man hinh 19
- THÍTHÍ DUÏDUÏ VEÀVEÀ TRANGTRANG MHMH ÑEÅÑEÅ HIEÅNHIEÅN THÒTHÒ 11 KYÙKYÙ TÖÏTÖÏ VÔÙIVÔÙI THUOÄCTHUOÄC TÍNHTÍNH CUÛACUÛA NOÙNOÙ TAÏITAÏI 11 VÒVÒ TRÍTRÍ BAÁTBAÁT KYØKYØ CHÖÙACHÖÙA KYÙKYÙ TÖÏTÖÏ VAØVAØ THUOÄCTHUOÄC TÍNHTÍNH VAØOVAØO TÖØTÖØ TÖÔNGTÖÔNG ÖÙNGÖÙNG TRONGTRONG TRANGTRANG HIEÅNHIEÅN THÒTHÒ HOAÏTHOAÏT ÑOÄNG.ÑOÄNG. EX : Laáp ñaày maøn hình baèng chöõ ‘A’ maøu ñoû treân neàn xanh Chuoung 10 Lap trinh xu ly man hinh 20
- CHẾ ĐỘ ĐỒ HỌA Chuoung 10 Lap trinh xu ly man hinh 21
- Truy xuất thiết bị xuất chuẩn (màn hình) . 1. Chọn chế độ hiển thị : Chức năng AH = 0, ngắt 10H Vào : AH = 0, AL = kiểu Ví dụ : thiết lập chế độ văn bản màu XOR AH, AH MOV AL, 3 ; chế độ văn bản màu 80 x 25 INT 10H Chuoung 10 Lap trinh xu ly man hinh 22
- THAY ĐỔI SIZE CON TRỎ MÀN HÌNH Chức năng AH = 1, ngắt 10H Vào : AH = 1, CH = dòng quét đầu, CL = dòng quét cuối Ví dụ : thiết lập con trỏ với kích thước lớn nhất MOV AH, 1 MOV CH, 0 ; dòng bắt đầu MOV CL, 13 ; dòng kết thúc INT 10H Chuoung 10 Lap trinh xu ly man hinh 23
- DỊCH CHUYỂN CON TRỎ Chức năng AH = 2, ngắt 10H Vào : AH = 2, DH = dòng mới (0-24), DL = cột mới (0-79) BH = số hiệu trang Ví dụ : Di chuyển con trỏ đến giữa màn hình 80 x 25 của trang 0 MOV AH, 2 XOR BH, BH ; trang 0 MOV DX, 0C27H ; dòng 12 cột 39 INT 10H Chuoung 10 Lap trinh xu ly man hinh 24
- LẤY VỊ TRÍ KÍCH THUỚC CON TRỎ HiỆN HÀNH Chức năng AH = 3, ngắt 10H Vào : AH = 3, BH = số hiệu trang Ra : DH = dòng, DL = cột, CH = dòng quét đầu, CL = dòng quét cuối Ví dụ : Di chuyển con trỏ lên một dòng nếu nó không ở dòng trên cùng MOV AH, 3 XOR BH, BH ; trang 0 INT 10H OR DH, DH ; dòng trên cùng DH = 0 ? JZ exit MOV AH, 2 ; chức năng dịch con trỏ DEC DH ; giảm một dòng INT 10H Chuoungexit :10 Lap trinh xu ly man hinh 25
- CUỘN MÀN HÌNH Chức năng AH = 6, ngắt 10H Vào : AH = 6, AL = số dòng cuốn (= 0 là toàn màn hình) Ra : BH = thuộc tính các dòng trống , CH, CL = dòng, cột góc trái trên DH, DL = dòng, cột góc phải dưới của cửa sổ Ví dụ : Xoá đen màn hình 80 x 25 MOV AH, 6 XOR AL, AL XOR CX, CX MOV DX, 184FH ; góc phải dưới MOV BH, 7 INT 10H Chuoung 10 Lap trinh xu ly man hinh 26
- Ví dụ tổng hợp : Viết chương trình thực hiện như sau: . Lập chế độ hiển thi màu 80 x 25 . Xoá cửa sổ tại góc trái trên : cột 26 dòng 8 và góc phải dưới tại cột 52 dòng 16 thành màu đỏ. . Sau đó hiển thị kí tự A màu cam tại vị trí con trỏ. Chuoung 10 Lap trinh xu ly man hinh 27
- CAÙCCAÙC HAØMHAØM XÖÛXÖÛ LYÙLYÙ MAØNMAØN HÌNHHÌNH Caùc chöùc naêng xöû lyù maøn hình naèm trong INT 10h Chöùc naêng (ñeå trong AH ) nhieäm vuï 0 set video mode choïn mono, text, graphic hoaëc color mode 1 Set cursor line thieát laäp 1 doøng queùt taïo daïng cho cursor. 2 Set cursor position ñònh vò cursor 3 get cursor position laáy vò trí cursor 4 ñoïc vò trí vaø traïng thaùi cuûa buùt veõ light pen. 5 choïn trang muoán hieån thò. 6 cuoän cöûa soå hieän haønh leân, theá caùc doøng cuoän baèng ktroáng. 7 cuoän cöûa soå hieän haønh xuoáng. 8 ñoïc kyù töï vaø thuoäc tính kyù töï taïi vò trí con troû hieän haønh. 9 ghi kyù töï vaø thuoäc tính kyù töï taïi vò trí con troû hieän haønh. Chuoung 10 Lap trinh xu ly man hinh 28
- CAÙCCAÙC HAØMHAØM XÖÛXÖÛ LYÙLYÙ MAØNMAØN HÌNHHÌNH Caùc chöùc naêng xöû lyù maøn hình naèm trong INT 10h Chöùc naêng (ñeå trong AH ) nhieäm vuï 0Ah Ghi kyù töï boû qua thuoäc tính kyù töï vaøo vò trí con troû hieän haønh. 0Bh Choïn palette maøu 0Ch Ghi 1 ñieåm graphic trong graphics mode. 0Dh Ñoïc giaù trò maøu cuûa 1 pixel coù vò trí ñaõ bieát. 0Eh Ghi kyù töï ra maøn hình vaø caäp nhaät con troû sang phaûi 1 vtrí. 0Fh Laáy mode maøn hình hieän haønh ñeå xem ñang ôû cheá ñoä text hay graphics. Chuoung 10 Lap trinh xu ly man hinh 29
- ThieátThieát laäplaäp videovideo mode.mode. AHAH == 00 ALAL == mode.mode. NeáuNeáu bitbit caocao cuûacuûa ALAL =0=0 seõseõ töïtöï ñoängñoäng xoaùxoaù maønmaøn hình.hình. NeáuNeáu bitbit caocao cuûacuûa ALAL == 11 khoângkhoâng xoaùxoaù maønmaøn hình.hình. ExEx :: thieátthieát laäplaäp 80x2580x25 colorcolor texttext modemode MOVMOV AH,AH, 00 MOVMOV AL,AL, 33 ;; modemode 33 ,, coùcoù xoaùxoaù maønmaøn hìnhhình INTINT 10h10h LÖU YÙ : Khoâng muoán xoaù maøn hình thì AL = 83H Chuoung 10 Lap trinh xu ly man hinh 30
- ExEx :: ñoaïnñoaïn chöôngchöông trìnhtrình sausau seõseõ thieátthieát laäplaäp videovideo modemode laølaø highthight resolutionresolution graphics,graphics, ñôïiñôïi goûgoû 11 phímphím sausau ñoùñoù thieátthieát laäplaäp videovideo modemode laølaø colorcolor texttext mode.mode. MOV AH, 0 ; set video mode MOV AL, 6 ; 640x200 color graphics mode INT 10h MOV AH, 1 ; ñôïi goû 1 phím INT 21H MOV AH, 0 ; set video mode MOV AL, 3 ; color text mode INT 10H Chuoung 10 Lap trinh xu ly man hinh 31
- DaïngDaïng concon troûtroû maønmaøn hìnhhình ñöôïcñöôïc taïotaïo rara baèngbaèng caùchcaùch chæchæ ñònhñònh soásoá doøngdoøng queùt.queùt. VieäcVieäc thaythay ñoåiñoåi daïngdaïng concon troûtroû chínhchính laølaø thaythay ñoåiñoåi soásoá löôïnglöôïng vaøvaø vòvò trítrí doøngdoøng queùtqueùt naøy.naøy. MaønMaøn hìnhhình monochromemonochrome duøngduøng 1313 doøngdoøng (töø(töø 00 –– 0Ch)0Ch) MaønMaøn hìnhhình CGA,VGACGA,VGA duøngduøng 88 doøngdoøng (töø(töø 0-7).0-7). 0 0 12 CGA/EGA 7 Chuoung 10 Lap trinh xu ly man hinh MONOCHROME32
- Ex: Minh hoïa Thieát laäp con troû coù hình khoái ñaëc. MOV AH , 1 MOV CH, 0 Ñeå thay ñoåi daïng con troû : MOV CL,0CH AH = 1 INT 10H CH = TOP (doøng ñaàu) CL = BOTTOM (doøng cuoái) Chuoung 10 Lap trinh xu ly man hinh 33
- Ex2: traû kích thöôùc con troû veà daïng maëc ñònh tröôùc khi thoaùt. MOV AH, 3 MOV AH , 1 MOV BH, 0 MOV CX, 0607H INT 10H INT 10H MOV SAVECURSOR, CX MOV AX, 4C00H OR CH, 00100000 INT 10H INT 21H . MOV AH, 1 MOV CX, SAVECURSOR INT 10H Ex2: löu kích thöôùc con troû hieän haønh vaøo 1 bieán tröôùc khi thay ñoåi kích thöôùc con troû ñeå sau naøy phuïc hoài laïi. Chuoung 10 Lap trinh xu ly man hinh 34
- Thieát laäp vò trí hieän haønh SET CURSOR POSITION AH = 2 ; DH = CHÆ SOÁ DOØNG ; DL = CHÆ SOÁ COÄT ; BH= TRANG MAØN HÌNH CHÖÙA CURSOR Ex : THIEÁT LAÄP CURSOR TAÏI TOÏA ÑOÄ (DOØNG 10, COÄT 20) CUÛA TRANG 0 MOV AH, 2 ; Chöùc naêng set cursor MOV DH, 10 ; doøng 10 MOV DL, 20 ; coät 20 MOV BH,0 ; trang 0 INT 10H ; goïi BIOS Chuoung 10 Lap trinh xu ly man hinh 35
- Laáy vò trí cursor hieän haønh GET CURSOR POSITION AH =3 ; BH= TRANG MAØN HÌNH MUOÁN LAÁY CURSOR Gía trò traû veà : CH= Doøng queùt ñaàu cuûa cursor CL = Doøng queùt cuoái cuûa cursor DH = vò trí doøng maøn hình DL = vò trí coät maøn hình Chuoung 10 Lap trinh xu ly man hinh 36
- Laáy vò trí cursor hieän haønh GET CURSOR POSITION Ex : laáy vò trí cuûa cursor löu vaøo bieán. Thöôøng duøng trong caùc taùc vuï menu. MOV AH, 3 MOV BH, 0 INT 10H MOV SAVECURSOR, CX MOV CURRENT_ROW , DH MOV CURRENT_COL , DL Chuoung 10 Lap trinh xu ly man hinh 37
- THIEÁT LAÄP TRANG MAØN HÌNH SET VIDEO PAGE AH = 5 ; AL = TRANG MAØN HÌNH SEÕ LAØ TRANG HIEÄN HAØNH EX : THAY ÑOÅI TRANG MH KHI GOÛ 1 PHÍM BAÁT KYØ DOSSEG MOV DX, OFFSET TRANG0 .MODEL SMALL INT 21H .STACK 100H MOV AH , 1 .CODE INT 21H MAIN PROC SANG_TRANG_1 : MOV AX, @DATA MOV AH, 5 MOV DS,AX MOV AL, 1 Chuoung 10 Lap trinh xu ly man hinh 38
- THIEÁT LAÄP TRANG MAØN HÌNH SET VIDEO PAGE INT 10H INT 10H MOV AX, 4C00H MOV AH, 9 INT 21H MOV DX, OFFSET TRANG1 MAIN ENDP INT 21H .DATA MOV AH, 1 TRANG0 DB ‘ DAY LA TRANG 0,$’ INT 21H TRANG1 DB ‘ DAY LA TRANG 1,$’ SANG_TRANG_0 : END MAIN MOV AH, 5 MOV AL, 0 Chuoung 10 Lap trinh xu ly man hinh 39
- CUOÄN MAØN HÌNH SCROLL WINDOW UP AND DOWN CUOÄN MAØN HÌNH LAØ TAÙC VUÏ LAØM CHO DÖÕ LIEÄU TRÖÔÏT LEÂN HOAËC XUOÁNG. CAÙC DOØNG DÖÕ LIEÄU BÒ CUOÁN SEÕ ÑÖÔÏC THAY THEÁ BAÈNG CAÙC DOØNG TROÁNGTA ÑÒNH NGHÓA WINDOWS NHÔØ HEÄ TOÏA ÑOÄ HAØNG COÄT VÔÙI GOÁC TOÏA ÑOÄ LAØ GOÙC TREÂN TRAÙI CUÛA MAØN HÌNH. HAØNG SEÕ THAY ÑOÁI TÖØ 0 ÑEÁN 24 TÖØ TREÂN XUOÁNG. COÄT SEÕ THAY ÑOÅI TÖØ 0 ÑEÁN 79 TÖØ TRAÙI SANG PHAÛI. TA COÙ THEÅ CUOÄN 1 VAØI DOØNG HOAËC CAÛ WINDOWS. TOAØN BOÄ WINDOWS BÒ CUOÄN MAØN HÌNH BÒ XOAÙ. Chuoung 10 Lap trinh xu ly man hinh 40
- CUOÄN MAØN HÌNH SCROLL WINDOW UP AND DOWN CAÙC THOÂNG SOÁ : CUOÄN LEÂN AH =6 ; CUOÄN XUOÁNG AH = 7 AL = SOÁ DOØNG SEÕ CUOÄN ( = 0 NEÁU CUOÄN TOAØN BOÄ MAØN HÌNH) CH, CL = TOÏA ÑOÄ HAØNG,COÄT CUÛA GOÙC TREÂN TRAÙICUÛA WINDOWS DH, DL = TOAÏ ÑOÄ HAØNG, COÄT CUÛA GOÙC DÖÔÙI PHAÛI CUÛA WINDOWS BH = THUOÄC TÍNH MAØN HÌNH CUÛA CAÙC DOØNG TROÁNG KHI MAØN HÌNH ÑAÕ CUOÄN. Chuoung 10 Lap trinh xu ly man hinh 41
- CUOÄN MAØN HÌNH SCROLL WINDOW UP AND DOWN EX : XOÙA MAØN HÌNH BAÈNG CAÙCH CUOÄN LEÂN TOAØN BOÄ MAØN HÌNH VÔÙI THUOÄC TÍNH NORMAL MOV AH, 6 MOV AX, 0600H MOV AL, 0 MOV CX, 0000H MOV CH, 0 MOV DX, 184FH MOV CL, 0 MOV BH, 7 MOV DL, 24 INT 10H MOV DH, 79 MOV BH, 7 INT 10H Chuoung 10 Lap trinh xu ly man hinh 42
- CUOÄN MAØN HÌNH SCROLL WINDOW UP AND DOWN EX : CUOÄN WINDOWS TÖØ (10,20) TÔÙI (15,60), CUOÄN XUOÁNG 2 DOØNG, 2 DOØNG CUOÄN SEÕ COÙ THUOÄC TÍNH VIDEO ÑAÛO. MOV AX, 0702H MOV CX,0A14H MOV DX, 0F3CH MOV BH, 70H INT 10H Chuoung 10 Lap trinh xu ly man hinh 43
- ÑOÏC 1 KYÙ TÖÏ VAØ THUOÄC TÍNH KYÙ TÖÏ. READ CHARACTER AND ATTRIBUTE AH =8 ; BH = TRANG MAØN HÌNH TRI TRAÛ VEÀ : AL = KYÙ TÖÏ ÑAÕ ÑOÏC ÑÖÔÏC ; AH = THUOÄC TÍNH CUÛA KYÙ TÖÏ EX : THIEÁT LAÄP CURSOR TAÏI HAØNG 5 COÄT 1 SAU ÑOÙ NHAÄN 1 KYÙ TÖÏ NHAÄP.LÖU KYÙ TÖÏ ÑAÕ ÑOÏC ÑÖÔÏC VAØ THUOÄC TÍNH CUÛA KYÙ TÖÏ NAØY. GETCHAR : LOCATE : MOV AH, 8 MOV AH, 2 MOV BH, 0 MOV BH, 0 INT 10H MOV DX, 0501H MOV CHAR, AL INT 10H MOV ATTRIB , AH Chuoung 10 Lap trinh xu ly man hinh 44
- GHI 1 KYÙ TÖÏ VAØ THUOÄC TÍNH KYÙ TÖÏ. WRITE CHARACTER AND ATTRIBUTE CHÖÙC NAÊNG 09H INT 10H : XUAÁT (GHI) 1 HOAËC NHIEÀU KYÙ TÖÏ CUØNG VÔÙI THUOÄC TÍNH CUÛA CHUÙNG LEÂN MAØN HÌNH. CHÖÙC NAÊNG NAØY COÙ THEÅ XUAÁT MOÏI MAÕ ASCII KEÅ CAÛ KYÙ TÖÏ ÑOÀ HOÏA ÑAËC BIEÄT COÙ MAÕ TÖØ 1 ÑEÁN 31 AH =9 ; BH = TRANG VIDEO AL = KYÙ TÖÏ SEÕ XUAÁT ; BL = THUOÄC TÍNH CUÛA KYÙ TÖÏ SEÕ XUAÁT CX = HEÄ SOÁ LAËP Chuoung 10 Lap trinh xu ly man hinh 45
- GHI 1 KYÙ TÖÏ VAØ THUOÄC TÍNH KYÙ TÖÏ. WRITE CHARACTER AND ATTRIBUTE CHÖÙC NAÊNG 0AH INT 10H : XUAÁT (GHI) 1 HOAËC NHIEÀU KYÙ TÖÏ CUØNG VÔÙI THUOÄC TÍNH CUÛA CHUÙNG LEÂN MAØN HÌNH. CHÖÙC NAÊNG NAØY COÙ THEÅ XUAÁT MOÏI MAÕ ASCII KEÅ CAÛ KYÙ TÖÏ ÑOÀ HOÏA ÑAËC BIEÄT COÙ MAÕ TÖØ 1 ÑEÁN 31 AH =9 ; BH = TRANG VIDEO AL = KYÙ TÖÏ SEÕ XUAÁT ; BL = THUOÄC TÍNH CUÛA KYÙ TÖÏ SEÕ XUAÁT CX = HEÄ SOÁ LAËP Chuoung 10 Lap trinh xu ly man hinh 46
- GHI 1 KYÙ TÖÏ VAØ THUOÄC TÍNH KYÙ TÖÏ. WRITE CHARACTER AND ATTRIBUTE CHÖÙC NAÊNG 0AH INT 10H : XUAÁT (GHI) 1 HOAËC NHIEÀU KYÙ TÖÏ CUØNG VÔÙI THUOÄC TÍNH CUÛA CHUÙNG LEÂN MAØN HÌNH. CHÖÙC NAÊNG NAØY COÙ THEÅ XUAÁT MOÏI MAÕ ASCII KEÅ CAÛ KYÙ TÖÏ ÑOÀ HOÏA ÑAËC BIEÄT COÙ MAÕ TÖØ 1 ÑEÁN 31 AH =9 ; BH = TRANG VIDEO AL = KYÙ TÖÏ SEÕ XUAÁT ; BL = THUOÄC TÍNH CUÛA KYÙ TÖÏ SEÕ XUAÁT CX = HEÄ SOÁ LAËP Chuoung 10 Lap trinh xu ly man hinh 47
- LAÁY VIDEO MODE GET VIDEO MODE CHÖÙC NAÊNG 0FH INT 10H : LAÁY VIDEO MODE AH =0F ; BH = TRANG HIEÄN HAØNH AH = SOÁ COÄT MAØN HÌNH ; AL = MODE MAØN HÌNH HIEÄN HAØNH EX : MOV AH,0FH ; Get Video Mode Function INT 10H ; goïi BIOS MOVE VIDEO_MODE, AL ; löu Video Mode vaøo bieán boä nhôù MOV PAGE, BH ; löu trang hieän haønh. Chuoung 10 Lap trinh xu ly man hinh 48
- LẬP TRÌNH XỬ LÝ PHÍM 1. Đọc phím nhấn : Chức năng AH = 0, ngắt 16H Vào : AH = 0 Ra : AL = mã ASCII nếu một phím ASCII được nhấn = 0 nếu phím điều khiển được nhấn AH = mã scan của phím nhấn Chuoung 10 Lap trinh xu ly man hinh 49
- LẬP TRÌNH XỬ LÝ PHÍM BÀN PHÍM Chuoung 10 Lap trinh xu ly man hinh 50
- BÀN PHÍM Chuoung 10 Lap trinh xu ly man hinh 51
- BÀN PHÍM Chuoung 10 Lap trinh xu ly man hinh 52
- BÀN PHÍM Chuoung 10 Lap trinh xu ly man hinh 53
- BÀN PHÍM Chuoung 10 Lap trinh xu ly man hinh 54
- BÀN PHÍM Chuoung 10 Lap trinh xu ly man hinh 55
- LẬP TRÌNH XỬ LÝ PHÍM Kiểm tra trạng thái các phím Ctrl, Alt, Shift : Chúng ta có thể đọc trực tiếp từ địa chỉ 0:0417 hoặc lấy trong AL thông qua hàm AH = 2 ngắt 16H. Cách đọc trực tiếp XOR AX, AX MOV ES, AX MOV AL, ES:[417H] TEST AL, 01H ; kiểm tra phím Shift JNZ SHIFT_DANGNHAN TEST AL, 04H ; kiểm tra phím Ctrl JNZ CTRL_DANGNHAN TEST AL, 08H ; Kiểm tra phím Alt JNZ ALT_DANGNHAN Chuoung 10 Lap trinh xu ly man hinh 56
- 3. Kiểm tra và thiết lập trạng thái các phím Caps/Num/Scroll Lock tương tự nhưng với mã scan khác Scroll = 10H, Num = 20H, Cap = 40H. 4. Đặt lại các trạng thái đèn Caps/Num/Scroll Lock, ta chỉ cần đặt lại giá trị ở địa chỉ 0:0417. Vd, để bật đèn Caps Lock và đổi trạng thái đèn Num Lock ta sẽ làm như sau: XOR AX, AX MOV ES, AX ; ES = 0 MOV AL, ES:[417H] ; đọc trạng thái đèn OR AL, 40H ; bật đèn Caps Lock XOR AL, 20H ; đảo đèn Nums Lock MOV ES:[417H], AL ; MOV AH , 2H INT 16H Chuoung 10 Lap trinh xu ly man hinh 57
- BAØI TAÄP LAÄP TRÌNH BAØI 1 : VIEÁT ÑOAÏN CHÖÔNG TRÌNH LAØM CAÙC VIEÄC SAU : CUOÄN WINDOW TÖØ HAØNG 5, COÄT 10 TÔÙI HAØNG 20 COÄT 70 VÔÙI THUOÄC TÍNH MAØN HÌNH ÑAÛO. ÑÒNH VÒ CURSOR TAÏI HAØNG 10, COÄT 20 HIEÅN THÒ DOØNG TEXT “ DAY LA 1 DONG TEXT TRONG WINDOW” SAU KHI XUAÁT TEXT ÑÔÏI NHAÁN 1 PHÍM. CUOÄN WINDOW TÖØ HAØNG 5, COÄT 15 TÔÙI HAØNG 18 COÄT 68 VÔÙI THUOÄC TÍNH THÖÔØNG. XUAÁT KYÙ TÖÏ A VÔÙI THUOÄC TÍNH NHAÁP NHAÙY TAÏI GIÖÕA WINDOW. ÑÔÏI GOÛ 1 PHÍM, XOÙA TOAØN BOÄ MAØN HÌNH Chuoung 10 Lap trinh xu ly man hinh 58
- BAØI TAÄP LAÄP TRÌNH BAØI 2 : VIEÁT CHÖÔNG TRÌNH LAØM CAÙC VIEÄC SAU : XUAÁT CHUOÅI “GO VAO 1 KY TU THUONG : ‘ . KHI USER GOÛ 1 KYÙ TÖÏ (KHI GOÛ KHOÂNG HIEÅN THI KYÙ TÖÏ GOÛ RA MAØN HÌNH) ,ÑOÅI KYÙ TÖÏ NAØY THAØNH CHÖÕ HOA ROÀI XUAÁT RA MAØN HÌNH.GIAÛ SÖÛ CHÆ NHAÄP CAÙC KYÙ TÖÏ HÔÏP LEÄ. KHI GOÛ KYÙ TÖÏ MÔÛ ROÄNG SEÕ THOAÙT VEÀ DOS, NHÖNG COÙ LEÕ BAÏN COØN NHÌN THAÁY 1 KYÙ TÖÏ XUAÁT THEÂM TREÂN MAØN HÌNH. GIAÛI THÍCH. Chuoung 10 Lap trinh xu ly man hinh 59
- 1. Viết chương trình để : a. Xoá màn hình, tạo kích thước to nhất cho con trỏ và di chuyển nó đến góc trái trên b. Nếu nhấn phím Home : chuyển con trỏ đến góc trái trên, End : chuyển đến góc trái dưới, Page Dn : chuyển con trỏ đến góc phải dưới, Esc : kết thúc chương trình. 2. Dịch chuyển con trỏ đến góc trái trên màn hình nếu phím F1 được nhấn, góc trái dưới nếu phím F2 được nhấn. Chương trình sẽ bỏ qua các kí tự thông thường. 3. Viết chương trình soạn thảo văn bản như sau : a. Xoá màn hình, định vị con trỏ tại đầu dòng 12 b. Để người sử dụng đánh vào các kí tự. Con trỏ dịch chuyển đi sau khi hiển thị kí tự nếu nó không ở tại lề phải của màn hình c. Phím mũi tên trái , phải, lên , xuống dịch con trỏ tương ứng d. Phím Insert : chèn kí tự, Delete : Xoá một kí tự , Esc : kết thúc chương trình. Chuoung 10 Lap trinh xu ly man hinh 60
- BAØI TAÄP LAÄP TRÌNH BAØI 3 : VIEÁT CHÖÔNG TRÌNH LAØM CAÙC VIEÄC SAU : CHO PHEÙP VEÕ ÑÔN GIAÛN NHÔØ CAÙC PHÍM MUÛI TEÂN TREÂN BAØN PHÍM ÑEÅ DI CHUYEÅN THEO HÖÔÙNG MONG MUOÁN. PHAÛI BAÛO ÑAÛM XUAÁT CAÙC KYÙ TÖÏ GOÙC THÍCH HÔÏP. BIEÁT RAÈNG MAÕ ASCII CUÛA 1 SOÁ KYÙ TÖÏ : xem bảng maõ ASCII MAÕ SCAN CODE CUÛA CAÙC PHÍM MUÕI TEÂN : TRAÙI 4BH PHAÛI 4DH LEÂN 48H XUOÁNG 50H Chuoung 10 Lap trinh xu ly man hinh 61