Lập trình xử lý màn hình
Chia sẻ bởi Lê Ngọc Anh |
Ngày 02/05/2019 |
43
Chia sẻ tài liệu: Lập trình xử lý màn hình thuộc Tin học 6
Nội dung tài liệu:
Chuoung 10 Lap trinh xu ly man hinh
1
Giới thiệu màn hình & việc quản lý màn hình
Hiểu được tổ chức của màn hình.
So sánh chức năng điều khiển màn hình của INT 10h của ROM BIOS với chức năng của INT 21h.
Biết cách lập trình quản lý màn hình trong ASM.
Biết cách lập trình xử lý phím và 1 số ứng dụng của nó.
LẬP TRÌNH XỬ LÝ MÀN HÌNH & BÀN PHÍM
Chuoung 10 Lap trinh xu ly man hinh
2
MN HÌNH
D?C TRUNG C?A MN HÌNH
Độ phân giải : số điểm trong màn hình.Hình ảnh ma tr?n gồm 1 lưới hình chữ nhật các điểm (thí dụ 640*480). Độ phân giải thường cho dưới dạng h x v trong đó h là số lượng pixel theo dòng và v là số lượng pixel theo cột.
D? PHN GII
Chuoung 10 Lap trinh xu ly man hinh
3
Chuoung 10 Lap trinh xu ly man hinh
4
CARD MN HÌNH
Cung c?p cc ch? d? MH
S? di?m ngang x s? di?m d?c x s? mu (s? bit mu)
D? phn gi?i
RAM MN HÌNH
Dung lu?ng
800x600x16 bits = 960 000 bytes ? 1Mb
1024x 768x32 bits ?3.145.728 bytes ? 4Mb
CH? D?
D? H?A
Chuoung 10 Lap trinh xu ly man hinh
5
D?a ch? (i,j) = B800:0000+ (i*160+j*2)
Chuoung 10 Lap trinh xu ly man hinh
6
Chuoung 10 Lap trinh xu ly man hinh
7
QUẢN LÝ MÀN HÌNH
Màn hình được điều khiển hiệu quả nhờ các chức năng của INT 10H trong Rom Bios. Các chức năng này quản lý màn hình tốt hơn các chức năng của INT 21h của Dos.
IBM PC hỗ trợ 3 loại màn hình cơ bản có tên tùy thuộc vào loại Card màn hình cắm trên Bus mở rộng trên Mianboard như : Monochrome chỉ hiển thị text đơn sắc; CGA (Color Graphic Adaptor) cho phép hiển thị text và đồ họa; EGA (Enhanced Graphics Adaptor) hiển thị text và đồ họa với độ phân giải cao hơn. Ngoài ra còn có card VGA (Video Graphics Array), SVGA .. .
Bên cạnh 1 số chức năng do INT 21h của Dos cung cấp, 1 số tác vụ được thực hiện trên màn hình nhờ các chức năng trong INT 10h như xoá màn hình, định vị con trỏ, thiết lập màn hình ...
Chuoung 10 Lap trinh xu ly man hinh
8
THU?C TÍNH MN HÌNH
Chuoung 10 Lap trinh xu ly man hinh
9
THUỘC TÍNH MÀN HÌNH
Mỗi vị trí trên màn hình có thể lưu 1 ký tự đơn cùng với thuộc tính riêng của ký tự này chẳng hạn như đảo màu, nhấp nháy, chiếu sáng, gạch dưới ...
Thuộc tính của ký tự được lưu trong 1 byte gọi là byte thuộc tính.
BIT 7
6 5 4 3 2 1 0
BACKGROUND BITS
FOREGROUND BITS
HIGHT/LOW
BLINK
Chuoung 10 Lap trinh xu ly man hinh
10
THUỘC TÍNH MÀN HÌNH
Ex : các ký tự màu vàng chanh nhấp nháy trên nền màu nâu
BLINK = 10000000B
RED = 100B
MOV BH, (RED SHL 4) +YELLOW+BLINK
ĐỂ TẠO 1 BYTE THUỘC TÍNH VIDEO TỪ 2 MÀU , TA DÙNG SHL CHUYỂN CÁC BIT MÀU NỀN SANG TRÁI 4 VI TRÍ.
Chuoung 10 Lap trinh xu ly man hinh
11
VÙNG HIỂN THỊ MÀN HÌNH
Vùng hiển thị của màn hình đơn sắc ở địa chỉ B000h trong Bios.
Vùng hiển thị video đồ họa màu cơ bản b?t đầu từ vị trí B800h của Bios.
Chuoung 10 Lap trinh xu ly man hinh
12
THUỘC TÍNH MÀN HÌNH
Các thuộc tính chuẩn của màn hình Monochrome :
Chuoung 10 Lap trinh xu ly man hinh
13
THUỘC TÍNH MÀN HÌNH (tt)
Bất kỳ 1 thuộc tính nào cũng có thể thêm thuộc tính nhấp nháy bằng cách cho bit 7 có trị là 1. Thí dụ normal blinking 87H, bright linking 8Fh.
Card màn hình CGA và EGA không hỗ trợ thuộc tính Underline nhưng cho phép sử dụng màu trong text mode. Các màu được chia làm 2 loại : màu chữ (Foreground) và màu nền (Background).
Bit 6,5,4 : màu nền
Bit 2,1,0 : màu chữ
Bit 3 : độ sáng
Chuoung 10 Lap trinh xu ly man hinh
14
BẢNG MÀ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 nền Brown, chữ Yellow, không nhấp nháy.
EX : 11010010 : 0D2H nền Magenta, chữ Green, nhấp nháy.
Chuoung 10 Lap trinh xu ly man hinh
15
CÁC MODE MÀN HÌNH
Các Card màn hình CGA,EGA,VGA cho phép chuyển đổi Video mode nhờ INT 10h.
Các trình ứng dụng thường dùng INT 10h để tìm Video mode hiện hành.
Ex: 1 ứng dụng thường muốn thể hiện đồ họa với độ phân giải cao (640x200) phải kiểm tra chắc chắn rằng MT hiện đang sử dụng đang dùng Card màn hình CGA,VGA hoặc EGA.
Chuoung 10 Lap trinh xu ly man hinh
16
CÁC MODE MÀN HÌNH
Có 2 chế độ làm việc của màn hình : text và đồ họa.
Chế độ màn hình :
25 dòng và 80 cột
25 dòng và 40 cột.
Màn hình là hình ảnh của Video Ram.
?
?
Ở chế độ text một trang màn hình cân tối thiểu bao nhiêu byte của VIDEO Ram
25X80X2 = 4000BYTES RAM VIDEO
VÙNG NHỚ NÀY NẰM TRÊN CARD MH
Chuoung 10 Lap trinh xu ly man hinh
17
CÁC MODE MÀN HÌNH
Các Video mode thông dụng :
Mode Mô tả
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
18
TRANG MÀN HÌNH (VIDEO PAGE)
Tất cả các Card CGA đều có khả năng lưu trữ nhiều màn hình text gọi là các trang màn hình (video page) trong bộ nhớ. Riêng card mono chỉ hiển thị 1 trang - trang 0. Số trang phụ thuộc vào mode màn hình.
Trong card màn hình màu, ta có thể ghi vào 1 trang này trong khi hiển thị trang khác hoặc chuyển đổi qua lại vị trí giữa các trang. Các trang được đánh số từ 0 đến 7.
Chuoung 10 Lap trinh xu ly man hinh
19
TRANG MÀN HÌNH (VIDEO PAGE)
số trang mode adaptor
0 07h monochrome
0-7 00h - 01h CGA
0-3 02h-03h CGA
0-7 02h-03h EGA
0-7 0Dh EGA
0-3 0Eh EGA
0-1 0Fh, 10h EGA
Chuoung 10 Lap trinh xu ly man hinh
20
THÍ DỤ VỀ TRANG MH
ĐỂ HIỂN THỊ 1 KÝ TỰ VỚI THUỘC TÍNH CỦA NÓ TẠI 1 VỊ TRÍ BẤT KỲ ? CHỨA KÝ TỰ VÀ THUỘC TÍNH VÀO TỪ TƯƠNG ỨNG TRONG TRANG HIỂN THỊ HOẠT ĐỘNG.
EX : Lấp đầy màn hình bằng chữ `A` màu đỏ trên nền xanh
Chuoung 10 Lap trinh xu ly man hinh
21
CH? D? D? H?A
Chuoung 10 Lap trinh xu ly man hinh
22
. 1. Ch?n ch? d? hi?n th? :
Ch?c nang AH = 0, ng?t 10H
Vo : AH = 0, AL = ki?u
Ví d? : thi?t l?p ch? d? van b?n mu
XOR AH, AH
MOV AL, 3 ; ch? d? van b?n mu 80 x 25
INT 10H
Truy xu?t thi?t b? xu?t chu?n (mn hình)
Chuoung 10 Lap trinh xu ly man hinh
23
Ch?c nang AH = 1, ng?t 10H
Vo : AH = 1,
CH = dịng qut d?u, CL = dịng qut cu?i
THAY D?I SIZE CON TR?
MN HÌNH
Ví d? : thi?t l?p con tr? v?i kích thu?c l?n nh?t
MOV AH, 1
MOV CH, 0 ; dịng b?t d?u
MOV CL, 13 ; dịng k?t thc
INT 10H
Chuoung 10 Lap trinh xu ly man hinh
24
Ch?c nang AH = 2, ng?t 10H
Vo : AH = 2,
DH = dịng m?i (0-24),
DL = c?t m?i (0-79)
BH = s? hi?u trang
D?CH CHUY?N
CON TR?
Ví d? : Di chuy?n con tr? d?n gi?a mn 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
25
Ch?c nang AH = 3, ng?t 10H
Vo : AH = 3, BH = s? hi?u trang
Ra : DH = dịng, DL = c?t,
CH = dịng qut d?u, CL = dịng qut cu?i
Ví d? : Di chuy?n con tr? ln m?t dịng n?u nĩ khơng ? dịng trn cng
MOV AH, 3
XOR BH, BH ; trang 0
INT 10H
OR DH, DH ; dịng trn cng DH = 0 ?
JZ exit
MOV AH, 2 ; ch?c nang d?ch con tr?
DEC DH ; gi?m m?t dịng
INT 10H
exit :
L?Y V? TRÍ KÍCH THU?C
CON TR? Hi?N HNH
Chuoung 10 Lap trinh xu ly man hinh
26
Ch?c nang AH = 6, ng?t 10H
Vo : AH = 6,
AL = s? dịng cu?n (= 0 l tồn mn hình)
Ra : BH = thu?c tính cc dịng tr?ng ,
CH, CL = dịng, c?t gĩc tri trn
DH, DL = dịng, c?t gĩc ph?i du?i c?a c?a s?
CU?N MN HÌNH
Ví d? : Xố den mn hình 80 x 25
MOV AH, 6
XOR AL, AL
XOR CX, CX
MOV DX, 184FH ; gĩc ph?i du?i
MOV BH, 7
INT 10H
Chuoung 10 Lap trinh xu ly man hinh
27
Ví d? t?ng h?p : Vi?t chuong trình th?c hi?n nhu sau:
. L?p ch? d? hi?n thi mu 80 x 25
. Xố c?a s? t?i gĩc tri trn : c?t 26 dịng 8 v gĩc ph?i du?i t?i c?t 52 dịng 16 thnh mu d?. . Sau dĩ hi?n th? kí t? A mu cam t?i v? trí con tr?.
Chuoung 10 Lap trinh xu ly man hinh
28
CÁC HÀM XỬ LÝ MÀN HÌNH
Các chức năng xử lý màn hình nằm trong INT 10h
Chức năng (để trong AH ) nhiệm vụ
0 set video mode chọn mono, text, graphic hoặc color mode
Set cursor line thiết lập 1 dòng quét tạo dạng cho cursor.
Set cursor position định vị cursor
get cursor position lấy vị trí cursor
đọc vị trí và trạng thái của bút vẽ light pen.
chọn trang muốn hiển thị.
cuộn cửa sổ hiện hành lên, thế các dòng cuộn bằng ktrống.
cuộn cửa sổ hiện hành xuống.
đọc ký tự và thuộc tính ký tự tại vị trí con trỏ hiện hành.
ghi ký tự và thuộc tính ký tự tại vị trí con trỏ hiện hành.
Chuoung 10 Lap trinh xu ly man hinh
29
CÁC HÀM XỬ LÝ MÀN HÌNH
Các chức năng xử lý màn hình nằm trong INT 10h
Chức năng (để trong AH ) nhiệm vụ
0Ah Ghi ký tự bỏ qua thuộc tính ký tự vào vị trí con trỏ hiện hành.
0Bh Chọn palette màu
0Ch Ghi 1 điểm graphic trong graphics mode.
0Dh Đọc giá trị màu của 1 pixel có vị trí đã biết.
0Eh Ghi ký tự ra màn hình và cập nhật con trỏ sang phải 1 vtrí.
0Fh Lấy mode màn hình hiện hành để xem đang ở chế độ text hay graphics.
Chuoung 10 Lap trinh xu ly man hinh
30
Thiết lập video mode.
AH = 0
AL = mode.
Nếu bit cao của AL =0 sẽ tự động xoá màn hình.
Nếu bit cao của AL = 1 không xoá màn hình.
Ex : thiết lập 80x25 color text mode
MOV AH, 0
MOV AL, 3 ; mode 3 , có xoá màn hình
INT 10h
LƯU Ý : Không muốn xoá màn hình thì AL = 83H
HÀM 0H INT 10H
Chuoung 10 Lap trinh xu ly man hinh
31
Ex : đoạn chương trình sau sẽ thiết lập video mode là hight resolution graphics, đợi gỏ 1 phím sau đó thiết lập video mode là color text mode.
HÀM 0H INT 10H
MOV AH, 0 ; set video mode
MOV AL, 6 ; 640x200 color graphics mode
INT 10h
MOV AH, 1 ; đợi gỏ 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
32
Dạng con trỏ màn hình được tạo ra bằng cách chỉ định số dòng quét.
Việc thay đổi dạng con trỏ chính là thay đổi số lượng và vị trí dòng quét này.
Màn hình monochrome dùng 13 dòng (từ 0 - 0Ch)
Màn hình CGA,VGA dùng 8 dòng (từ 0-7).
CGA/EGA
MONOCHROME
0
7
0
12
HÀM 01
INT 10H
Chuoung 10 Lap trinh xu ly man hinh
33
Ex: Minh họa
Thiết lập con trỏ có hình khối đặc.
MOV AH , 1
MOV CH, 0
MOV CL,0CH
INT 10H
Để thay đổi dạng con trỏ :
AH = 1
CH = TOP (dòng đầu)
CL = BOTTOM (dòng cuối)
Chuoung 10 Lap trinh xu ly man hinh
34
Ex2: lưu kích thước con trỏ hiện
hành vào 1 biến trước khi thay đổi kích
thước con trỏ để sau này phục hồi lại.
MOV AH , 1
MOV CX, 0607H
INT 10H
MOV AX, 4C00H
INT 21H
Ex2: trả kích thước con trỏ về dạng mặc định trước khi thoát.
MOV AH, 3
MOV BH, 0
INT 10H
MOV SAVECURSOR, CX
OR CH, 00100000
INT 10H
..... .
MOV AH, 1
MOV CX, SAVECURSOR
INT 10H
Chuoung 10 Lap trinh xu ly man hinh
35
HÀM 02H
INT 10H
Thiết lập vị trí hiện hành
SET CURSOR POSITION
AH = 2 ; DH = CHỈ SỐ DÒNG ; DL = CHỈ SỐ CỘT ;
BH= TRANG MÀN HÌNH CHỨA CURSOR
Ex : THIẾT LẬP CURSOR TẠI TỌA ĐỘ (DÒNG 10, CỘT 20) CỦA TRANG 0
; Chức năng set cursor
; dòng 10
; cột 20
; trang 0
; gọi BIOS
MOV AH, 2
MOV DH, 10
MOV DL, 20
MOV BH,0
INT 10H
Chuoung 10 Lap trinh xu ly man hinh
36
HÀM 03H
INT 10H
Lấy vị trí cursor hiện hành
GET CURSOR POSITION
AH =3 ;
BH= TRANG MÀN HÌNH MUỐN LẤY CURSOR
Gía trị trả về :
CH= Dòng quét đầu của cursor
CL = Dòng quét cuối của cursor
DH = vị trí dòng màn hình
DL = vị trí cột màn hình
Chuoung 10 Lap trinh xu ly man hinh
37
HÀM 03H
INT 10H
Lấy vị trí cursor hiện hành
GET CURSOR POSITION
Ex : lấy vị trí của cursor lưu vào biến.
Thường dùng trong các tác vụ 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
38
HÀM 05H
INT 10H
THIẾT LẬP TRANG MÀN HÌNH
SET VIDEO PAGE
DOSSEG
.MODEL SMALL
.STACK 100H
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS,AX
AH = 5 ; AL = TRANG MÀN HÌNH SẼ LÀ TRANG HIỆN HÀNH
EX : THAY ĐỔI TRANG MH KHI GỎ 1 PHÍM BẤT KỲ
MOV DX, OFFSET TRANG0
INT 21H
MOV AH , 1
INT 21H
SANG_TRANG_1 :
MOV AH, 5
MOV AL, 1
Chuoung 10 Lap trinh xu ly man hinh
39
HÀM 05H
INT 10H
THIẾT LẬP TRANG MÀN HÌNH
SET VIDEO PAGE
INT 10H
MOV AH, 9
MOV DX, OFFSET TRANG1
INT 21H
MOV AH, 1
INT 21H
SANG_TRANG_0 :
MOV AH, 5
MOV AL, 0
INT 10H
MOV AX, 4C00H
INT 21H
MAIN ENDP
.DATA
TRANG0 DB ` DAY LA TRANG 0,$`
TRANG1 DB ` DAY LA TRANG 1,$`
END MAIN
Chuoung 10 Lap trinh xu ly man hinh
40
HÀM 06H, 07H
INT 10H
CUỘN MÀN HÌNH
SCROLL WINDOW UP AND DOWN
CUỘN MÀN HÌNH LÀ TÁC VỤ LÀM CHO DỮ LIỆU TRƯỢT LÊN HOẶC XUỐNG.
CÁC DÒNG DỮ LIỆU BỊ CUỐN SẼ ĐƯỢC THAY THẾ BẰNG CÁC DÒNG TRỐNG
TA ĐỊNH NGHĨA WINDOWS NHỜ HỆ TỌA ĐỘ HÀNG CỘT VỚI GỐC TỌA ĐỘ LÀ GÓC TRÊN TRÁI CỦA MÀN HÌNH.
HÀNG SẼ THAY ĐỐI TỪ 0 ĐẾN 24 TỪ TRÊN XUỐNG.
CỘT SẼ THAY ĐỔI TỪ 0 ĐẾN 79 TỪ TRÁI SANG PHẢI.
TA CÓ THỂ CUỘN 1 VÀI DÒNG HOẶC CẢ WINDOWS.
TOÀN BỘ WINDOWS BỊ CUỘN ? MÀN HÌNH BỊ XOÁ.
Chuoung 10 Lap trinh xu ly man hinh
41
HÀM 06H, 07H
INT 10H
CUỘN MÀN HÌNH
SCROLL WINDOW UP AND DOWN
CÁC THÔNG SỐ :
CUỘN LÊN AH =6 ; CUỘN XUỐNG AH = 7
AL = SỐ DÒNG SẼ CUỘN ( = 0 NẾU CUỘN TOÀN BỘ MÀN HÌNH)
CH, CL = TỌA ĐỘ HÀNG,CỘT CỦA GÓC TRÊN TRÁICỦA WINDOWS
DH, DL = TOẠ ĐỘ HÀNG, CỘT CỦA GÓC DƯỚI PHẢI CỦA WINDOWS
BH = THUỘC TÍNH MÀN HÌNH CỦA CÁC DÒNG TRỐNG
KHI MÀN HÌNH ĐÃ CUỘN.
Chuoung 10 Lap trinh xu ly man hinh
42
HÀM 06H, 07H
INT 10H
CUỘN MÀN HÌNH
SCROLL WINDOW UP AND DOWN
EX : XÓA MÀN HÌNH BẰNG CÁCH CUỘN LÊN TOÀN BỘ MÀN HÌNH VỚI THUỘC TÍNH NORMAL
MOV AH, 6
MOV AL, 0
MOV CH, 0
MOV CL, 0
MOV DL, 24
MOV DH, 79
MOV BH, 7
INT 10H
MOV AX, 0600H
MOV CX, 0000H
MOV DX, 184FH
MOV BH, 7
INT 10H
Chuoung 10 Lap trinh xu ly man hinh
43
HÀM 06H, 07H
INT 10H
CUỘN MÀN HÌNH
SCROLL WINDOW UP AND DOWN
EX : CUỘN WINDOWS TỪ (10,20) TỚI (15,60), CUỘN XUỐNG 2 DÒNG, 2 DÒNG CUỘN SẼ CÓ THUỘC TÍNH VIDEO ĐẢO.
MOV AX, 0702H
MOV CX,0A14H
MOV DX, 0F3CH
MOV BH, 70H
INT 10H
Chuoung 10 Lap trinh xu ly man hinh
44
HÀM 08H
INT 10H
ĐỌC 1 KÝ TỰ VÀ THUỘC TÍNH KÝ TỰ.
READ CHARACTER AND ATTRIBUTE
AH =8 ; BH = TRANG MÀN HÌNH
TRI TRẢ VỀ :
AL = KÝ TỰ ĐÃ ĐỌC ĐƯỢC ; AH = THUỘC TÍNH CỦA KÝ TỰ
EX : THIẾT LẬP CURSOR TẠI HÀNG 5 CỘT 1 SAU ĐÓ NHẬN 1 KÝ TỰ NHẬP.LƯU KÝ TỰ ĐÃ ĐỌC ĐƯỢC VÀ THUỘC TÍNH CỦA KÝ TỰ NÀY.
GETCHAR :
MOV AH, 8
MOV BH, 0
INT 10H
MOV CHAR, AL
MOV ATTRIB , AH
LOCATE :
MOV AH, 2
MOV BH, 0
MOV DX, 0501H
INT 10H
Chuoung 10 Lap trinh xu ly man hinh
45
HÀM 09H
INT 10H
GHI 1 KÝ TỰ VÀ THUỘC TÍNH KÝ TỰ.
WRITE CHARACTER AND ATTRIBUTE
AH =9 ; BH = TRANG VIDEO
AL = KÝ TỰ SẼ XUẤT ;
BL = THUỘC TÍNH CỦA KÝ TỰ SẼ XUẤT
CX = HỆ SỐ LẶP
CHỨC NĂNG 09H INT 10H :
XUẤT (GHI) 1 HOẶC NHIỀU KÝ TỰ CÙNG VỚI THUỘC TÍNH CỦA CHÚNG LÊN MÀN HÌNH. CHỨC NĂNG NÀY CÓ THỂ XUẤT MỌI MÃ ASCII KỂ CẢ KÝ TỰ ĐỒ HỌA ĐẶC BIỆT CÓ MÃ TỪ 1 ĐẾN 31
Chuoung 10 Lap trinh xu ly man hinh
46
HÀM 0AH
INT 10H
GHI 1 KÝ TỰ VÀ THUỘC TÍNH KÝ TỰ.
WRITE CHARACTER AND ATTRIBUTE
AH =9 ; BH = TRANG VIDEO
AL = KÝ TỰ SẼ XUẤT ;
BL = THUỘC TÍNH CỦA KÝ TỰ SẼ XUẤT
CX = HỆ SỐ LẶP
CHỨC NĂNG 0AH INT 10H :
XUẤT (GHI) 1 HOẶC NHIỀU KÝ TỰ CÙNG VỚI THUỘC TÍNH CỦA CHÚNG LÊN MÀN HÌNH. CHỨC NĂNG NÀY CÓ THỂ XUẤT MỌI MÃ ASCII KỂ CẢ KÝ TỰ ĐỒ HỌA ĐẶC BIỆT CÓ MÃ TỪ 1 ĐẾN 31
Chuoung 10 Lap trinh xu ly man hinh
47
HÀM 0AH
INT 10H
GHI 1 KÝ TỰ VÀ THUỘC TÍNH KÝ TỰ.
WRITE CHARACTER AND ATTRIBUTE
AH =9 ; BH = TRANG VIDEO
AL = KÝ TỰ SẼ XUẤT ;
BL = THUỘC TÍNH CỦA KÝ TỰ SẼ XUẤT
CX = HỆ SỐ LẶP
CHỨC NĂNG 0AH INT 10H :
XUẤT (GHI) 1 HOẶC NHIỀU KÝ TỰ CÙNG VỚI THUỘC TÍNH CỦA CHÚNG LÊN MÀN HÌNH. CHỨC NĂNG NÀY CÓ THỂ XUẤT MỌI MÃ ASCII KỂ CẢ KÝ TỰ ĐỒ HỌA ĐẶC BIỆT CÓ MÃ TỪ 1 ĐẾN 31
Chuoung 10 Lap trinh xu ly man hinh
48
HÀM 0FH
INT 10H
LẤY VIDEO MODE
GET VIDEO MODE
AH =0F ;
BH = TRANG HIỆN HÀNH
AH = SỐ CỘT MÀN HÌNH ;
AL = MODE MÀN HÌNH HIỆN HÀNH
CHỨC NĂNG 0FH INT 10H : LẤY VIDEO MODE
EX : MOV AH,0FH ; Get Video Mode Function
INT 10H ; gọi BIOS
MOVE VIDEO_MODE, AL ; lưu Video Mode vào biến bộ nhớ
MOV PAGE, BH ; lưu trang hiện hành.
Chuoung 10 Lap trinh xu ly man hinh
49
LẬP TRÌNH XỬ LÝ PHÍM
1. D?c phím nh?n :
Ch?c nang AH = 0, ng?t 16H
Vo : AH = 0
Ra : AL = m ASCII n?u m?t phím ASCII du?c nh?n
= 0 n?u phím di?u khi?n du?c nh?n
AH = m scan c?a phím nh?n
Chuoung 10 Lap trinh xu ly man hinh
50
LẬP TRÌNH XỬ LÝ PHÍM
BN PHÍM
Chuoung 10 Lap trinh xu ly man hinh
51
BN PHÍM
Chuoung 10 Lap trinh xu ly man hinh
52
BN PHÍM
Chuoung 10 Lap trinh xu ly man hinh
53
BN PHÍM
Chuoung 10 Lap trinh xu ly man hinh
54
BN PHÍM
Chuoung 10 Lap trinh xu ly man hinh
55
BN PHÍM
Chuoung 10 Lap trinh xu ly man hinh
56
LẬP TRÌNH XỬ LÝ PHÍM
Ki?m tra tr?ng thi cc phím Ctrl, Alt, Shift :
Chng ta cĩ th? d?c tr?c ti?p t? d?a ch? 0:0417 ho?c l?y trong AL
thơng qua hm AH = 2 ng?t 16H.
Cch d?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
57
3. Ki?m tra v thi?t l?p tr?ng thi cc phím Caps/Num/Scroll Lock tuong t? nhung v?i m
scan khc Scroll = 10H, Num = 20H, Cap = 40H.
4. D?t l?i cc tr?ng thi dn Caps/Num/Scroll Lock, ta ch? c?n d?t l?i gi tr? ? d?a ch? 0:0417.
Vd, d? b?t dn Caps Lock v d?i tr?ng thi dn Num Lock ta s? lm nhu sau:
XOR AX, AX
MOV ES, AX ; ES = 0
MOV AL, ES:[417H] ; d?c tr?ng thi dn
OR AL, 40H ; b?t dn Caps Lock
XOR AL, 20H ; d?o dn Nums Lock
MOV ES:[417H], AL ;
MOV AH , 2H
INT 16H
Chuoung 10 Lap trinh xu ly man hinh
58
BÀI TẬP LẬP TRÌNH
BÀI 1 : VIẾT ĐOẠN CHƯƠNG TRÌNH LÀM CÁC VIỆC SAU :
CUỘN WINDOW TỪ HÀNG 5, CỘT 10 TỚI HÀNG 20 CỘT 70 VỚI THUỘC TÍNH MÀN HÌNH ĐẢO.
ĐỊNH VỊ CURSOR TẠI HÀNG 10, CỘT 20
HIỂN THỊ DÒNG TEXT " DAY LA 1 DONG TEXT TRONG WINDOW"
SAU KHI XUẤT TEXT ĐỢI NHẤN 1 PHÍM.
CUỘN WINDOW TỪ HÀNG 5, CỘT 15 TỚI HÀNG 18 CỘT 68 VỚI THUỘC TÍNH THƯỜNG.
XUẤT KÝ TỰ A VỚI THUỘC TÍNH NHẤP NHÁY TẠI GIỮA WINDOW.
ĐỢI GỎ 1 PHÍM, XÓA TOÀN BỘ MÀN HÌNH..
Chuoung 10 Lap trinh xu ly man hinh
59
BÀI TẬP LẬP TRÌNH
BÀI 2 : VIẾT CHƯƠNG TRÌNH LÀM CÁC VIỆC SAU :
XUẤT CHUỔI "GO VAO 1 KY TU THUONG : ` .
KHI USER GỎ 1 KÝ TỰ (KHI GỎ KHÔNG HIỂN THI KÝ TỰ GỎ RA MÀN HÌNH) ,ĐỔI KÝ TỰ NÀY THÀNH CHỮ HOA RỒI XUẤT RA MÀN HÌNH.GIẢ SỬ CHỈ NHẬP CÁC KÝ TỰ HỢP LỆ.
KHI GỎ KÝ TỰ MỞ RỘNG SẼ THOÁT VỀ DOS, NHƯNG CÓ LẼ BẠN CÒN NHÌN THẤY 1 KÝ TỰ XUẤT THÊM TRÊN MÀN HÌNH. GIẢI THÍCH.
Chuoung 10 Lap trinh xu ly man hinh
60
1. Vi?t chuong trình d? :
a. Xố mn hình, t?o kích thu?c to nh?t cho con tr? v di chuy?n nĩ d?n gĩc tri trn
b. N?u nh?n phím Home : chuy?n con tr? d?n gĩc tri trn, End : chuy?n d?n gĩc tri du?i, Page Dn : chuy?n con tr? d?n gĩc ph?i du?i, Esc : k?t thc chuong trình.
2. D?ch chuy?n con tr? d?n gĩc tri trn mn hình n?u phím F1 du?c nh?n, gĩc tri du?i n?u phím F2 du?c nh?n. Chuong trình s? b? qua cc kí t? thơng thu?ng.
3. Vi?t chuong trình so?n th?o van b?n nhu sau :
a. Xố mn hình, d?nh v? con tr? t?i d?u dịng 12
b. D? ngu?i s? d?ng dnh vo cc kí t?. Con tr? d?ch chuy?n di sau khi hi?n th? kí t? n?u nĩ khơng ? t?i l? ph?i c?a mn hình
c. Phím mui tn tri , ph?i, ln , xu?ng d?ch con tr? tuong ?ng
d. Phím Insert : chn kí t?, Delete : Xố m?t kí t? , Esc : k?t thc chuong trình.
Chuoung 10 Lap trinh xu ly man hinh
61
BÀI TẬP LẬP TRÌNH
BÀI 3 : VIẾT CHƯƠNG TRÌNH LÀM CÁC VIỆC SAU :
CHO PHÉP VẼ ĐƠN GIẢN NHỜ CÁC PHÍM MỦI TÊN TRÊN BÀN PHÍM ĐỂ DI CHUYỂN THEO HƯỚNG MONG MUỐN.
PHẢI BẢO ĐẢM XUẤT CÁC KÝ TỰ GÓC THÍCH HỢP.
BIẾT RẰNG MÃ ASCII CỦA 1 SỐ KÝ TỰ : xem b?ng mã ASCII
MÃ SCAN CODE CỦA CÁC PHÍM MŨI TÊN :
TRÁI 4BH PHẢI 4DH LÊN 48H XUỐNG 50H
1
Giới thiệu màn hình & việc quản lý màn hình
Hiểu được tổ chức của màn hình.
So sánh chức năng điều khiển màn hình của INT 10h của ROM BIOS với chức năng của INT 21h.
Biết cách lập trình quản lý màn hình trong ASM.
Biết cách lập trình xử lý phím và 1 số ứng dụng của nó.
LẬP TRÌNH XỬ LÝ MÀN HÌNH & BÀN PHÍM
Chuoung 10 Lap trinh xu ly man hinh
2
MN HÌNH
D?C TRUNG C?A MN HÌNH
Độ phân giải : số điểm trong màn hình.Hình ảnh ma tr?n gồm 1 lưới hình chữ nhật các điểm (thí dụ 640*480). Độ phân giải thường cho dưới dạng h x v trong đó h là số lượng pixel theo dòng và v là số lượng pixel theo cột.
D? PHN GII
Chuoung 10 Lap trinh xu ly man hinh
3
Chuoung 10 Lap trinh xu ly man hinh
4
CARD MN HÌNH
Cung c?p cc ch? d? MH
S? di?m ngang x s? di?m d?c x s? mu (s? bit mu)
D? phn gi?i
RAM MN HÌNH
Dung lu?ng
800x600x16 bits = 960 000 bytes ? 1Mb
1024x 768x32 bits ?3.145.728 bytes ? 4Mb
CH? D?
D? H?A
Chuoung 10 Lap trinh xu ly man hinh
5
D?a ch? (i,j) = B800:0000+ (i*160+j*2)
Chuoung 10 Lap trinh xu ly man hinh
6
Chuoung 10 Lap trinh xu ly man hinh
7
QUẢN LÝ MÀN HÌNH
Màn hình được điều khiển hiệu quả nhờ các chức năng của INT 10H trong Rom Bios. Các chức năng này quản lý màn hình tốt hơn các chức năng của INT 21h của Dos.
IBM PC hỗ trợ 3 loại màn hình cơ bản có tên tùy thuộc vào loại Card màn hình cắm trên Bus mở rộng trên Mianboard như : Monochrome chỉ hiển thị text đơn sắc; CGA (Color Graphic Adaptor) cho phép hiển thị text và đồ họa; EGA (Enhanced Graphics Adaptor) hiển thị text và đồ họa với độ phân giải cao hơn. Ngoài ra còn có card VGA (Video Graphics Array), SVGA .. .
Bên cạnh 1 số chức năng do INT 21h của Dos cung cấp, 1 số tác vụ được thực hiện trên màn hình nhờ các chức năng trong INT 10h như xoá màn hình, định vị con trỏ, thiết lập màn hình ...
Chuoung 10 Lap trinh xu ly man hinh
8
THU?C TÍNH MN HÌNH
Chuoung 10 Lap trinh xu ly man hinh
9
THUỘC TÍNH MÀN HÌNH
Mỗi vị trí trên màn hình có thể lưu 1 ký tự đơn cùng với thuộc tính riêng của ký tự này chẳng hạn như đảo màu, nhấp nháy, chiếu sáng, gạch dưới ...
Thuộc tính của ký tự được lưu trong 1 byte gọi là byte thuộc tính.
BIT 7
6 5 4 3 2 1 0
BACKGROUND BITS
FOREGROUND BITS
HIGHT/LOW
BLINK
Chuoung 10 Lap trinh xu ly man hinh
10
THUỘC TÍNH MÀN HÌNH
Ex : các ký tự màu vàng chanh nhấp nháy trên nền màu nâu
BLINK = 10000000B
RED = 100B
MOV BH, (RED SHL 4) +YELLOW+BLINK
ĐỂ TẠO 1 BYTE THUỘC TÍNH VIDEO TỪ 2 MÀU , TA DÙNG SHL CHUYỂN CÁC BIT MÀU NỀN SANG TRÁI 4 VI TRÍ.
Chuoung 10 Lap trinh xu ly man hinh
11
VÙNG HIỂN THỊ MÀN HÌNH
Vùng hiển thị của màn hình đơn sắc ở địa chỉ B000h trong Bios.
Vùng hiển thị video đồ họa màu cơ bản b?t đầu từ vị trí B800h của Bios.
Chuoung 10 Lap trinh xu ly man hinh
12
THUỘC TÍNH MÀN HÌNH
Các thuộc tính chuẩn của màn hình Monochrome :
Chuoung 10 Lap trinh xu ly man hinh
13
THUỘC TÍNH MÀN HÌNH (tt)
Bất kỳ 1 thuộc tính nào cũng có thể thêm thuộc tính nhấp nháy bằng cách cho bit 7 có trị là 1. Thí dụ normal blinking 87H, bright linking 8Fh.
Card màn hình CGA và EGA không hỗ trợ thuộc tính Underline nhưng cho phép sử dụng màu trong text mode. Các màu được chia làm 2 loại : màu chữ (Foreground) và màu nền (Background).
Bit 6,5,4 : màu nền
Bit 2,1,0 : màu chữ
Bit 3 : độ sáng
Chuoung 10 Lap trinh xu ly man hinh
14
BẢNG MÀ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 nền Brown, chữ Yellow, không nhấp nháy.
EX : 11010010 : 0D2H nền Magenta, chữ Green, nhấp nháy.
Chuoung 10 Lap trinh xu ly man hinh
15
CÁC MODE MÀN HÌNH
Các Card màn hình CGA,EGA,VGA cho phép chuyển đổi Video mode nhờ INT 10h.
Các trình ứng dụng thường dùng INT 10h để tìm Video mode hiện hành.
Ex: 1 ứng dụng thường muốn thể hiện đồ họa với độ phân giải cao (640x200) phải kiểm tra chắc chắn rằng MT hiện đang sử dụng đang dùng Card màn hình CGA,VGA hoặc EGA.
Chuoung 10 Lap trinh xu ly man hinh
16
CÁC MODE MÀN HÌNH
Có 2 chế độ làm việc của màn hình : text và đồ họa.
Chế độ màn hình :
25 dòng và 80 cột
25 dòng và 40 cột.
Màn hình là hình ảnh của Video Ram.
?
?
Ở chế độ text một trang màn hình cân tối thiểu bao nhiêu byte của VIDEO Ram
25X80X2 = 4000BYTES RAM VIDEO
VÙNG NHỚ NÀY NẰM TRÊN CARD MH
Chuoung 10 Lap trinh xu ly man hinh
17
CÁC MODE MÀN HÌNH
Các Video mode thông dụng :
Mode Mô tả
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
18
TRANG MÀN HÌNH (VIDEO PAGE)
Tất cả các Card CGA đều có khả năng lưu trữ nhiều màn hình text gọi là các trang màn hình (video page) trong bộ nhớ. Riêng card mono chỉ hiển thị 1 trang - trang 0. Số trang phụ thuộc vào mode màn hình.
Trong card màn hình màu, ta có thể ghi vào 1 trang này trong khi hiển thị trang khác hoặc chuyển đổi qua lại vị trí giữa các trang. Các trang được đánh số từ 0 đến 7.
Chuoung 10 Lap trinh xu ly man hinh
19
TRANG MÀN HÌNH (VIDEO PAGE)
số trang mode adaptor
0 07h monochrome
0-7 00h - 01h CGA
0-3 02h-03h CGA
0-7 02h-03h EGA
0-7 0Dh EGA
0-3 0Eh EGA
0-1 0Fh, 10h EGA
Chuoung 10 Lap trinh xu ly man hinh
20
THÍ DỤ VỀ TRANG MH
ĐỂ HIỂN THỊ 1 KÝ TỰ VỚI THUỘC TÍNH CỦA NÓ TẠI 1 VỊ TRÍ BẤT KỲ ? CHỨA KÝ TỰ VÀ THUỘC TÍNH VÀO TỪ TƯƠNG ỨNG TRONG TRANG HIỂN THỊ HOẠT ĐỘNG.
EX : Lấp đầy màn hình bằng chữ `A` màu đỏ trên nền xanh
Chuoung 10 Lap trinh xu ly man hinh
21
CH? D? D? H?A
Chuoung 10 Lap trinh xu ly man hinh
22
. 1. Ch?n ch? d? hi?n th? :
Ch?c nang AH = 0, ng?t 10H
Vo : AH = 0, AL = ki?u
Ví d? : thi?t l?p ch? d? van b?n mu
XOR AH, AH
MOV AL, 3 ; ch? d? van b?n mu 80 x 25
INT 10H
Truy xu?t thi?t b? xu?t chu?n (mn hình)
Chuoung 10 Lap trinh xu ly man hinh
23
Ch?c nang AH = 1, ng?t 10H
Vo : AH = 1,
CH = dịng qut d?u, CL = dịng qut cu?i
THAY D?I SIZE CON TR?
MN HÌNH
Ví d? : thi?t l?p con tr? v?i kích thu?c l?n nh?t
MOV AH, 1
MOV CH, 0 ; dịng b?t d?u
MOV CL, 13 ; dịng k?t thc
INT 10H
Chuoung 10 Lap trinh xu ly man hinh
24
Ch?c nang AH = 2, ng?t 10H
Vo : AH = 2,
DH = dịng m?i (0-24),
DL = c?t m?i (0-79)
BH = s? hi?u trang
D?CH CHUY?N
CON TR?
Ví d? : Di chuy?n con tr? d?n gi?a mn 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
25
Ch?c nang AH = 3, ng?t 10H
Vo : AH = 3, BH = s? hi?u trang
Ra : DH = dịng, DL = c?t,
CH = dịng qut d?u, CL = dịng qut cu?i
Ví d? : Di chuy?n con tr? ln m?t dịng n?u nĩ khơng ? dịng trn cng
MOV AH, 3
XOR BH, BH ; trang 0
INT 10H
OR DH, DH ; dịng trn cng DH = 0 ?
JZ exit
MOV AH, 2 ; ch?c nang d?ch con tr?
DEC DH ; gi?m m?t dịng
INT 10H
exit :
L?Y V? TRÍ KÍCH THU?C
CON TR? Hi?N HNH
Chuoung 10 Lap trinh xu ly man hinh
26
Ch?c nang AH = 6, ng?t 10H
Vo : AH = 6,
AL = s? dịng cu?n (= 0 l tồn mn hình)
Ra : BH = thu?c tính cc dịng tr?ng ,
CH, CL = dịng, c?t gĩc tri trn
DH, DL = dịng, c?t gĩc ph?i du?i c?a c?a s?
CU?N MN HÌNH
Ví d? : Xố den mn hình 80 x 25
MOV AH, 6
XOR AL, AL
XOR CX, CX
MOV DX, 184FH ; gĩc ph?i du?i
MOV BH, 7
INT 10H
Chuoung 10 Lap trinh xu ly man hinh
27
Ví d? t?ng h?p : Vi?t chuong trình th?c hi?n nhu sau:
. L?p ch? d? hi?n thi mu 80 x 25
. Xố c?a s? t?i gĩc tri trn : c?t 26 dịng 8 v gĩc ph?i du?i t?i c?t 52 dịng 16 thnh mu d?. . Sau dĩ hi?n th? kí t? A mu cam t?i v? trí con tr?.
Chuoung 10 Lap trinh xu ly man hinh
28
CÁC HÀM XỬ LÝ MÀN HÌNH
Các chức năng xử lý màn hình nằm trong INT 10h
Chức năng (để trong AH ) nhiệm vụ
0 set video mode chọn mono, text, graphic hoặc color mode
Set cursor line thiết lập 1 dòng quét tạo dạng cho cursor.
Set cursor position định vị cursor
get cursor position lấy vị trí cursor
đọc vị trí và trạng thái của bút vẽ light pen.
chọn trang muốn hiển thị.
cuộn cửa sổ hiện hành lên, thế các dòng cuộn bằng ktrống.
cuộn cửa sổ hiện hành xuống.
đọc ký tự và thuộc tính ký tự tại vị trí con trỏ hiện hành.
ghi ký tự và thuộc tính ký tự tại vị trí con trỏ hiện hành.
Chuoung 10 Lap trinh xu ly man hinh
29
CÁC HÀM XỬ LÝ MÀN HÌNH
Các chức năng xử lý màn hình nằm trong INT 10h
Chức năng (để trong AH ) nhiệm vụ
0Ah Ghi ký tự bỏ qua thuộc tính ký tự vào vị trí con trỏ hiện hành.
0Bh Chọn palette màu
0Ch Ghi 1 điểm graphic trong graphics mode.
0Dh Đọc giá trị màu của 1 pixel có vị trí đã biết.
0Eh Ghi ký tự ra màn hình và cập nhật con trỏ sang phải 1 vtrí.
0Fh Lấy mode màn hình hiện hành để xem đang ở chế độ text hay graphics.
Chuoung 10 Lap trinh xu ly man hinh
30
Thiết lập video mode.
AH = 0
AL = mode.
Nếu bit cao của AL =0 sẽ tự động xoá màn hình.
Nếu bit cao của AL = 1 không xoá màn hình.
Ex : thiết lập 80x25 color text mode
MOV AH, 0
MOV AL, 3 ; mode 3 , có xoá màn hình
INT 10h
LƯU Ý : Không muốn xoá màn hình thì AL = 83H
HÀM 0H INT 10H
Chuoung 10 Lap trinh xu ly man hinh
31
Ex : đoạn chương trình sau sẽ thiết lập video mode là hight resolution graphics, đợi gỏ 1 phím sau đó thiết lập video mode là color text mode.
HÀM 0H INT 10H
MOV AH, 0 ; set video mode
MOV AL, 6 ; 640x200 color graphics mode
INT 10h
MOV AH, 1 ; đợi gỏ 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
32
Dạng con trỏ màn hình được tạo ra bằng cách chỉ định số dòng quét.
Việc thay đổi dạng con trỏ chính là thay đổi số lượng và vị trí dòng quét này.
Màn hình monochrome dùng 13 dòng (từ 0 - 0Ch)
Màn hình CGA,VGA dùng 8 dòng (từ 0-7).
CGA/EGA
MONOCHROME
0
7
0
12
HÀM 01
INT 10H
Chuoung 10 Lap trinh xu ly man hinh
33
Ex: Minh họa
Thiết lập con trỏ có hình khối đặc.
MOV AH , 1
MOV CH, 0
MOV CL,0CH
INT 10H
Để thay đổi dạng con trỏ :
AH = 1
CH = TOP (dòng đầu)
CL = BOTTOM (dòng cuối)
Chuoung 10 Lap trinh xu ly man hinh
34
Ex2: lưu kích thước con trỏ hiện
hành vào 1 biến trước khi thay đổi kích
thước con trỏ để sau này phục hồi lại.
MOV AH , 1
MOV CX, 0607H
INT 10H
MOV AX, 4C00H
INT 21H
Ex2: trả kích thước con trỏ về dạng mặc định trước khi thoát.
MOV AH, 3
MOV BH, 0
INT 10H
MOV SAVECURSOR, CX
OR CH, 00100000
INT 10H
..... .
MOV AH, 1
MOV CX, SAVECURSOR
INT 10H
Chuoung 10 Lap trinh xu ly man hinh
35
HÀM 02H
INT 10H
Thiết lập vị trí hiện hành
SET CURSOR POSITION
AH = 2 ; DH = CHỈ SỐ DÒNG ; DL = CHỈ SỐ CỘT ;
BH= TRANG MÀN HÌNH CHỨA CURSOR
Ex : THIẾT LẬP CURSOR TẠI TỌA ĐỘ (DÒNG 10, CỘT 20) CỦA TRANG 0
; Chức năng set cursor
; dòng 10
; cột 20
; trang 0
; gọi BIOS
MOV AH, 2
MOV DH, 10
MOV DL, 20
MOV BH,0
INT 10H
Chuoung 10 Lap trinh xu ly man hinh
36
HÀM 03H
INT 10H
Lấy vị trí cursor hiện hành
GET CURSOR POSITION
AH =3 ;
BH= TRANG MÀN HÌNH MUỐN LẤY CURSOR
Gía trị trả về :
CH= Dòng quét đầu của cursor
CL = Dòng quét cuối của cursor
DH = vị trí dòng màn hình
DL = vị trí cột màn hình
Chuoung 10 Lap trinh xu ly man hinh
37
HÀM 03H
INT 10H
Lấy vị trí cursor hiện hành
GET CURSOR POSITION
Ex : lấy vị trí của cursor lưu vào biến.
Thường dùng trong các tác vụ 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
38
HÀM 05H
INT 10H
THIẾT LẬP TRANG MÀN HÌNH
SET VIDEO PAGE
DOSSEG
.MODEL SMALL
.STACK 100H
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS,AX
AH = 5 ; AL = TRANG MÀN HÌNH SẼ LÀ TRANG HIỆN HÀNH
EX : THAY ĐỔI TRANG MH KHI GỎ 1 PHÍM BẤT KỲ
MOV DX, OFFSET TRANG0
INT 21H
MOV AH , 1
INT 21H
SANG_TRANG_1 :
MOV AH, 5
MOV AL, 1
Chuoung 10 Lap trinh xu ly man hinh
39
HÀM 05H
INT 10H
THIẾT LẬP TRANG MÀN HÌNH
SET VIDEO PAGE
INT 10H
MOV AH, 9
MOV DX, OFFSET TRANG1
INT 21H
MOV AH, 1
INT 21H
SANG_TRANG_0 :
MOV AH, 5
MOV AL, 0
INT 10H
MOV AX, 4C00H
INT 21H
MAIN ENDP
.DATA
TRANG0 DB ` DAY LA TRANG 0,$`
TRANG1 DB ` DAY LA TRANG 1,$`
END MAIN
Chuoung 10 Lap trinh xu ly man hinh
40
HÀM 06H, 07H
INT 10H
CUỘN MÀN HÌNH
SCROLL WINDOW UP AND DOWN
CUỘN MÀN HÌNH LÀ TÁC VỤ LÀM CHO DỮ LIỆU TRƯỢT LÊN HOẶC XUỐNG.
CÁC DÒNG DỮ LIỆU BỊ CUỐN SẼ ĐƯỢC THAY THẾ BẰNG CÁC DÒNG TRỐNG
TA ĐỊNH NGHĨA WINDOWS NHỜ HỆ TỌA ĐỘ HÀNG CỘT VỚI GỐC TỌA ĐỘ LÀ GÓC TRÊN TRÁI CỦA MÀN HÌNH.
HÀNG SẼ THAY ĐỐI TỪ 0 ĐẾN 24 TỪ TRÊN XUỐNG.
CỘT SẼ THAY ĐỔI TỪ 0 ĐẾN 79 TỪ TRÁI SANG PHẢI.
TA CÓ THỂ CUỘN 1 VÀI DÒNG HOẶC CẢ WINDOWS.
TOÀN BỘ WINDOWS BỊ CUỘN ? MÀN HÌNH BỊ XOÁ.
Chuoung 10 Lap trinh xu ly man hinh
41
HÀM 06H, 07H
INT 10H
CUỘN MÀN HÌNH
SCROLL WINDOW UP AND DOWN
CÁC THÔNG SỐ :
CUỘN LÊN AH =6 ; CUỘN XUỐNG AH = 7
AL = SỐ DÒNG SẼ CUỘN ( = 0 NẾU CUỘN TOÀN BỘ MÀN HÌNH)
CH, CL = TỌA ĐỘ HÀNG,CỘT CỦA GÓC TRÊN TRÁICỦA WINDOWS
DH, DL = TOẠ ĐỘ HÀNG, CỘT CỦA GÓC DƯỚI PHẢI CỦA WINDOWS
BH = THUỘC TÍNH MÀN HÌNH CỦA CÁC DÒNG TRỐNG
KHI MÀN HÌNH ĐÃ CUỘN.
Chuoung 10 Lap trinh xu ly man hinh
42
HÀM 06H, 07H
INT 10H
CUỘN MÀN HÌNH
SCROLL WINDOW UP AND DOWN
EX : XÓA MÀN HÌNH BẰNG CÁCH CUỘN LÊN TOÀN BỘ MÀN HÌNH VỚI THUỘC TÍNH NORMAL
MOV AH, 6
MOV AL, 0
MOV CH, 0
MOV CL, 0
MOV DL, 24
MOV DH, 79
MOV BH, 7
INT 10H
MOV AX, 0600H
MOV CX, 0000H
MOV DX, 184FH
MOV BH, 7
INT 10H
Chuoung 10 Lap trinh xu ly man hinh
43
HÀM 06H, 07H
INT 10H
CUỘN MÀN HÌNH
SCROLL WINDOW UP AND DOWN
EX : CUỘN WINDOWS TỪ (10,20) TỚI (15,60), CUỘN XUỐNG 2 DÒNG, 2 DÒNG CUỘN SẼ CÓ THUỘC TÍNH VIDEO ĐẢO.
MOV AX, 0702H
MOV CX,0A14H
MOV DX, 0F3CH
MOV BH, 70H
INT 10H
Chuoung 10 Lap trinh xu ly man hinh
44
HÀM 08H
INT 10H
ĐỌC 1 KÝ TỰ VÀ THUỘC TÍNH KÝ TỰ.
READ CHARACTER AND ATTRIBUTE
AH =8 ; BH = TRANG MÀN HÌNH
TRI TRẢ VỀ :
AL = KÝ TỰ ĐÃ ĐỌC ĐƯỢC ; AH = THUỘC TÍNH CỦA KÝ TỰ
EX : THIẾT LẬP CURSOR TẠI HÀNG 5 CỘT 1 SAU ĐÓ NHẬN 1 KÝ TỰ NHẬP.LƯU KÝ TỰ ĐÃ ĐỌC ĐƯỢC VÀ THUỘC TÍNH CỦA KÝ TỰ NÀY.
GETCHAR :
MOV AH, 8
MOV BH, 0
INT 10H
MOV CHAR, AL
MOV ATTRIB , AH
LOCATE :
MOV AH, 2
MOV BH, 0
MOV DX, 0501H
INT 10H
Chuoung 10 Lap trinh xu ly man hinh
45
HÀM 09H
INT 10H
GHI 1 KÝ TỰ VÀ THUỘC TÍNH KÝ TỰ.
WRITE CHARACTER AND ATTRIBUTE
AH =9 ; BH = TRANG VIDEO
AL = KÝ TỰ SẼ XUẤT ;
BL = THUỘC TÍNH CỦA KÝ TỰ SẼ XUẤT
CX = HỆ SỐ LẶP
CHỨC NĂNG 09H INT 10H :
XUẤT (GHI) 1 HOẶC NHIỀU KÝ TỰ CÙNG VỚI THUỘC TÍNH CỦA CHÚNG LÊN MÀN HÌNH. CHỨC NĂNG NÀY CÓ THỂ XUẤT MỌI MÃ ASCII KỂ CẢ KÝ TỰ ĐỒ HỌA ĐẶC BIỆT CÓ MÃ TỪ 1 ĐẾN 31
Chuoung 10 Lap trinh xu ly man hinh
46
HÀM 0AH
INT 10H
GHI 1 KÝ TỰ VÀ THUỘC TÍNH KÝ TỰ.
WRITE CHARACTER AND ATTRIBUTE
AH =9 ; BH = TRANG VIDEO
AL = KÝ TỰ SẼ XUẤT ;
BL = THUỘC TÍNH CỦA KÝ TỰ SẼ XUẤT
CX = HỆ SỐ LẶP
CHỨC NĂNG 0AH INT 10H :
XUẤT (GHI) 1 HOẶC NHIỀU KÝ TỰ CÙNG VỚI THUỘC TÍNH CỦA CHÚNG LÊN MÀN HÌNH. CHỨC NĂNG NÀY CÓ THỂ XUẤT MỌI MÃ ASCII KỂ CẢ KÝ TỰ ĐỒ HỌA ĐẶC BIỆT CÓ MÃ TỪ 1 ĐẾN 31
Chuoung 10 Lap trinh xu ly man hinh
47
HÀM 0AH
INT 10H
GHI 1 KÝ TỰ VÀ THUỘC TÍNH KÝ TỰ.
WRITE CHARACTER AND ATTRIBUTE
AH =9 ; BH = TRANG VIDEO
AL = KÝ TỰ SẼ XUẤT ;
BL = THUỘC TÍNH CỦA KÝ TỰ SẼ XUẤT
CX = HỆ SỐ LẶP
CHỨC NĂNG 0AH INT 10H :
XUẤT (GHI) 1 HOẶC NHIỀU KÝ TỰ CÙNG VỚI THUỘC TÍNH CỦA CHÚNG LÊN MÀN HÌNH. CHỨC NĂNG NÀY CÓ THỂ XUẤT MỌI MÃ ASCII KỂ CẢ KÝ TỰ ĐỒ HỌA ĐẶC BIỆT CÓ MÃ TỪ 1 ĐẾN 31
Chuoung 10 Lap trinh xu ly man hinh
48
HÀM 0FH
INT 10H
LẤY VIDEO MODE
GET VIDEO MODE
AH =0F ;
BH = TRANG HIỆN HÀNH
AH = SỐ CỘT MÀN HÌNH ;
AL = MODE MÀN HÌNH HIỆN HÀNH
CHỨC NĂNG 0FH INT 10H : LẤY VIDEO MODE
EX : MOV AH,0FH ; Get Video Mode Function
INT 10H ; gọi BIOS
MOVE VIDEO_MODE, AL ; lưu Video Mode vào biến bộ nhớ
MOV PAGE, BH ; lưu trang hiện hành.
Chuoung 10 Lap trinh xu ly man hinh
49
LẬP TRÌNH XỬ LÝ PHÍM
1. D?c phím nh?n :
Ch?c nang AH = 0, ng?t 16H
Vo : AH = 0
Ra : AL = m ASCII n?u m?t phím ASCII du?c nh?n
= 0 n?u phím di?u khi?n du?c nh?n
AH = m scan c?a phím nh?n
Chuoung 10 Lap trinh xu ly man hinh
50
LẬP TRÌNH XỬ LÝ PHÍM
BN PHÍM
Chuoung 10 Lap trinh xu ly man hinh
51
BN PHÍM
Chuoung 10 Lap trinh xu ly man hinh
52
BN PHÍM
Chuoung 10 Lap trinh xu ly man hinh
53
BN PHÍM
Chuoung 10 Lap trinh xu ly man hinh
54
BN PHÍM
Chuoung 10 Lap trinh xu ly man hinh
55
BN PHÍM
Chuoung 10 Lap trinh xu ly man hinh
56
LẬP TRÌNH XỬ LÝ PHÍM
Ki?m tra tr?ng thi cc phím Ctrl, Alt, Shift :
Chng ta cĩ th? d?c tr?c ti?p t? d?a ch? 0:0417 ho?c l?y trong AL
thơng qua hm AH = 2 ng?t 16H.
Cch d?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
57
3. Ki?m tra v thi?t l?p tr?ng thi cc phím Caps/Num/Scroll Lock tuong t? nhung v?i m
scan khc Scroll = 10H, Num = 20H, Cap = 40H.
4. D?t l?i cc tr?ng thi dn Caps/Num/Scroll Lock, ta ch? c?n d?t l?i gi tr? ? d?a ch? 0:0417.
Vd, d? b?t dn Caps Lock v d?i tr?ng thi dn Num Lock ta s? lm nhu sau:
XOR AX, AX
MOV ES, AX ; ES = 0
MOV AL, ES:[417H] ; d?c tr?ng thi dn
OR AL, 40H ; b?t dn Caps Lock
XOR AL, 20H ; d?o dn Nums Lock
MOV ES:[417H], AL ;
MOV AH , 2H
INT 16H
Chuoung 10 Lap trinh xu ly man hinh
58
BÀI TẬP LẬP TRÌNH
BÀI 1 : VIẾT ĐOẠN CHƯƠNG TRÌNH LÀM CÁC VIỆC SAU :
CUỘN WINDOW TỪ HÀNG 5, CỘT 10 TỚI HÀNG 20 CỘT 70 VỚI THUỘC TÍNH MÀN HÌNH ĐẢO.
ĐỊNH VỊ CURSOR TẠI HÀNG 10, CỘT 20
HIỂN THỊ DÒNG TEXT " DAY LA 1 DONG TEXT TRONG WINDOW"
SAU KHI XUẤT TEXT ĐỢI NHẤN 1 PHÍM.
CUỘN WINDOW TỪ HÀNG 5, CỘT 15 TỚI HÀNG 18 CỘT 68 VỚI THUỘC TÍNH THƯỜNG.
XUẤT KÝ TỰ A VỚI THUỘC TÍNH NHẤP NHÁY TẠI GIỮA WINDOW.
ĐỢI GỎ 1 PHÍM, XÓA TOÀN BỘ MÀN HÌNH..
Chuoung 10 Lap trinh xu ly man hinh
59
BÀI TẬP LẬP TRÌNH
BÀI 2 : VIẾT CHƯƠNG TRÌNH LÀM CÁC VIỆC SAU :
XUẤT CHUỔI "GO VAO 1 KY TU THUONG : ` .
KHI USER GỎ 1 KÝ TỰ (KHI GỎ KHÔNG HIỂN THI KÝ TỰ GỎ RA MÀN HÌNH) ,ĐỔI KÝ TỰ NÀY THÀNH CHỮ HOA RỒI XUẤT RA MÀN HÌNH.GIẢ SỬ CHỈ NHẬP CÁC KÝ TỰ HỢP LỆ.
KHI GỎ KÝ TỰ MỞ RỘNG SẼ THOÁT VỀ DOS, NHƯNG CÓ LẼ BẠN CÒN NHÌN THẤY 1 KÝ TỰ XUẤT THÊM TRÊN MÀN HÌNH. GIẢI THÍCH.
Chuoung 10 Lap trinh xu ly man hinh
60
1. Vi?t chuong trình d? :
a. Xố mn hình, t?o kích thu?c to nh?t cho con tr? v di chuy?n nĩ d?n gĩc tri trn
b. N?u nh?n phím Home : chuy?n con tr? d?n gĩc tri trn, End : chuy?n d?n gĩc tri du?i, Page Dn : chuy?n con tr? d?n gĩc ph?i du?i, Esc : k?t thc chuong trình.
2. D?ch chuy?n con tr? d?n gĩc tri trn mn hình n?u phím F1 du?c nh?n, gĩc tri du?i n?u phím F2 du?c nh?n. Chuong trình s? b? qua cc kí t? thơng thu?ng.
3. Vi?t chuong trình so?n th?o van b?n nhu sau :
a. Xố mn hình, d?nh v? con tr? t?i d?u dịng 12
b. D? ngu?i s? d?ng dnh vo cc kí t?. Con tr? d?ch chuy?n di sau khi hi?n th? kí t? n?u nĩ khơng ? t?i l? ph?i c?a mn hình
c. Phím mui tn tri , ph?i, ln , xu?ng d?ch con tr? tuong ?ng
d. Phím Insert : chn kí t?, Delete : Xố m?t kí t? , Esc : k?t thc chuong trình.
Chuoung 10 Lap trinh xu ly man hinh
61
BÀI TẬP LẬP TRÌNH
BÀI 3 : VIẾT CHƯƠNG TRÌNH LÀM CÁC VIỆC SAU :
CHO PHÉP VẼ ĐƠN GIẢN NHỜ CÁC PHÍM MỦI TÊN TRÊN BÀN PHÍM ĐỂ DI CHUYỂN THEO HƯỚNG MONG MUỐN.
PHẢI BẢO ĐẢM XUẤT CÁC KÝ TỰ GÓC THÍCH HỢP.
BIẾT RẰNG MÃ ASCII CỦA 1 SỐ KÝ TỰ : xem b?ng mã ASCII
MÃ SCAN CODE CỦA CÁC PHÍM MŨI TÊN :
TRÁI 4BH PHẢI 4DH LÊN 48H XUỐNG 50H
* Một số tài liệu cũ có thể bị lỗi font khi hiển thị do dùng bộ mã không phải Unikey ...
Người chia sẻ: Lê Ngọc Anh
Dung lượng: |
Lượt tài: 0
Loại file:
Nguồn : Chưa rõ
(Tài liệu chưa được thẩm định)