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

