Mở đầu 1. Cú pháp lệnh TYPE - Cú pháp lệnh: TYPE [ổ đĩa:][đường dẫn]<tên file> Các thành phần trong dấu ngoặc vuông “[ ]” là không bắt buộc. Các thành phần trong dấu “< >” là bắt buộc phải có. - Không có các tham số như một số lệnh khác(xem theo trang(/p), theo dòng…). - Trợ giúp: TYPE -? Hoặc: HELP TYPE - Xem nhiều file cùng lúc: TYPE [ổ đĩa:][đường dẫn]<tên file.*> : Xem tất cả các file cùng tên nhưng khác phần đuôi mở rộng(định dạng). TYPE [drive:][path] *.TXT : Xem tất cả các file có đuôi txt TYPE [drive:][path]<baitap*> : Xem tất cả các file có tên bắt đầu bằng “baitap” Trong môi trường DOS không phân biệt chữ hoa hay chữ thường Các lỗi trong lệnh TYPE + Không tìm thấy đường dẫn: “The system cannot find the path specified.” + Không tìm thấy file (trong thư mục đã chỉ ra): “The system cannot find the file specified.” + Không đúng cú pháp lệnh: “The syntax of the command is incorrect.” 2. Các ngắt được sử dụng. Ngắt 0x21,0x3D: dùng để mở tệp. Ngắt 0x21,0x3E: dùng để đóng tệp. Ngắt 0x21,0x3F: dùng để đọc tệp. I. Chương trình 1. Mở file Để mở file ta sử dụng ngắt 0x21,0x3D. Sau khi mở tệp ta tra về số hiệu tệp được mở để dùng cho đọc tệp. Báo lỗi nếu quá trình mở tệp xảy ra lỗi 2. Đọc file và in lên màn hình Để đọc file ta sử dụng ngắt 0x21,0x3F. Để thuận lợi cho việc xem toan bộ tệp đầy đủ và phù hợp với màn hình sau khi in 700 ký tự ta dừng lại để đọc. Báo lỗi nếu quá trình đọc tệp xảy ra lỗi //Ham mo tep int motep(char *tentep) { union REGS in, out; struct SREGS nd; in.h.ah=0x3d; //ngat (0x21,0x3D) dung de mo tep in.h.al=0; //AL chua mot mo (0:doc) nd.ds=FP_SEG(tentep); //DS:DX chua ten duong dan va ten file can mo in.x.dx=FP_OFF(tentep); int86x(0x21,&in,&out,&nd); // goi ngat 21h if (out.x.cflag) // neu co loi trong qua trinhmo { printf("\n Loi khi mo tep.Ma loi:%d ",out.x.cflag); getch(); exit(1); // thoat khoi chuong trinh neu file khong ton tai } //hoac loi khi mo file return out.x.ax; //tra ve so hieu tep duoc mo } //Ham doc va in noi dung tep void docintep(int shtep,int dai) { int sb,i; char h[10000]; union REGS in,out; struct SREGS nd; in.h.ah=0x3f; //ngat (0x21,0x3F) dung de doc tep in.x.bx=shtep; //BX nhan so hieu tep in.x.cx=dai; //CX nhan so byte muon doc nd.ds=FP_SEG(h); //DS:DX chua dia chi vung nho nhan du lieu 3. Đóng file sau khi đọc. Để đóng tệp ta sử dụng ngắt 0x21,0x3E. Báo lỗi nếu quá trình đóng tệp xảy ra lỗi. in.x.dx=FP_OFF(h); int86x(0x21,&in,&out,&nd); // Goi ngat 21h if (out.x.cflag!=0) { printf("\n Loi khi doc tep"); getch(); } for (i=0;i<out.x.ax;i++) // out.x.ax la so byte doc duoc { printf("%c",h[i]); // in noi dung kieu char if((i!=0)&&(i%700)==0) //in moi lan 700 ki tu roi dung lai de doc getch(); } } //Ham dong tep void dongtep(int shtep) { union REGS in, out; in.h.ah=0x3e; //ngat (0x21,0x3E) dung de dong tep in.x.bx=shtep; //BX nhan so hieu tep can dong int86(0x21,&in,&out); // goi ngat 21h if (out.x.cflag) //neu co loi khi dong tep { printf("\n Loi khi dong tep."); getch(); } } 4. Hàm main. //CHUONG TRINHMOPHONGLENHTYPE DUNG NGAT #include "stdio.h" #include "dos.h" #include "conio.h" #include "stdlib.h" //Khai bao cac ham int motep(char *tentep); //Mo tep void dongtep(int shtep); //Dong tep void docintep(int shtep,int dai); //Doc va in noi dung tep //Chuong trinh chinh void main() { clrscr(); char *tentep; int shtep,dai=10000; //so hieu tep, do dai toi da co the doc //10000(byte) printf("\nNhap duong dan va ten file:\n"); gets(tentep); shtep= motep(tentep); docintep(shtep,dai); dongtep(shtep); getch(); } II. Kết quả 1. Chương trình hoàn chỉnh. //CHUONG TRINHMOPHONGLENHTYPE DUNG NGAT #include "stdio.h" #include "dos.h" #include "conio.h" #include "stdlib.h" //Khai bao cac ham int motep(char *tentep); //Mo tep void dongtep(int shtep); //Dong tep void docintep(int shtep,int dai); //Doc va in noi dung tep //Chuong trinh chinh void main() { clrscr(); char *tentep; int shtep,dai=10000; //so hieu tep, do dai toi da co the doc //10000(byte) printf("\nNhap file va duong dan "); gets(tentep); shtep= motep(tentep); docintep(shtep,dai); dongtep(shtep); getch(); } //Ham mo tep int motep(char *tentep) { union REGS in, out; struct SREGS nd; in.h.ah=0x3d; //ngat (0x21,0x3D) dung de mo tep in.h.al=0; //AL chua mot mo (0:doc) nd.ds=FP_SEG(tentep); //DS:DX chua ten duong dan va ten file can mo in.x.dx=FP_OFF(tentep); int86x(0x21,&in,&out,&nd); // goi ngat 21h if (out.x.cflag) // neu co loi trong qua trinhmo { printf("\n Loi khi mo tep.Ma loi:%d ",out.x.cflag); getch(); exit(1); // thoat khoi chuong trinh neu file khong ton tai } //hoac loi khi mo file return out.x.ax; //tra ve so hieu tep duoc mo } //Ham dong tep void dongtep(int shtep) { union REGS in, out; in.h.ah=0x3e; //ngat (0x21,0x3E) dung de dong tep in.x.bx=shtep; //BX nhan so hieu tep can dong int86(0x21,&in,&out); if (out.x.cflag) //neu CF#0 thi loi dong tep { printf("\n Loi khi dong tep."); getch(); } } //Ham doc va in noi dung tep void docintep(int shtep,int dai) { int sb,i; char h[10000]; union REGS in,out; struct SREGS nd; in.h.ah=0x3f; //ngat (0x21,0x3F) dung de doc tep in.x.bx=shtep; //BX nhan so hieu tep in.x.cx=dai; //CX nhan so byte muon doc nd.ds=FP_SEG(h); //DS:DX chua dia chi vung nho nhan du lieu in.x.dx=FP_OFF(h); int86x(0x21,&in,&out,&nd); // goi ngat 21h if (out.x.cflag) // neu co loi khi doc tep { printf("\n Loi khi doc tep"); getch(); } for (i=0;i<out.x.ax;i++) // out.x.ax la so byte doc duoc { printf("%c",h[i]); // in noi dung kieu char if((i!=0)&&(i%700)==0) //in moi lan 700 ki tu roi dung de doc getch(); } } 2. Kết quả chạy chương trình. . khác(xem theo trang(/p), theo do ng…). - Trợ giúp: TYPE -? Hoặc: HELP TYPE - Xem nhiều file cùng lúc: TYPE [ổ đĩa:][đường dẫn]<tên file.*> : Xem tất cả các file cùng tên nhưng. (0x21,0x3F) dung de doc tep in.x.bx=shtep; //BX nhan so hieu tep in.x.cx =dai; //CX nhan so byte muon doc nd.ds=FP_SEG(h); //DS:DX chua dia chi vung nho nhan du lieu 3. Đóng file sau khi đọc. Để. lai de doc getch(); } } //Ham dong tep void dongtep(int shtep) { union REGS in, out; in.h.ah=0x3e; //ngat (0x21,0x3E) dung de dong tep in.x.bx=shtep; //BX nhan so hieu tep can dong int86(0x21,&in,&out);