操作系统的命令接口设计.doc_第1页
操作系统的命令接口设计.doc_第2页
操作系统的命令接口设计.doc_第3页
操作系统的命令接口设计.doc_第4页
操作系统的命令接口设计.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实用标准文案课程设计说明书设计名称: 计算机操作系统课程设计 题 目: 操作系统命令接口设计 学生姓名: 张协鎏 专 业: 计算机科学与技术 班 级: 13计算机科学与技术2班 学 号: 2013314209 指导教师: 任朝晖、曾凡智、黄营、周燕 日 期: 2015 年 9 月 20 日 计算机科学与技术 专业 2013 年级 2 班 张协鎏 一、 设计题目 操作系统命令接口设计二、 目的和要求(1)本设计的目的是通过设计一些简单的操作系统的命令接口,使学生掌握操作系统接口的设计方法。(2)要求学生在熟悉操作系统的命令接口及程序接口的基础上,利用C语言设计简单的命令接口。命令接口基于DOS的命令行接口。三、 设计内容利用C语言、DOS中断中21H与屏幕显示相关的中断调用完成设计,具体包括:1. 命令解释器2. 列目录命令3. 显示时间命令4. 显示日期命令5. 回显字符串命令6. 创建目录命令7. 删除目录命令8. 更改路径命令9. 显示当前工作目录命令10. 删除文件命令11. 打印文本命令12. 文件重新命名13. 显示文本命令14. 显示版本命令15. 显示目录结构命令16. 清除当前显示内容命令上述内容中,所有命令通过命令解释器能够执行,即启动命令解释器以后,输入相应命令,按照输入指令执行相应功能,并在屏幕上显示相应结果。四、 进度安排依照教学计划,课程设计时间为:2周。1. 要求讲解、资料查找、系统分析,概要设计 (2天)2. 系统详细设计、功能设计(2天)3. 算法实现、编程调试(5天)4. 功能演示、资料整理、课程设计说明书编写。(1天)五、 完成后应上交的资料课程设计的总结报告,主要包括以下内容:1. 课程设计的题目、系统的总功能和各子模块的功能;2. 源程序代码;3. 课程设计中遇到的主要问题和解决方法;4. 设计中存在的不足及改进的设想;5. 本次课程设计的感想和心得体会。六、 总评成绩指导教师 签名日期 年 月 日系 主 任 审核日期 年 月 日操作系统命令接口设计一、概念原理中断:指当出现需要时,CPU暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。即在程序运行过程中,系统出现了一个必须由CPU立即处理的情况,此时,CPU暂时中止程序的执行转而处理这个新的情况的过程就叫做中断。中断是一种发生了一个外部的事件时调用相应的处理程序的过程,通常,程序中断是由外部设备通过CPU的中断请求线向CPU提出的。在一定条件下,CPU响应中断后,暂停源程序的执行,转至为外设服务的中断处理程序。中断处理程序可以按照所要完成的任务编写与过程类似的程序段。在程序段最后执行一条中断返回指令返回主程序,继续按原顺序执行。操作系统命令接口:通过在用户和操作系统之间提供高级通信来控制程序运行,用户通过输入设备发出一系列命令告诉操作系统执行所需功能,它包括了键盘操作命令和作业控制命令,称为作业一级的用户接口。命令接口的两种最普遍和主要的方式是直接命令方式(命令行)和间接命令方式(命令文件)。二、程序设计实现过程程序通过选择开关switch.case将用dos,bios调用编写的函数组合起来供用户做出选择。在对应处理用户的选择编写的函数中,主要的核心是dos功能中断调用函数的编写,其中包括中断类型号,中断功能调用号等的设置,以及响应用户选择后中断服务程序的编写。1、程序主要函数void menu():用户功能选择菜单;void time():显示时间功能,输出当前电脑设置时间,能精确到毫秒;void day():显示日期功能,输出当前电脑设置日期,输出格式为2015.9.20,week:0;void dos():显示电脑DOS版本号功能,输出DOS版本号,格式为5.0.16.0.0;void DeleteFile(char filename80):删除文件功能,调用DOS中断21H的41H的删除文件命令;void Createfile(char filename80):创建目录功能,调用DOS中断21H的39H的创建目录命令;void Deletefile(char filename80):删除目录功能,调用DOS中断21H的3AH的删除目录命令;void file(char filename180,char filename280):文件重新命名功能,调用DOS中断21H的56H的文件改名命名命令;void showlist():显示当前工作目录功能,调用DOS中断21H的47H的显示当前工作目录命令;void rewords():键盘输入字符并回显字符功能,调用DOS中断21H的09回显字符串的命令;clrscr():清除当前显示内容功能。2、程序调试运行结果分析开始运行功能选择界面输入功能号1显示当前系统时间,输入功能号2输出当前系统日期,输入功能号3输出当前系统DOS版本,输入功能号5创建目录,工作目录成功创建文件夹FILE输入功能号7文件改名,改名为NEWFILE,工作目录成功改名NEWFILE,输入功能号6删除NEWFILE文件夹成功,运行调试结果满足实验要求,退出程序,完成设计内容。三、程序设计总结体会通过连续两个星期的上机编程,我体会了从事C语言课程设计工作需要特别谨慎认真地态度和作风,一点都不能马虎。每个细微的细节都必须十分注意,如果不认真思考,就会出现或大或小的错误。如果把早期的错误隐藏下来,对后面的工作影响就会很大,甚至有时会推倒很多前面做的工作。有时候,我自己觉得我写的程序非常正确,但是就是编译通不过,在查找错误的过程中,面临着否认自己的过程,非常的痛苦,而且由于自己的经验及各方面的能力的不足,所以进展的速度非常的缓慢,往往几天的时间没有一点进展。这时候,我一般是先自己通过书本,手册和资料找解决办法,实在没辙才向老师同学请教。在开始编写程序的时候,我还不清楚DOS中断的知识,刚开始就在上网百度学习有关程序接口和中断调用相关知识,慢慢的开始知道怎么去调用DOS21H的功能号。回顾此次课程设计,至今我仍然很多感想,的确,自从拿到题目到完成整个编程,从理论到实践,这些日子里,可以学到很多很多的东西,同时不仅可以巩固以前所学的知识,而且学到了很多在书本上所没学到的知识,通过在这次课程设计使我懂得了理论知识与实践动手能力组合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。通过一段时间的课程设计,我明白了程序一定要要亲手做过,不管它是否有结果。你要学的是知识,是解决问题的方法和思想,要端正学习态度,一时的成败不足以论英雄,每一次突破都是一种收获,就是在这样的过程中我们才能不断提高。在从开始接到课程设计,再到报告的完成,每走一步都渗透着努力和汗水。在收获知识的同时收获快乐。 对给过我帮助的所有同学和各位指导老师再次表示衷心的感谢!四、源代码#include#include#include#include#include#define INTER 0x21void menu()printf(0.Exitn1.Display currrent timen2.Display currrent dayn);printf(3.Display currrent Mos-dosn4.Deletefilen5.Createcontentsn); printf(6.Deletecontentsn7.Filenamen8.Display currrent listn);printf(9.Echo stringn10.ReadingFilen11.Clear screenn);void time()union REGS inregs,outregs;/定义中断信息结构体struct SREGS segregs;inregs.h.ah=0x2C;int86x(INTER,&inregs,&outregs,&segregs);printf(Now the time is:%d:%d,%d:%dn,outregs.h.ch,outregs.h.cl,outregs.h.dh,outregs.h.dl);getchar();void day() union REGS inregs,outregs;/定义中断信息结构体struct SREGS segregs;inregs.h.ah=0x2a;int86x(INTER,&inregs,&outregs,&segregs);printf(Now the day is:%d,%d,%d,Week:%dn,outregs.x.cx,outregs.h.dh,outregs.h.dl,outregs.h.al);getchar();void dos() union REGS inregs,outregs;/定义中断信息结构体struct SREGS segregs;inregs.h.ah=0x30;int86x(INTER,&inregs,&outregs,&segregs);printf(The DOS version of this machine is:%d,%d,%d,%d:%dn,outregs.h.al,outregs.h.ah,outregs.h.bh,outregs.h.ah,outregs.x.cx);getchar();void DeleteFile(char filename80)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(02=outregs.x.ax)/02表示文件未找到printf(nFILE %s is not exist!n,filename);printf(nThe File: %s has been delete successfullyn,filename);void Createfile(char filename80) 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);if(02=outregs.x.ax)/02表示文件为找到printf(nFILE %s is not exist!n,filename);printf(success!n);void Deletefile(char filename80) union REGS inregs,outregs;struct SREGS segregs;inregs.h.ah=0x3A;inregs.x.dx=FP_OFF(filename);segregs.ds=FP_SEG(filename);int86x(INTER,&inregs,&outregs,&segregs);if(02=outregs.x.ax)/02表示文件为找到printf(nFILE %s is not exist!n,filename);printf(success!n);void file(char filename180,char filename280) 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(nFILE %s is not exist!n,filename1);printf(success!n);void showlist()char list80;union REGS reg;struct SREGS segreg;reg.h.ah = 0x47;reg.h.dl = 0;reg.x.si = FP_OFF(list);segreg.ds = FP_SEG(list);intdosx(®, ®, &segreg);printf(The current working directory is:%sn, list);void rewords()union REGS reg,reg1;struct SREGS sreg;char word200;for(int i=0;i200;i+)wordi=$;scanf(%s,&word);reg1.x.dx = FP_OFF(word);sreg.ds = FP_SEG(word);reg1.h.ah=0x09;int86x(INTER,®1,®1,&sreg);printf(n);void ReadFromFile(char filename80)union REGS inregs,outregs;struct SREGS segregs;int result;char ReadContents20;inregs.h.ah=0x3D;inregs.x.dx=FP_OFF(filename);segregs.ds=FP_SEG(filename);inregs.h.al=2;intdosx(&inregs,&outregs,&segregs);result = outregs.x.ax;if(2=result)printf(nCan not read contents from file: %s ! The file may not existn,filename);elseinregs.x.bx=result;inregs.h.ah=0x3F;inregs.x.dx=FP_OFF(ReadContents);segregs.ds=FP_SEG(ReadContents);inregs.x.cx=20;intdosx(&inregs,&outregs,&segregs);printf(%s file byte number: %dn,filename,outregs.x.ax);printf(%s contents is:,filename);for(int i=0;ioutregs.x.ax;i+)printf(%c,ReadContentsi); printf(n);int main()char DeleteFileName80;char ReadingFileName80;char file180,file280;int a;domenu();scanf(%d,&a);switch

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论