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.

pdf2 trang | Chuyên mục: Hệ Điều Hành | Chia sẻ: dkS00TYs | Lượt xem: 2286 | Lượt tải: 2download
Tóm tắt nội dung 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, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
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:

  • pdfHướ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