Hướng dẫn thực hành Hệ điều hành - Bài 2: Giả lập các lệnh DOS sử dụng hàm C
A. Lý thuyết
- Kỹnăng lập trình C căn bản.
- Các kỹthuật lập trình liên quan ñến tập tin.
- Các hàm trong thưviệc DOS.H và DIR.H
- Khái niệm mã ASCII và mã SCAN (mã quét)
B. Thực hành
1. VCT giảlập các lệnh của DOS: MD, CD, RD, DEL, REN, TYPE, COPY, COPY
CON, MOVE, DIR bằng cách sửdụng các hàm của C.
2. VCT thực hiện hiển thịmã ASCII & mã SCAN của các phím nhập vào. Chương
trình kết thúc khi nhấn phím 0 bên dãy NumPad.
HDTH môn Hệ ñiều hành Giả lập các lệnh Dos sử dụng hàm C Khoa Công Nghệ Thông Tin – Trường ðH KHTN Tp.HCM 1 Hướng dẫn thực hành bài 2 A. Lý thuyết - Kỹ năng lập trình C căn bản. - Các kỹ thuật lập trình liên quan ñến tập tin. - Các hàm trong thư việc DOS.H và DIR.H - Khái niệm mã ASCII và mã SCAN (mã quét) B. Thực hành 1. VCT giả lập các lệnh của DOS: MD, CD, RD, DEL, REN, TYPE, COPY, COPY CON, MOVE, DIR bằng cách sử dụng các hàm của C. 2. VCT thực hiện hiển thị mã ASCII & mã SCAN của các phím nhập vào. Chương trình kết thúc khi nhấn phím 0 bên dãy NumPad. Hướng dẫn: Bài 1: sử dụng các hàm trong thư viện DIR.H và STDIO.H như: - Tạo thư mục – MD: int mkdir(const char *path) - Chuyển thư mục – CD: int chdir(const char *path) - Xóa thư mục – RD: int rmdir(const char *path) - Xóa tập tin – DEL: int remove(const char *filename) trong STDIO.H - Hiển thị nội dung tập tin – TYPE: ñọc nội dung tập tin và xuất ra màn hình - Chép tập tin – COPY: ñọc nội dung tập tin và ghi nội dung ñó và file khác - Tạo tập tin – COPY CON: tạo tập tin mới với nội dung do người dùng nhập - Di chuyển tập tin – MOVE: giống COPY nhưng xóa luôn file nguồn - Liệt kê nội dung thư mục – DIR: sử dụng 2 hàm sau: o int findfirst(const char *pathname, struct ffblk *ffblk, int attrib) pathname: dạng tên tập tin / thư mục muốn tìm. ? thay cho 1 ký tự, * thay cho nhiều ký tự ffblk: trỏ ñến cấu trúc chứa thông tin tập tin / thư mục (tên, thuộc tính, ngày giờ…) attrib: • FA_RDONLY: READ ONLY - chỉ ñọc • FA_HIDDEN: HIDDEN - ẩn • FA_SYSTEM: SYSTEM - hệ thống • FA_LABEL: VOLUME LABEL - nhãn ñĩa • FA_DIREC: DIRECTORY - thư mục • FA_ARCH: ARCHIVE - lưu trữ. • Muốn có nhiều thuộc tính thì dùng dấu | (hoặc) Ý nghĩa: tìm tập tin / thư mục ñầu tiên thỏa ñiều kiện pathname và có thuộc tính mô tả trong attrib. o int findnext(struct ffblk *ffblk): tìm tập tin / thư mục thỏa ñiều kiện của findfirst trước ñó. Bài 2: ðoạn chương trình sau sẽ ñọc liên tục mã quét SCAN từ cổng bàn phím (0x60) tới khi nào người sử dụng nhấn phím 0 trên NumPad #include HDTH môn Hệ ñiều hành Giả lập các lệnh Dos sử dụng hàm C Khoa Công Nghệ Thông Tin – Trường ðH KHTN Tp.HCM 2 #define NUMPAD0_KEY 82 void main() { int scancode; while (scancode != NUMPAD0_KEY) { scancode = inportb(0x60); printf("%d \n", scancode); } } Hàm inportb là lấy 1 byte tín hiệu từ cổng thiết bị (cổng bàn phím là 0x60). Do ñó luồng tín hiệu ñến từ cổng luôn là scancode của phím ñược nhấn sau cùng (một phím khi nhấn sẽ phát sinh 2 tín hiệu: tín hiệu nhấn giữ và tín hiệu nhả ra, chênh lệch nhau 128). Mỗi phím trên bàn phím ñều sẽ tạo ra tín hiệu khác nhau, do ñó có thể biết ñược phím nào ñã ñược nhấn (kể cả numlock, shift, ctrl, atl, scroll lock, pause, printscreen....).
File đính kèm:
- Hướng dẫn thực hành Hệ điều hành - Bài 2 Giả lập các lệnh DOS sử dụng hàm C.pdf