佛山科学技术学院课程设计用纸
清屏后:
直至输入指令为0(代表exit)时退出系统。
七、设计总结
7.1系统特色
本系统基本实现命令访问接口的设计,能正常解释命令并执行,在命令的解释和执行直接采用DOS系统的中断调用以及功能类型号码的选择和设置,能够符合操作系统命令接口设计的要求。
7.2实践感受
课程设计是理论知识和实际操作的一种结合,对所学的知识进行强化。从确立课题到遇到问题查找资料,直到做出基本的结果,在这个过程中学到了之前所没有接触的知识点。例如在编程过程中要多使用库函数中自带的内容,不必另外再去编写已有的功能,这样不仅能节省时间,也能提高程序的可靠性。要多了解库函数,可以阅读相应的帮助文件来获得有用的信息。遇到问题多与老师同学讨论,可以帮助自己跳出定向思维。
7
佛山科学技术学院课程设计用纸
参考资料
《c程序设计》(第三版)谭浩强著清华大学出版社
《80x86汇编语言程序设计》沈美明,温冬婵 著清华大学出版社 《c与c++标准类库及函数.chm》
《Windows API for 2000/XP实例精解》王强周明李定国等编著电子工业出版社 《数据结构(c语言版)》严蔚敏,吴伟民等编著清华大学出版社
8
佛山科学技术学院课程设计用纸
附录
源代码(Torbo C 3.0环境下)
#include
printf(\ } void time() { }
void day() { } void dos() {
union REGS inregs,outregs;//定义中断信息结构体 union REGS inregs,outregs;//定义中断信息结构体 struct SREGS segregs; inregs.h.ah=0x2a; //读取日期
int86x(INTER,&inregs,&outregs,&segregs);
printf(\getchar();
union REGS inregs,outregs;//定义中断信息结构体 struct SREGS segregs; inregs.h.ah=0x2C; //读取时间
int86x(INTER,&inregs,&outregs,&segregs);
printf(\ getchar(); printf(\
printf(\printf(\printf(\printf(\printf(\printf(\printf(\
printf(\printf(\ printf(\ printf(\
printf(\
9
佛山科学技术学院课程设计用纸
}
void DeleteFile(char filename[80]) { }
void Createfile(char filename[80]) { { } }
void Deletefile(char filename[80]) {
int result;
union REGS inregs,outregs; printf(\ union REGS inregs,outregs; struct SREGS segregs; inregs.h.ah=0x39;
inregs.x.dx=FP_OFF(filename); segregs.ds=FP_SEG(filename);
int86x(INTER,&inregs,&outregs,&segregs);
printf(\ int result;
union REGS inregs,outregs; struct SREGS segregs;
inregs.h.ah=0x41;//DOS 中断号 41 是删除文件 inregs.x.dx=FP_OFF(filename); segregs.ds=FP_SEG(filename);
int86x(INTER,&inregs,&outregs,&segregs); if(result==2||result==5) { } else { }
printf(\
printf(\ The file may not be exist!\\n\struct SREGS segregs;
inregs.h.ah=0x30;//DOS 30号功能读取MS-DOS版本号 int86x(INTER,&inregs,&outregs,&segregs); printf(\
DOS
version
of
this
machine
is:%d,%d,%d,%d:%d\\n\
if(02==outregs.x.ax)//02 表示文件未找到
10
佛山科学技术学院课程设计用纸
}
void file(char filename1[80],char filename2[80]) { } }
void rewords() void showlist() { char list[80]; union REGS reg; struct SREGS segreg;
reg.h.ah = 0x47;//47H 读取当前目录 reg.h.dl = 0;
reg.x.si = FP_OFF(list); segreg.ds = FP_SEG(list); intdosx(®, ®, &segreg);
printf(\ union REGS inregs,outregs; struct SREGS segregs;
inregs.h.ah=0x56;//DOS 中断号 56 是重命名文件 inregs.x.dx=FP_OFF(filename1); segregs.ds=FP_SEG(filename1); inregs.x.di=FP_OFF(filename2); segregs.es=FP_SEG(filename2);
int86x(INTER,&inregs,&outregs,&segregs); if(outregs.x.ax==02) { }
printf(\
printf(\ struct SREGS segregs;
inregs.h.ah=0x3A; //3A 表示删除目录 inregs.x.dx=FP_OFF(filename); segregs.ds=FP_SEG(filename);
int86x(INTER,&inregs,&outregs,&segregs); result=outregs.x.ax; if(result==2||result==5) { } else { }
printf(\
printf(\ The file may not be exist!\\n\
11