操作系统课程设说明书-操作系统命令接口设计x.docx

上传人:聆听****声音 文档编号:734556 上传时间:2023-04-29 格式:DOCX 页数:18 大小:190.08KB
下载 相关 举报
操作系统课程设说明书-操作系统命令接口设计x.docx_第1页
第1页 / 共18页
操作系统课程设说明书-操作系统命令接口设计x.docx_第2页
第2页 / 共18页
操作系统课程设说明书-操作系统命令接口设计x.docx_第3页
第3页 / 共18页
操作系统课程设说明书-操作系统命令接口设计x.docx_第4页
第4页 / 共18页
操作系统课程设说明书-操作系统命令接口设计x.docx_第5页
第5页 / 共18页
操作系统课程设说明书-操作系统命令接口设计x.docx_第6页
第6页 / 共18页
操作系统课程设说明书-操作系统命令接口设计x.docx_第7页
第7页 / 共18页
操作系统课程设说明书-操作系统命令接口设计x.docx_第8页
第8页 / 共18页
操作系统课程设说明书-操作系统命令接口设计x.docx_第9页
第9页 / 共18页
操作系统课程设说明书-操作系统命令接口设计x.docx_第10页
第10页 / 共18页
操作系统课程设说明书-操作系统命令接口设计x.docx_第11页
第11页 / 共18页
操作系统课程设说明书-操作系统命令接口设计x.docx_第12页
第12页 / 共18页
操作系统课程设说明书-操作系统命令接口设计x.docx_第13页
第13页 / 共18页
操作系统课程设说明书-操作系统命令接口设计x.docx_第14页
第14页 / 共18页
操作系统课程设说明书-操作系统命令接口设计x.docx_第15页
第15页 / 共18页
操作系统课程设说明书-操作系统命令接口设计x.docx_第16页
第16页 / 共18页
操作系统课程设说明书-操作系统命令接口设计x.docx_第17页
第17页 / 共18页
操作系统课程设说明书-操作系统命令接口设计x.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

操作系统课程设说明书-操作系统命令接口设计x.docx

《操作系统课程设说明书-操作系统命令接口设计x.docx》由会员分享,可在线阅读,更多相关《操作系统课程设说明书-操作系统命令接口设计x.docx(18页珍藏版)》请在冰点文库上搜索。

操作系统课程设说明书-操作系统命令接口设计x.docx

佛山科学技术学院课程设计用纸

课程设计说明书

设计名称:

操作系统课程设计

题 目:

操作系统命令接口设计

学生姓名:

专 业:

班 级:

学 号:

指导教师:

日 期:

2016 年6月28日

课程设计任务书

网络工程 专业 年级 班

一、 设计题目

操作系统命令接口设计

二、 主要内容

利用C语言、DOS中断中21H与屏幕显示相关的中断调用完成设计,具体包括:

1、命令解释器

2、列目录命令

3、显示时间命令

4、显示日期命令

5、回显字符串命令

6、创建目录命令

7、删除目录命令

8、更改路径命令

9、显示当前工作目录命令

10、删除文件命令

11、打印文本命令

12、文件重新命名

13、显示文本命令

14、显示版本命令

15、显示目录结构命令

16、清除当前显示内容命令

上述内容中,所有命令通过命令解释器能够执行,即启动命令解释器以后,输入相应命令,按照输入指令执行相应功能,并在屏幕上显示相应结果。

三、 具体要求

本设计的目的是通过设计一些简单的操作系统的命令接口,使学生掌握操作系统接口的设计方法。

要求学生在熟悉操作系统的命令接口及程序接口的基础上,利用C语言设计简单的命令接口。

命令接

口基于DOS的命令行接口。

2

四、 进度安排

依照教学计划,课程设计时间为:

2周。

1.要求讲解、资料查找、系统分析,概要设计(2天)

2.系统详细设计、功能设计(2天)

3.算法实现、编程调试(5天)

4.功能演示、资料整理、课程设计说明书编写。

(1天)

五、 完成后应上交的材料

课程设计说明书纸质文档

六、 总评成绩

指导教师 签名日期 年 月 日

系主任 审核日期 年 月 日

佛山科学技术学院课程设计用纸

目 录

一、程序概述 1

1.1完成的任务 1

1.2解决的问题 1

二、概念原理 1

2.1基本概念 1

2.2基本原理 1

三、总体设计 2

四、详细设计 3

4.1主要调用DOS的功能号 3

4.2主要函数 3

五、完成情况 3

六、使用说明 3

七、设计总结 4

7.1系统特色 4

7.2实践感受 4

参考资料 5

附 录(程序源代码) 9

一、程序概述

1.1完成的任务

本设计是要求编写一个简单的命令解释器,利用C语言、DOS中断中21H与屏幕显示相关的中断调用进行设计的,主要完成要求中所提到的功能如:

可打开提示符,并获取用户输入的指令、可解析指令、可寻找命令文件、可执行基本的命令。

在本设计中,设计了一个dos命令提示行 ,主要完成的功能有:

显示系统时间和日期,显示系统版本号,删除文件,创建目录,删除目录,重命名目录或文件名,回显字符串,打印文件,清屏等功能。

1.2解决的问题

在设计过程中主要遇到了两个难题,一是如何理解和设计中断,对汇编和c语言的结合,如引入#include,#include;二是如何使用中断函数如int86(),int86x(),intdos(),

int 等。

里面主要的是结构体SREGS,联合体REGS,以及汇编语言int 21H系统调用中断,以及调用功能号的查询和设置。

二、概念原理

2.1基本概念

中断

当CPU(中央处理器)执行一条现行指令的时候,出现必须CPU立即执行处理的情况,CPU暂时停止当前程序的执行转而而执行新情况叫中断,此时如果外设向CPU发出中断请求,那么CPU在满足响应的情况下,将发出中断响应信号,与此同时关闭中断,表示CPU不在受理另外一个设备的中断。

此次课程设计涉及有DOS中断和BIOS中断。

命令接口处理器

命令处理器是一个读入并解释你输入的命令的程序,它是介于使用者和操作系统之核心程序(kernel)间的一个接口。

它是一个交互性命令解释器。

命令处理器独立于操作系统,这种设计让用户可以灵活选择适合自己的命令处理器。

命令处理器让你在命令行键入命令,经过命令处理器解释后传送给操作系统(内核)执行。

命令提示符

“命令提示符”也就是Windows95/98下的“MS-DOS方式”,虽然随着计算机产业的发展,Windows操作系统的应用越来越广泛,DOS面临着被淘汰的命运,但是因为它运行安全、稳定,有的用户还在使用,所以一般Windows的各种版本都与其兼容,用户可以在Windows系统下运行DOS,中文版WindowsXP中的命令提示符进一步提高了与DOS下操作命令的兼容性,用户可以在命令提示符直接输入中文调用文件。

消息循环

通过这个循环机制应用程序从消息队列中检索消息,再把它分派给适当的窗口,然后继续从消息队列中检索下一条消息,再分派给适当的窗口,依次进行。

系统调用

系统调用,顾名思义,说的是操作系统提供给用户程序调用的一组“特殊”接口。

用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务,比如用户可以通过文件系统相关的调用请求系统打开文件、关闭文件或读写文件,可以通过时钟相关的系统调用获得系统时间或设置定时器等。

从逻辑上来说,系统调用可被看成是一个内核与用户空间程序交互的接口,它好比一个中间人,把用户进程的请求传达给内核,待内核把请求处理完毕后再将处理结果送回给用户空间。

14

清除屏幕内容

打印文件内容

回显字符串

重命名文件

重命名目录

删除目录

创建目录

删除文件

显示版本号

显示系统日期

显示系统时间

命令解释器

2.2基本原理

首先进入一个消息循环,不断地接收消息,根据输入的命令进行解析,然后执行命令,遇exit命令退出。

开始

判断指令是否存在

或者输入正确?

退出?

结束

输入指令

基本流程图:

三、总体设计

程序主要通过文件来存储帐户信息。

进入提示符后,在消息循环中运用了一个do while循环,

switch…case将dos条用编写的函数组合起来供用户选择使用。

连续的获取用户输入,直到用户输入0退出循环,结束程序。

在处理文件或文件夹过程中,没有使用系统当前文件夹变量,只是在程序中单独设定了一个变量作为系统当前目录,每次获得的目录路径,如果是相对路径,则自动在前面加上当前目录路径。

整个程序的设计流程,围绕着消息循环这一主线,根据消息判断调用不同的功能函数来完成相应的功能,主要使用了一些函数和汇编调用DOS接口和21号中断。

四、详细设计

4.1、主要调用DOS的功能号

2AH 读取日期

2CH 读取时间

30H 读取MS-DOS版本号

39H 创建目录

41H 删除文件

3AH 表示删除目录

56H 重命名文件

3DH 打开文件

47H 读取当前目录

3FH 读文件或目录

4.2、主要函数

voidtime()

通过定义该函数实现调用dos的2C号功能读取系统时间的功能

voidday()

通过定义该函数实现调用dos的2A功能读取系统日期的功能voiddos()

通过定义该函数调用dos的30H功能读取系统的版本号功能voidDeleteFile(charfilename[80])

定义该函数用于删除文件或目录如果删除成功显示“success”,删除失败表示找不到该文件

voidCreatefile(charfilename[80])

定义该函数调用dos的39H号功能用于创建一个目录voidfile(charfilename1[80],charfilename2[80])

定于该函数调用dos系统的56号功能用于重命名目录名和文件名的voidshowlist()

定于该函数调用dos系统的47号功能读取当前的工作目录voidrewords()

定于该函数用于调用dos的9号功能实现回显字符串功能voidReadFromFile(charfilename[80])

定于该函数用于调用dos的3F功能用于读取文件或目录的内容。

clrscr();

引用该函数实现清除屏幕内容的功能。

5、完成情况

本程序完成了要求中的13项列目录,包括获取系统时间,获取系统日期,创建目录,删除目录,创建文件并写内容到文件中,打印文本,删除文件,更改目录或文件名,显示版本,清屏操作,获得当前的

工作目录等13个要求

6、使用说明

运行程序首先回出现下图的界面,显示的是各项操作的命令,根据相关命令可以执行相关的操作

功能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系统的中断调用以及功能类型号码的选择和设置,能够符合操作系统命令接口设计的要求。

7.2实践感受

课程设计是理论知识和实际操作的一种结合,对所学的知识进行强化。

从确立课题到遇到问题查找资料,直到做出基本的结果,在这个过程中学到了之前所没有接触的知识点。

例如在编程过程中要多使用库函数中自带的内容,不必另外再去编写已有的功能,这样不仅能节省时间,也能提高程序的可靠性。

要多了解库函数,可以阅读相应的帮助文件来获得有用的信息。

遇到问题多与老师同学讨论,可以帮助自己跳出定向思维。

参考资料

《c程序设计》(第三版)谭浩强 著 清华大学出版社

《80x86汇编语言程序设计》沈美明,温冬婵著清华大学出版社

《c与c++标准类库及函数.chm》

《WindowsAPIfor2000/XP实例精解》王强周明李定国等编著电子工业出版社

《数据结构(c语言版)》严蔚敏,吴伟民等编著清华大学出版社

附 录

源代码(TorboC3.0环境下)

#include#include#include#include#include#defineINTER0x21voidmenu()

{

printf(" \n");

printf("0.exit\n");printf("1.Displaysystemtime\n");printf("2.Displaysystemday\n");

printf("3.DisplayMos-dosversion\n");printf("4.Deletefile\n");printf("5.Createcontent\n");printf("6.Deletecontents\n");printf("7.Filename\n");printf("8.Displaycurrrentlist\n");printf("9.Echostring\n");printf("10.ReadingFile\n");printf("11.Clearscreen\n");

printf(" \n");

}

voidtime()

{

unionREGSinregs,outregs;//定义中断信息结构体structSREGSsegregs;

inregs.h.ah=0x2C;//读取时间int86x(INTER,&inregs,&outregs,&segregs);

printf("Nowthetimeis:

%d:

%d:

%d\n",outregs.h.ch,outregs.h.cl,outregs.h.dh);getchar();

}

voidday(){

unionREGSinregs,outregs;//定义中断信息结构体structSREGSsegregs;

inregs.h.ah=0x2a;//读取日期int86x(INTER,&inregs,&outregs,&segregs);

printf("Nowthedayis:

%d,%d,%d\n",outregs.x.cx,outregs.h.dh,outregs.h.dl);getchar();

}

voiddos()

{ unionREGSinregs,outregs;//定义中断信息结构体

structSREGSsegregs;

inregs.h.ah=0x30;//DOS30号功能读取MS-DOS版本号

int86x(INTER,&inregs,&outregs,&segregs);

printf("The DOS version of this machineis:

%d,%d,%d,%d:

%d\n",outregs.h.al,outregs.h.ah,outregs.h.bh,outregs.h.ah,outregs.x.cx);getchar();

}

voidDeleteFile(charfilename[80])

{

intresult;

unionREGSinregs,outregs;structSREGSsegregs;

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("\nCan'tdeletethefile:

%s Thefilemaynotbeexist!

\n",filename);

printf("\nThefile:

%shasbeendeletesuccessfully!

\n",filename);

voidCreatefile(charfilename[80]){unionREGSinregs,outregs;structSREGSsegregs;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%sisnotexist!

\n",filename);

}

printf("success!

\n");

}

voidDeletefile(charfilename[80]){intresult;

unionREGSinregs,outregs;

structSREGSsegregs;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("\nCan'tdeletethefile:

%s Thefilemaynotbeexist!

\n",filename);

printf("\nThefile:

%shasbeendeletesuccessfully!

\n",filename);

voidfile(charfilename1[80],charfilename2[80])

{

unionREGSinregs,outregs;structSREGSsegregs;

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%sisnotexist!

\n",filename1);

}

printf("success!

\n");

}

voidshowlist(){charlist[80];unionREGSreg;

structSREGSsegreg;

reg.h.ah=0x47;//47H读取当前目录

reg.h.dl=0;

reg.x.si=FP_OFF(list);segreg.ds=FP_SEG(list);intdosx(®,®,&segreg);

printf("Thecurrentworkingdirectoryis:

%s\n",list);

}

voidrewords()

{

unionREGSreg,reg1;structSREGSsreg;charword[200];

for(inti=0;i<200;i++)word[i]='$';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");

}

voidReadFromFile(charfilename[80])

{

unionREGSinregs,outregs;structSREGSsegregs;

intresult;

charReadContents[9*1024];

inregs.h.ah=0x3D;//3D打开文件inregs.x.dx=FP_OFF(filename);segregs.ds=FP_SEG(filename);inregs.h.al=2;int86x(0x21,&inregs,&outregs,&segregs);result=outregs.x.ax;

if(2==result)

{

}

else

{

printf("\nCan'treadcontentsfromfile:

%s!

Thefilemaynotbeexist.\n",filename);

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,&inregs,&outregs,&segregs);

printf("\nRealNumberofreadcharactersinfile:

%s:

%d\n",filename,outregs);printf("\nThecontentsoffile:

%s!

\n",filename);

for(inti=0;i

{

printf("%c",ReadContents[i]);

}

printf("\n");

}

}

intmain()

{

charDeleteFileName[80];charReadingFileName[80];charfile1[80],file2[80];

inta;menu();do

{

printf("Pleaseinputthenumber:

");scanf("%d",&a);

switch(a){case1:

time();break;

case2:

day();break;

case3:

dos();break;

case4:

printf("\nInputthenameofexistingfiletodelete:

");scanf("%s",DeleteFileName);DeleteFile(DeleteFileName);

break;case5:

printf("\nInputcreatecontent:

");scanf("%s",&DeleteFileName);Createfile(DeleteFileName);break;

case6:

printf("\nInputdeletecontents:

");scanf("%s",&DeleteFileName);Deletefile(DeleteFileName);break;

case7:

printf("name:

");

scanf("%s",&file1);

printf("newname:

");scanf

("%s",&file2);file(file1,file2);break;

case8:

showlist();break;case9:

rewords();break;case10:

printf("\nInputthenameofexistingfiletoReadingFileName:

");scanf("%s",ReadingFileName);ReadFromFile(ReadingFileName);

break;

case11:

cl

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2