.b Bộ đệm bàn phím và các thao tác

Một phần của tài liệu Ghép Nối Cấu Trúc Máy Tính ppt (Trang 34 - 35)

.II Một số kỹ thuật lập trình ghép nối cơ bản .1 Lập trình phối ghép với bàn phím

.b Bộ đệm bàn phím và các thao tác

cho vị trí của phím trên bàn phím và cho trạng thái của phím (nhấn, không nhấn, nhấn chưa nhả..). Bộ đệm bàn phím (Keyboard buffer) là một miền nhớ 16 word trong RAM. Thuộc vùng dữ liệu của BIOS. Dưới đây là một phần vùng dữ liệu của BIOS (DTA) liên quan đến bộ đệm và trạng thái bàn phím:

Địa chỉ Nội dung

40:0000-40:0006 Địa chỉ các bộ phối ghép RS232 (1-4) 40:0008-40:000F Địa chỉ các bộ phối ghép máy in (1-4) 40:0010 Cờ thiết bị (do ngắt 11h trả lại) 40:0012 Dấu hiệu kiểm tra của nhà sản xuất 40:0013 Dung lượng nhớ tính theo đơn vị KB 40:0015 Bộ nhớ của kệnh vào/ra

40:0017 Cờ bàn phím

40:0019 Các số vào bằng phím alt 40:001A Vị trí Head của vùng đệm 40:001C Vị trí Tail của vùng đệm 40:001E-40:003D Bộ đệm bàn phím

Vùng đệm bàn phím được tổ chức theo một hàng đợi quay vòng (circular queue) trong đó thao tác đọc và ghi vào bộ đệm là độc lập với nhau, điều này làm cho việc ghi tác động phím vào và đọc ra theo kiểu mã phím (ASCII+Scan) nào được đưa vào bộ đệm trước thì sẽ được lấy ra trước.

Con trỏ Head lưu trữ địa chỉ dành cho thao tác đọc, đó là vị trí sẽ đọc ký tự tiếp theo ra khỏi bộ đệm bàn phím. Sau mỗi thao tác đọc Head được tăng lên 1 word. Word tại địa chỉ 40:001A trong vùng DTA chứa địa chỉ của Head.

Con trỏ Tail lưu trữ địa chỉ sẽ ghi tác động phím tiếp theo vào bộ đệm bàn phím. Sau mỗi thao tác ghi Tail được tăng lên 1. Word tại địa chỉ 40:001C chứa địa chỉ của Tail. Khi cả Head và Tail cùng trỏ tới word cuối cùng của bộ đệm và nếu có một tác động phím nữa xảy ra thì cả Head và Tail cùng trỏ tới đầu vùng đệm (40:001E)

Cứ mỗi phím được đọc ra thì Head lại tiến gần đến Tail, khi tất cả vùng đệm đã được đọc hết thì Head sẽ đuổi kịp Tail và cả hai cùng trỏ tới cùng một địa chỉ, lúc đó bộ đệm là rỗng.

Khi có lời gọi ngắt int 9 thì chương trình của ta chiếm quyền điều khiển, nó sẽ gọi đến chương trình xử lý ngắt bàn phím cũ để nhận tác động phím và đặt cặp byte mã ASCII và Scan vào bộ đệm bàn phím. Đồng thời gán cho DS địa chỉ đoạn của vùng dữ liệu BIOS và kiểm tra xem Tail có trong bộ đệm bàn phím không, word nằm trước Tail sẽ tương ứng với phím vừa mới nhận vào. Đọc byte mã Scan vào thanh ghi DH và byte mã ASCII vào DL. Sau đó, kiểm tra word trong DX có phải là hot-key hay không, nếu không phải sẽ nhảy đến kết thúc.

.c Phương pháp lập trình bàn phím và một số chương trình mẫu

Một phần của tài liệu Ghép Nối Cấu Trúc Máy Tính ppt (Trang 34 - 35)

Tải bản đầy đủ (DOC)

(49 trang)
w