Lập trình điều khiển chuột
Chöông 5: Xử lyù xuaát nhaäp
- Một số định nghĩa cơ bản:
* Mickey: Đơn vị đo sự dịch chuyển của chuột (=1/200 inch)
* Số đếm tính bằng mickey: là số mickey mà quả banh chuột lăn
theo chiều dọc và ngang = tương ứng số pixels trên màn hình
* Con trỏ chuột:Trong chế độ văn bản là khối sáng, trong chế độ đồ
họa là hình mũi tên
* Pixel: phần tử nhỏ nhất, định địa chỉ trên màn hình.
* Tốc độ ngưỡng: số mickey/giây chuột phải di chuyển = tương ứng
tốc độ di chuyển chuột trên màn hình x 2, mặc định là 64 mickey/sec
- Hầu hết các chỉ thị liên quan đến chuột đều sử dụng chức năng của ngắt
33h của DOS.
Cú pháp: MOV AX, số hiệu hàm
INT 33h
Một số chức năng ngắt 33h
Chöông 5: Xử lyù xuaát nhaäp
INT – Với ngắt 33h
* Số hiệu hàm: 00h – Khởi động chuột
Thao tác
Thanh ghi
Giá trị Điều kiện
Vào
AX
00h
Ra
AX
0000h = Không
có chuột
FFFFh = Có hỗ trợ chuột
BX
Số
nút nhấn của chuột
Ví dụ:
MOV AX,00h ;yêu cầu chuột
INT 33h
Một số chức năng ngắt 33h
Chöông 5: Xử lyù xuaát nhaäp
INT – Với ngắt 33h
* Số hiệu hàm: 01h – Hiển thị con trỏ của chuột
Thao tác
Thanh ghi
Giá trị Điều kiện
Vào
AX
01h
Ví dụ:
MOV AX,0600h
MOV CX,00h
MOV DX,184Fh
INT 10h
MOV AX,00h
INT 33h
CMP AX,0
JE THOAT
MOV AX,01h
INT 33h
Demo
Một số chức năng ngắt 33h
Chöông 5: Xử lyù xuaát nhaäp
INT – Với ngắt 33h
* Số hiệu hàm: 03h – Lấy trạng thái nút nhấn của chuột
Thao tác
Thanh ghi
Giá trị Điều kiện
Vào
AX
03h
Ra
BX
Trạng
thái các nút nhấn, tương ứng
các bit:
Bit 0: nút nhấn trái 0=lên, 1= xuống
Bit 1: nút nhấn phải 0=lên, 1= xuống
Bit 2: nút nhấn giữa 0=lên, 1= xuống
CX:DX
Tọa độ ngang:dọc
Ví dụ: Kiểm tra nếu nút phải nhấn thì thoát
A:
MOV AX,03h
INT 33h
CMP BX,02
JE THOAT
JMP A
Một số chức năng ngắt 33h
Chöông 5: Xử lyù xuaát nhaäp
INT – Với ngắt 33h
* Số hiệu hàm: 04h – Thiết lập vị trí của con trỏ
Thao tác
Thanh ghi
Giá trị Điều kiện
Vào
AX
04h
CX:DX
Vị
trí ngang:dọc
Tính bằng pixel với 8 pixels cho mỗi
byte ở mode 3
Ví dụ: MOV AX,00h
INT 33h
MOV AX,01h
INT 33h
MOV AX,04h
MOV CX,24 ;24x8
MOV DX,16 ;16x8
INT 33h
Một số chức năng ngắt 33h
Chöông 5: Xử lyù xuaát nhaäp
INT – Với ngắt 33h
* Số hiệu hàm: 05h – Lấy thông tin ấn nút nhấn của con trỏ
Thao tác
Thanh ghi
Giá trị Điều kiện
Vào
AX
05h
BX
<Số>
Số
của nút nhấn
0=trái, 1=phải, 2=giữa
Ra
AX
Trạng
thái của nút nhấn tương ứng
vị trí bit:
Bit 0: nút
trái 0=lên, 1 = xuống
Bit 1: nút phải 0=lên,1=xuống
Bit 3: nút giữa 0=lên,1=xuống
BX
Số
đếm số lần ấn nút
CX:DX
Tọa
độ ngang:dọc của lần ấn nút
cuối cùng
Một số chức năng ngắt 33h
Chöông 5: Xử lyù xuaát nhaäp
INT – Với ngắt 33h
* Số hiệu hàm: 10h – Thiết lập vùng loại trừ của con trỏ
Thao tác
Thanh ghi
Giá trị Điều kiện
Vào
AX
10h
CX:DX
Tọa
độ ngang:dọc ở trên trái
SI:DX
Tọa
độ ngang:dọc ở dưới phải
Ví dụ:
MOV AX,10h
MOV CX,10 ;10x8
MOV DX,6 ;6x8
MOV SI,30 ;30x8
MOV DX:12 ;12x8
INT 33h
Lp trỡnh x lý xut nhp
Chửụng 5: X lyự xuaỏt nhaọp
- B vi x lý ni vi thit b bờn ngoi thụng qua PORT: nhn tớn hiu t
thit b nhp v gi tớn hiu n thit b xut
- Cỏc PORT nhn dng thụng qua cỏc a ch t 0h n 3FFh
- S dng cỏc ch th IN v OUT qun lý xut nhp trc tip
- Cỳ phỏp:
IN <thanh ghi>,PORT
OUT PORT,<thanh ghi>
Trong ú: thanh ghi l AL (byte) hoc AX (t)
- Cú th xỏc nh a ch PORT tnh hoc ng:
a ch tnh: S dng trc tip toỏn hng t 0 255:
Vớ d: IN AL,port#
OUT port#,AX
a ch ng: S dng giỏ tr t 065535 cho DX
Vớ d: MOV DX,60h ;nhn t bn phớm
IN AL,DX ;mt byte
Lập trình xử lý xuất nhập
Chöông 5: Xử lyù xuaát nhaäp
Một số địa chỉ PORT thường dùng:
• 060h Nhập từ bàn phím
• 061h Loa
• 278h-20Fh Cổng máy in song song LPT3
• 378h-37Fh Cổng máy in song song LPT2
• 3BCh-3BFh Cổng máy in song song LPT1
• 3F8h-3FFh Cổng nối tiếp COM1
• 2F8h-2FFh Cổng nối tiếp COM2
• 3F0h-3F7h Bộ điều khiển đĩa