ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:212.38KB ,
资源ID:20904174      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20904174.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(操作系统命令接口设计课程设计说明书文档格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

操作系统命令接口设计课程设计说明书文档格式.docx

1、要求学生在熟悉操作系统的命令接口及程序接口的基础上,利用C语言设计简单的命令接口。命令接口基于DOS的命令行接口。四、进度安排依照教学计划,课程设计时间为:2周。1.要求讲解、资料查找、系统分析,概要设计 (2天)2.系统详细设计、功能设计(2天)3.算法实现、编程调试(5天)4.功能演示、资料整理、课程设计说明书编写。(1天)五、完成后应上交的材料课程设计说明书纸质文档六、总评成绩指导教师 签名日期 年 月 日系 主 任 审核日期 年 月 日目录一、程序概述 11.1完成的任务 11.2解决的问题 1二、概念原理 12.1基本概念 12.2基本原理 1三、总体设计 2四、详细设计 34.1主

2、要调用DOS的功能号 34.2主要函数 3五、完成情况 3六、使用说明 3七、设计总结 47.1系统特色 47.2实践感受 4参考资料 5附 录(程序源代码) 9一、程序概述1.1完成的任务本设计是要求编写一个简单的命令解释器,利用C语言、DOS中断中21H与屏幕显示相关的中断调用进行设计的,主要完成要求中所提到的功能如:可打开提示符,并获取用户输入的指令、可解析指令、可寻找命令文件、可执行基本的命令。在本设计中,设计了一个dos命令提示行 ,主要完成的功能有:显示系统时间和日期,显示系统版本号,删除文件,创建目录,删除目录,重命名目录或文件名,回显字符串,打印文件,清屏等功能。1.2解决的问

3、题在设计过程中主要遇到了两个难题,一是如何理解和设计中断,对汇编和c语言的结合,如引入#include,#include;二是如何使用中断函数如int86(),int86x(),int dos(),int 等。里面主要的是结构体SREGS,联合体REGS,以及汇编语言int 21H系统调用中断,以及调用功能号的查询和设置。二、概念原理2.1基本概念中断当CPU(中央处理器)执行一条现行指令的时候,出现必须CPU立即执行处理的情况,CPU暂时停止当前程序的执行转而而执行新情况叫中断,此时如果外设向CPU发出中断请求,那么CPU在满足响应的情况下,将发出中断响应信号,与此同时关闭中断,表示CPU不

4、在受理另外一个设备的中断。此次课程设计涉及有DOS中断和BIOS中断。命令接口处理器命令处理器是一个读入并解释你输入的命令的程序,它是介于使用者和操作系统之核心程序(kernel)间的一个接口。它是一个交互性命令解释器。命令处理器独立于操作系统,这种设计让用户可以灵活选择适合自己的命令处理器 。命令处理器让你在命令行键入命令,经过命令处理器解释后传送给操作系统(内核)执行。命令提示符“命令提示符”也就是Windows 95/98 下的“MS-DOS方式”,虽然随着计算机产业的发展,Windows 操作系统的应用越来越广泛,DOS 面临着被淘汰的命运,但是因为它运行安全、稳定,有的用户还在使用,

5、所以一般Windows 的各种版本都与其兼容,用户可以在Windows系统下运行DOS,中文版Windows XP 中的命令提示符进一步提高了与DOS下操作命令的兼容性,用户可以在命令提示符直接输入中文调用文件。消息循环通过这个循环机制应用程序从消息队列中检索消息,再把它分派给适当的窗口,然后继续从消息队列中检索下一条消息,再分派给适当的窗口,依次进行。系统调用系统调用,顾名思义,说的是操作系统提供给用户程序调用的一组“特殊”接口。用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务,比如用户可以通过文件系统相关的调用请求系统打开文件、关闭文件或读写文件,可以通过时钟相关的系统调用获得

6、系统时间或设置定时器等。从逻辑上来说,系统调用可被看成是一个内核与用户空间程序交互的接口,它好比一个中间人,把用户进程的请求传达给内核,待内核把请求处理完毕后再将处理结果送回给用户空间。2.2基本原理首先进入一个消息循环,不断地接收消息,根据输入的命令进行解析,然后执行命令,遇exit命令退出。基本流程图:三、总体设计程序主要通过文件来存储帐户信息。进入提示符后,在消息循环中运用了一个do while循环,switchcase将dos条用编写的函数组合起来供用户选择使用。连续的获取用户输入,直到用户输入0退出循环,结束程序。在处理文件或文件夹过程中,没有使用系统当前文件夹变量,只是在程序中单独

7、设定了一个变量作为系统当前目录,每次获得的目录路径,如果是相对路径,则自动在前面加上当前目录路径。整个程序的设计流程,围绕着消息循环这一主线,根据消息判断调用不同的功能函数来完成相应的功能,主要使用了一些函数和汇编调用DOS接口和21号中断。四、详细设计4.1、主要调用DOS的功能号 2AH 读取日期2CH 读取时间30H 读取MS-DOS版本号39H 创建目录41H 删除文件3AH 表示删除目录56H 重命名文件3DH 打开文件47H 读取当前目录3FH 读文件或目录4.2、主要函数void time() 通过定义该函数实现调用dos的2C号功能读取系统时间的功能void day() 通过定

8、义该函数实现调用dos的2A功能读取系统日期的功能void dos() 通过定义该函数调用dos的30H功能读取系统的版本号功能void DeleteFile(char filename80)定义该函数用于删除文件或目录如果删除成功显示“success”,删除失败表示找不到该文件void Createfile(char filename80) 定义该函数调用dos的39H号功能用于创建一个目录void file(char filename180,char filename280) 定于该函数调用dos系统的56号功能用于重命名目录名和文件名的void showlist() 定于该函数调用dos

9、系统的47号功能读取当前的工作目录void rewords()定于该函数用于调用dos的9号功能实现回显字符串功能void ReadFromFile(char filename80)定于该函数用于调用dos的3F功能用于读取文件或目录的内容。clrscr();引用该函数实现清除屏幕内容的功能。5、完成情况本程序完成了要求中的13项列目录,包括获取系统时间,获取系统日期,创建目录,删除目录,创建文件并写内容到文件中,打印文本,删除文件,更改目录或文件名,显示版本,清屏操作,获得当前的工作目录等13个要求6、使用说明运行程序首先回出现下图的界面,显示的是各项操作的命令,根据相关命令可以执行相关的操

10、作功能1:显示系统时间功能2:系统日期:功能3:显示版本功能4:删除文件:功能5:创建目录功能6:删除目录删除new文件夹:功能7:重命名目录或文件修改目录(重命名目录):将上面目录123修改为101修改文件(重命名文件):将文件名1.txt改为new1.txt功能8:显示当前工作目录功能9:回显字符串功能10:打印文件内容(读文件)已知new1.txt文件里面的内容如下,通过该系统读出文件的内容 功能11:清除屏幕所有内容清屏后:直至输入指令为0(代表exit)时退出系统。七、设计总结7.1系统特色本系统基本实现命令访问接口的设计,能正常解释命令并执行,在命令的解释和执行直接采用DOS系统的

11、中断调用以及功能类型号码的选择和设置,能够符合操作系统命令接口设计的要求。7.2实践感受课程设计是理论知识和实际操作的一种结合,对所学的知识进行强化。从确立课题到遇到问题查找资料,直到做出基本的结果,在这个过程中学到了之前所没有接触的知识点。例如在编程过程中要多使用库函数中自带的内容,不必另外再去编写已有的功能,这样不仅能节省时间,也能提高程序的可靠性。要多了解库函数,可以阅读相应的帮助文件来获得有用的信息。遇到问题多与老师同学讨论,可以帮助自己跳出定向思维。参考资料c程序设计(第三版)谭浩强 著 清华大学出版社80x86汇编语言程序设计沈美明,温冬婵著 清华大学出版社c与c+标准类库及函数.

12、chmWindows API for 2000/XP实例精解 王强 周明 李定国 等编著 电子工业出版社数据结构(c语言版)严蔚敏,吴伟民等编著 清华大学出版社 附 录源代码(Torbo C 3.0环境下)#include #includestdlib.h #define INTER 0x21 void menu() printf(-n);0.exitn1.Display system timen2.Display system dayn3.Display Mos-dos versionn4.Deletefilen5.Createcontentn6.Deletecontentsn7.Filen

13、amen8.Display currrent listn9.Echo stringn10.ReadingFilen11.Clear screenn union REGS inregs,outregs;/定义中断信息结构体 struct SREGS segregs; inregs.h.ah=0x2C; /读取时间 int86x(INTER,&inregs,&outregs,&segregs);Now the time is:%d:%dn,outregs.h.ch,outregs.h.cl,outregs.h.dh); getchar();void day() inregs.h.ah=0x2a;

14、/读取日期Now the day is:%d,%d,%dn,outregs.x.cx,outregs.h.dh,outregs.h.dl); void dos() union REGS inregs,outregs; inregs.h.ah=0x30;/DOS 30号功能 读取MS-DOS版本号The DOS version of this machine is:%d,%d,%d,%d:,outregs.h.al,outregs.h.ah,outregs.h.bh,outregs.h.ah,outregs.x.cx); void DeleteFile(char filename80) int

15、result; inregs.h.ah=0x41;/DOS 中断号 41 是删除文件 inregs.x.dx=FP_OFF(filename); segregs.ds=FP_SEG(filename); if(result=2|result=5) printf(nCant delete the file:%s The file may not be exist!n,filename); elsenThe file:%s has been delete successfully! nvoid Createfile(char filename80) inregs.h.ah=0x39;if(02=o

16、utregs.x.ax)/02 表示文件未找到 nFILE %s is not exist!success!void Deletefile(char filename80) inregs.h.ah=0x3A; /3A 表示删除目录 result=outregs.x.ax; 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); if(ou

17、tregs.x.ax=02) ,filename1); void showlist() char list80; 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);The current working directory is:%sn, list); void rewords() union REGS reg,reg1; struct SR

18、EGS 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;reg1,&sreg); char ReadContents9*1024; inregs.h.ah=0x3D;/3D 打开文件 inregs.h.al=2; int86x(0x21,& if(2=result)n Cant read contents from file:%s! The file may not be exis

19、t.n inregs.x.bx=result; inregs.h.ah=0x3F;/读文件或者目录 inregs.x.dx=FP_OFF(ReadContents); segregs.ds=FP_SEG(ReadContents); inregs.x.cx=1024; int86x(0x21,&n Real Number of read characters in file:%s:,filename,outregs);nThe contents of file: for(int i=0;outregs.x.ax;i+) printf(%c,ReadContentsi); int main()

20、char DeleteFileName80; char ReadingFileName80; char file180,file280; int a; menu(); do Please input the number:%da); switch(a) case 1: time(); break; case 2: day(); case 3: dos(); case 4:nInput the name of existing file to delete: ,DeleteFileName); DeleteFile(DeleteFileName); case 5:n Input createco

21、ntent:DeleteFileName); Createfile(DeleteFileName); case 6:n Input deletecontents: Deletefile(DeleteFileName); case 7:name:file1);new name: scanf (file2); file(file1,file2); case 8: showlist(); case 9: rewords(); case 10:nInput the name of existing file to ReadingFileName:,ReadingFileName); ReadFromFile(ReadingFileName); case 11: clrscr(); default:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1