Tải bản đầy đủ (.pdf) (22 trang)

Chương 3 - Xử lý màn hình và bàn phím ppt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (416.65 KB, 22 trang )

Chöông 3: XÖÛ LYÙ MAØN HÌNH VAØ BAØN PHÍM (Cơ bản)
Màn hình
- Màn hình là lưới các ô được địa chỉ hóa
- Màn hình chế độ văn bản có 25 hàng (024) và 80 cột (079)

Vị trí trên màn hình
Dạng thập phân

Dạng số Hex
Hàng Cột Hàng Cột
Góc
trái trên 00 00 00h 00h
Góc
phải trên 00 79 00h 4Fh
Giữa
màn hình 12 39/40 0Ch 27h
Góc
trái dưới 24 00 18h 00h
Góc
phải dưới 24 79 18h 4Fh
- Các ngắt và chức năng:
* INT 10h (BIOS) * INT 21h (DOS)
- 02h: Thiết lập cursor - 02h/09h/40h: Hiển thị màn hình
- 06h: Cuộn màn hình - 0Ah/3Fh: Nhập từ bàn phím
Thiết lập cursor
INT – Với ngắt 10h
* Số hiệu hàm: 2 – Yêu cầu thiết lập cursor
Thao tác
Thanh ghi
Giá trị Điều kiện
Vào



AH

2

BH

<số>

Số
trang màn hình (Mặc định=0)
DH

<số>

Hàng

DL

<số>

Cột

Ví dụ: Thiết lập cursor ở vị trí hàng 5 và cột 12:

MOV AH,2
MOV BH,0
MOV DH,5
MOV DL,12
INT 10h

MOV DX,050Ch
Chöông 3: XÖÛ LYÙ MAØN HÌNH VAØ BAØN PHÍM (Cơ bản)
Xóa màn hình
INT – Với ngắt 10h
* Số hiệu hàm: 6 – Xóa một phần hoặc toàn bộ màn hình
Thao tác
Thanh ghi
Giá trị Điều kiện
Vào

AH

6

AL

0

Xóa
toàn màn hình =0
BH

<số>

Thuộc
tính màu (Back/fore ground)
CX

<hàng:cột>
hàng:cột

bắt đầu
DX

<hàng:cột>
hàng:cột
kết thúc
Ví dụ: Xóa toàn bộ màn hình từ vị trí hàng:cột=00:00h đến 18:4Fh
MOV AH,6
MOV AL,0
MOV BH,71h
MOV CX,0000h
MOV DX,184Fh
INT 10h
MOV AX,0600h
Nền trắng (7)
Chữ xanh (1)
Chöông 3: XÖÛ LYÙ MAØN HÌNH VAØ BAØN PHÍM (Cơ bản)
Nhập dữ liệu từ bàn phím
INT – Với ngắt 21h
* Số hiệu hàm: 0Ah – Nhập dữ liệu từ bàn phím
- Sử dụng một danh sách tham số với cấu trúc:
NAMEPAR LABEL BYTE ;bắt đầu danh sách tham số
MAXLEN DB <n> ;Số ký tự nhập vào cực đại
ACTLEN DB ? ;Số ký tự đã nhập vào
NAMEFLD DB <n> DUP(‘ ‘) ;Các ký tự được nhập từ bàn phím

- Ví dụ: NAMEPAR LABEL BYTE
MAXLEN DB 20
ACTLEN DB ?
NAMEFLD DB 20 DUP(‘ ‘)

Thao tác
Thanh ghi
Giá trị Điều kiện
Vào

AH

6

DX

NAMEPAR

Nạp
địa chỉ của danh sách tham số

Ra

NAMEFLD

Mãng
có chiều dài cực đại n-1
Chöông 3: XÖÛ LYÙ MAØN HÌNH VAØ BAØN PHÍM (Cơ bản)
Nhập dữ liệu từ bàn phím
INT – Với ngắt 21h
* Số hiệu hàm: 0Ah – Nhập dữ liệu từ bàn phím
- Ví dụ:
.DATA
NAMEPAR LABEL BYTE
MAXLEN DB 20

ACTLEN DB ?
NAMEFLD DB 20 DUP(‘ ‘)
.CODE
MOV AH,0Ah
LEA DX,NAMEPAR
INT 21h
- Gỉa sử nhập nội dung là ‘BROWN’  Danh sách tham số như sau:
ASCII 20 5 B R O W N #
HEX 14 05 42 52 4F 57 4E 0D
 Lưu ký tự Enter (0Dh) vào
 Ký tự B được truy cập tại phần tử NAMEFLD
 Ký tự R được truy cập tại phần tử NAMEFLD+1

Chöông 3: XÖÛ LYÙ MAØN HÌNH VAØ BAØN PHÍM (Cơ bản)
Nhập dữ liệu từ bàn phím
Ví dụ: Nhập và tách họ tên sinh viên, sau đó hiển thị tên vừa nhập lên
màn hình.
.MODEL SMALL
.DATA
MSG1 DB ‘Nhập họ tên sinh viên:$'
MSG2 DB 0Ah,0Dh,'Ten sinh vien la:$'

NAMEPAR LABEL BYTE
MAXLEN DB 20
ACTLEN DB ?
NAMEFLD DB 20 DUP(' ')

.CODE
MOV AX,@DATA
MOV DS,AX


MOV AH,9 ;Hiển thị thông báo nhập
LEA DX,MSG1
INT 21h

Chöông 3: XÖÛ LYÙ MAØN HÌNH VAØ BAØN PHÍM (Cơ bản)
MOV AH,0Ah ;Nhập nội dung dữ liệu
LEA DX,NAMEPAR
INT 21h

MOV BH,00 ;Xác định độ dài dữ liệu để
MOV BL,ACTLEN ;thay thế nội dung ký tự Enter
MOV NAMEFLD[BX],'$' ;thành ký tự ‘$’

MOV AH,9 ;In ra thông báo kết quả
LEA DX,MSG2
INT 21h

MOV AH,9 ;In dữ liệu
LEA DX,NAMEFLD
INT 21h

MOV AH,4Ch
INT 21h

END

Chöông 3: XÖÛ LYÙ MAØN HÌNH VAØ BAØN PHÍM (Cơ bản)
Xóa vùng nhập dữ liệu
* Ví dụ với các dữ liệu được nhập liên tiếp:

Dữ liệu Giá trị NAMEPAR (HEX)
PAINE 14 05 50 41 49 4E 45 0D 20 20 20 20
HAMILTON 14 08 48 41 4D 49 4C 54 4F 4E 0D 20
ADAMS 14 05 41 44 41 4D 53 0D 4F 4E 0D 20

 Phải xóa các dữ liệu trước khi nhập dữ liệu mới:

MOV CX,20 ;lặp 20 lần cho thao tác
MOV SI,0
XOA:
MOV NAMEFLD[SI],20h ;thay thế bằng khoảng trắng
INC SI
LOOP XOA

Chöông 3: XÖÛ LYÙ MAØN HÌNH VAØ BAØN PHÍM (Cơ bản)
Thiết lập chế độ màn hình
Chöông 3: XÖÛ LYÙ MAØN HÌNH VAØ BAØN PHÍM (Naâng cao)
INT – Với ngắt 10h
* Số hiệu hàm: 00h – Thiết lập chế độ màn hình mới
Thao tác
Thanh ghi
Giá trị Điều kiện
Vào

AH

00h

AL


Mode

Chế
độ video
Ví dụ:
MOV AH,00 ;yêu cầu thiết lập chế độ
MOV AL,03 ;Mode=03:màn hình màu 80x25
INT 10h
Chöông 3: XÖÛ LYÙ MAØN HÌNH VAØ BAØN PHÍM (Naâng cao)
Các chế độ màn hình văn bản
Mode Kích cỡ Loại Độ phân giải/màu
00

40x25

CGA

EGA

VGA

320x200
/Mono
320x350
/Mono
320x450
/Mono
01

40x25


CGA

EGA

VGA

320x200
/Color
320x350
/Color
320x450
/Color
02

80x25

CGA

EGA

VGA

640x200
/Mono
640x350
/Mono
720x400
/Mono
03


80x25

CGA

EGA

VGA

640x200
/Color
640x350
/Color
720x400
/Color


Thiết lập chế độ màn hình
Chöông 3: XÖÛ LYÙ MAØN HÌNH VAØ BAØN PHÍM (Naâng cao)
Byte thuộc tính
- Byte thuộc tính trong chế độ văn bản thể hiện tính chất một ký tự được
hiển thị
- Byte thuộc tính có dạng sau:
Background ForeGround
Thuộc tính: BL R G B I R G B
Số thứ tự Bit: 7 6 5 4 3 2 1 0
Ví dụ: Thiết lập màu nền màu đen và chữ trắng:
0 0 0 0 0 1 1 1
- Một số mã màu:
Màu R G B Màu R G B

Đen 0 0 0 Lam 0 0 1
Lục 0 1 0 Cam 0 1 1
Đỏ 1 0 0 Tím 1 0 1
Nâu 1 1 0 Trắng 1 1 1
- Thuộc tính khác: BL (=1:Nhấp nháy), I (Cường độ)
Thiết lập chế độ màn hình
Chöông 3: XÖÛ LYÙ MAØN HÌNH VAØ BAØN PHÍM (Naâng cao)
Trang màn hình
- Chế độ văn bản cho phép lưu dữ liệu trong bộ nhớ video thành từng
trang
- Trong chế độ 80 cột
* Mặc nhiên là trang 0 và bắt đầu từ địa chỉ B800
* Trang 1 bắt đầu từ địa chỉ B900
* Trang 2 bắt đầu từ địa chỉ BA00
* Trang 3 bắt đầu từ địa chỉ BB00
- Tại mỗi thời điểm chỉ thể hiện 1 trang màn hình
Thiết lập chế độ màn hình
Thiết lập chế độ màn hình
Chöông 3: XÖÛ LYÙ MAØN HÌNH VAØ BAØN PHÍM (Naâng cao)
INT – Với ngắt 10h
* Số hiệu hàm: 01h – Thiết lập kích thước cursor
Thao tác
Thanh ghi
Giá trị Điều kiện
Vào

AH

01


CH

0
4
Đỉnh
cursor
CL

0
4
Đáy
cursor
* Hiệu chỉnh đỉnh và đáy cursor cho các loại màn hình:
CGA: 0:7 VGA: 0:14 EGA: 0;13
* Ví dụ:
MOV AH,1
MOV CH,0
MOV CL,14
INT 10h
Thiết lập chế độ màn hình
Chöông 3: XÖÛ LYÙ MAØN HÌNH VAØ BAØN PHÍM (Naâng cao)
INT – Với ngắt 10h
* Số hiệu hàm: 02h – Thiết lập vị trí cursor
Thao tác
Thanh ghi
Giá trị Điều kiện
Vào

AH


02

BH

0
3
Số
của trang (0,1,2,3)
DH

Hàng

DL

Cột

* Ví dụ: Thiết lập cursor ở hàng 5 cột 20 của trang 0
MOV AH,2
MOV BH,0
MOV DH,5
MOV DL,20
INT 10h
Thiết lập chế độ màn hình
Chöông 3: XÖÛ LYÙ MAØN HÌNH VAØ BAØN PHÍM (Naâng cao)
INT – Với ngắt 10h
* Số hiệu hàm: 03h – Đọc vị trí cursor
Thao tác
Thanh ghi
Giá trị Điều kiện
Vào


AH

03

BH

0
3
Số
của trang (0,1,2,3)
Ra

DH/DL

Hàng/Cột

CH/CL

Bắt
đầu/Kết thúc dòng quét cursor
* Ví dụ: Đọc vị trí curos, sau đó di chuyển cursor đến cột kế tiếp
MOV AH,3
MOV BH,0
INT 10h

MOV AH,2
INC DL
INT 10h
Thit lp ch mn hỡnh

Chửụng 3: Xệ LY MAỉN HèNH VAỉ BAỉN PHM (Naõng cao)
INT Vi ngt 10h
* S hiu hm: 06h/07h Cun mn hỡnh (cun lờn/xung)/Xúa mn hỡnh
Thao tỏc
Thanh ghi
Giỏ tr iu kin
Vo

AH

06/07

AL

S
hng
(=0: Ton
mn hỡnh)
CX

Hng:ct

Hng:ct
bt u
DX

Hng:ct

Hng:Ct
kt thỳc

* Vớ d: Cun mn hỡnh lờn 1 dũng v thit lp thuc tớnh mu
MOV AH,6
MOV AL,1
MOV BH,30 ;nn=cam, ch=en
MOV CX,0000 ;T 00:00
MOV DX,184Fh ;n 18:4F (c mn hỡnh)
INT 10h
Thiết lập chế độ màn hình
Chöông 3: XÖÛ LYÙ MAØN HÌNH VAØ BAØN PHÍM (Naâng cao)
INT – Với ngắt 10h
* Số hiệu hàm: 08h – đọc thuộc tính/ký tự tại vị trí cursor
Thao tác
Thanh ghi
Giá trị Điều kiện
Vào

AH

08

BH

Số
trang
Ra

AL

Trả
về ký tự

AH

Trả
về thuộc tính của ký tự
* Ví dụ:
MOV AH,8
MOV BH,0
INT 10h
Thiết lập chế độ màn hình
Chöông 3: XÖÛ LYÙ MAØN HÌNH VAØ BAØN PHÍM (Naâng cao)
INT – Với ngắt 10h
* Số hiệu hàm: 09h – Hiển thị thuộc tính/ký tự tại vị trí cursor
Thao tác
Thanh ghi
Giá trị Điều kiện
Vào

AH

09

AL


tự

ASCII
BH

Số

trang
BL

Thuộc
tính

CX

Số
lần hiển thị lặp ký tự
* Ví dụ: Hiển thị 80 dấu * và thiết lập thuộc tính màu
MOV AH,9
MOV AL,’*’
MOV BH,0
MOV BL,61h ;nền=Nâu,chữ=lam
MOV CX,80 ;lặp 80 lần
INT 10h
Thiết lập chế độ màn hình
Chöông 3: XÖÛ LYÙ MAØN HÌNH VAØ BAØN PHÍM (Naâng cao)
INT – Với ngắt 10h
* Số hiệu hàm: 0Fh – Xác định chế độ video hiện hành
Thao tác
Thanh ghi
Giá trị Điều kiện
Vào

AH

0Fh


Ra

AL

Mode màn
hình
AH

Số
ký tự/dòng
BH

Số
của trang hiện hành
* Ví dụ: Xác định chế độ video hiện hành
MOV AH,0Fh
INT 10h

CMP AL,03
JE
Xử lý nhập/xuất từ bàn phím
Chöông 3: XÖÛ LYÙ MAØN HÌNH VAØ BAØN PHÍM (Naâng cao)
INT – Với ngắt 21h
* Số hiệu hàm: 07h – Nhập từ bàn phím nhưng không hiển thị
Thao tác
Thanh ghi
Giá trị Điều kiện
Vào

AH


7

Ra

AL


ASCII
* Ví dụ: Mô phỏng kiểu nhập mật mã, không muốn hiển thị ký tự đã nhập
và hiển thị ký tự * thay thế

LAP: MOV AH,7h
INT 21h

MOV AH,2
MOV DL,’*’
INT 21h

JMP LAP
Xử lý nhập/xuất từ bàn phím
Chöông 3: XÖÛ LYÙ MAØN HÌNH VAØ BAØN PHÍM (Naâng cao)
INT – Với ngắt 16h
* Số hiệu hàm: 00h – Đọc một ký tự (bàn phím 83 phím)
Thao tác
Thanh ghi
Giá trị Điều kiện
Vào

AH


0

Ra

AL


ASCII
* Ví dụ:
MOV AH,0
INT 16h
Xử lý nhập/xuất từ bàn phím
Chöông 3: XÖÛ LYÙ MAØN HÌNH VAØ BAØN PHÍM (Naâng cao)
INT – Với ngắt 16h
* Số hiệu hàm: 10h – Đọc một ký tự (bàn phím 101 phím)
Thao tác
Thanh ghi
Giá trị Điều kiện
Vào

AH

0

Ra

AL



ASCII

tự ASCII
P
hím chức năng mở rộng (00h,E0h)
* Ví dụ: Nhấn một phím, kiểm tra có phải ấn phím chức năng hay không?
MOV AH,10h
INT 16h

CMP AL,00h ;có ấn phím chức năng?
JE
CMP AL,E0h
JE

×