操作系統(tǒng)命令接口設(shè)計(jì)課程設(shè)計(jì)說(shuō)明書(shū)_第1頁(yè)
操作系統(tǒng)命令接口設(shè)計(jì)課程設(shè)計(jì)說(shuō)明書(shū)_第2頁(yè)
操作系統(tǒng)命令接口設(shè)計(jì)課程設(shè)計(jì)說(shuō)明書(shū)_第3頁(yè)
操作系統(tǒng)命令接口設(shè)計(jì)課程設(shè)計(jì)說(shuō)明書(shū)_第4頁(yè)
操作系統(tǒng)命令接口設(shè)計(jì)課程設(shè)計(jì)說(shuō)明書(shū)_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 佛山科學(xué)技術(shù)學(xué)院課程設(shè)計(jì)用紙課程設(shè)計(jì)說(shuō)明書(shū)設(shè)計(jì)名稱(chēng): 操作系統(tǒng)課程設(shè)計(jì) 題 目: 操作系統(tǒng)命令接口設(shè)計(jì) 學(xué)生姓名: 專(zhuān) 業(yè): 班 級(jí): 學(xué) 號(hào): 指導(dǎo)教師: 日 期: 2016 年 6 月 28 日 課程設(shè)計(jì)任務(wù)書(shū) 網(wǎng)絡(luò)工程 專(zhuān)業(yè) 年級(jí) 班 一、 設(shè)計(jì)題目操作系統(tǒng)命令接口設(shè)計(jì)二、 主要內(nèi)容利用C語(yǔ)言、DOS中斷中21H與屏幕顯示相關(guān)的中斷調(diào)用完成設(shè)計(jì),具體包括:1、 命令解釋器2、 列目錄命令3、 顯示時(shí)間命令4、 顯示日期命令5、 回顯字符串命令6、 創(chuàng)建目錄命令7、 刪除目錄命令8、 更改路徑命令9、 顯示當(dāng)前工作目錄命令10、刪除文件命令11、打印文本命令12、文件重新命名13、顯示文

2、本命令14、顯示版本命令15、顯示目錄結(jié)構(gòu)命令16、清除當(dāng)前顯示內(nèi)容命令上述內(nèi)容中,所有命令通過(guò)命令解釋器能夠執(zhí)行,即啟動(dòng)命令解釋器以后,輸入相應(yīng)命令,按照輸入指令執(zhí)行相應(yīng)功能,并在屏幕上顯示相應(yīng)結(jié)果。三、 具體要求本設(shè)計(jì)的目的是通過(guò)設(shè)計(jì)一些簡(jiǎn)單的操作系統(tǒng)的命令接口,使學(xué)生掌握操作系統(tǒng)接口的設(shè)計(jì)方法。要求學(xué)生在熟悉操作系統(tǒng)的命令接口及程序接口的基礎(chǔ)上,利用C語(yǔ)言設(shè)計(jì)簡(jiǎn)單的命令接口。命令接口基于DOS的命令行接口。四、 進(jìn)度安排依照教學(xué)計(jì)劃,課程設(shè)計(jì)時(shí)間為:2周。1. 要求講解、資料查找、系統(tǒng)分析,概要設(shè)計(jì) (2天)2. 系統(tǒng)詳細(xì)設(shè)計(jì)、功能設(shè)計(jì)(2天)3. 算法實(shí)現(xiàn)、編程調(diào)試(5天)4. 功能演

3、示、資料整理、課程設(shè)計(jì)說(shuō)明書(shū)編寫(xiě)。(1天)五、 完成后應(yīng)上交的材料課程設(shè)計(jì)說(shuō)明書(shū)紙質(zhì)文檔六、 總評(píng)成績(jī)指導(dǎo)教師 簽名日期 年 月 日系 主 任 審核日期 年 月 日2目錄一、程序概述11.1完成的任務(wù)11.2解決的問(wèn)題1二、概念原理12.1基本概念12.2基本原理1三、總體設(shè)計(jì)2四、詳細(xì)設(shè)計(jì)34.1主要調(diào)用DOS的功能號(hào)34.2主要函數(shù)3五、完成情況3六、使用說(shuō)明3七、設(shè)計(jì)總結(jié)47.1系統(tǒng)特色47.2實(shí)踐感受4參考資料5附 錄(程序源代碼)9一、程序概述1.1完成的任務(wù)本設(shè)計(jì)是要求編寫(xiě)一個(gè)簡(jiǎn)單的命令解釋器,利用C語(yǔ)言、DOS中斷中21H與屏幕顯示相關(guān)的中斷調(diào)用進(jìn)行設(shè)計(jì)的,主要完成要求中所提到的

4、功能如:可打開(kāi)提示符,并獲取用戶輸入的指令、可解析指令、可尋找命令文件、可執(zhí)行基本的命令。在本設(shè)計(jì)中,設(shè)計(jì)了一個(gè)dos命令提示行 ,主要完成的功能有:顯示系統(tǒng)時(shí)間和日期,顯示系統(tǒng)版本號(hào),刪除文件,創(chuàng)建目錄,刪除目錄,重命名目錄或文件名,回顯字符串,打印文件,清屏等功能。 1.2解決的問(wèn)題在設(shè)計(jì)過(guò)程中主要遇到了兩個(gè)難題,一是如何理解和設(shè)計(jì)中斷,對(duì)匯編和c語(yǔ)言的結(jié)合,如引入#include<dos.h>,#include<bios.h>;二是如何使用中斷函數(shù)如int86(),int86x(),int dos(),int 等。里面主要的是結(jié)構(gòu)體SREGS,聯(lián)合體REGS,以及

5、匯編語(yǔ)言int 21H系統(tǒng)調(diào)用中斷,以及調(diào)用功能號(hào)的查詢和設(shè)置。二、概念原理2.1基本概念中斷當(dāng)CPU(中央處理器)執(zhí)行一條現(xiàn)行指令的時(shí)候,出現(xiàn)必須CPU立即執(zhí)行處理的情況,CPU暫時(shí)停止當(dāng)前程序的執(zhí)行轉(zhuǎn)而而執(zhí)行新情況叫中斷,此時(shí)如果外設(shè)向CPU發(fā)出中斷請(qǐng)求,那么CPU在滿足響應(yīng)的情況下,將發(fā)出中斷響應(yīng)信號(hào),與此同時(shí)關(guān)閉中斷,表示CPU不在受理另外一個(gè)設(shè)備的中斷。此次課程設(shè)計(jì)涉及有DOS中斷和BIOS中斷。命令接口處理器命令處理器是一個(gè)讀入并解釋你輸入的命令的程序,它是介于使用者和操作系統(tǒng)之核心程序(kernel)間的一個(gè)接口。它是一個(gè)交互性命令解釋器。命令處理器獨(dú)立于操作系統(tǒng),這種設(shè)計(jì)讓用戶

6、可以靈活選擇適合自己的命令處理器 。命令處理器讓你在命令行鍵入命令,經(jīng)過(guò)命令處理器解釋后傳送給操作系統(tǒng)(內(nèi)核)執(zhí)行。命令提示符“命令提示符”也就是Windows 95/98 下的“MS-DOS方式”,雖然隨著計(jì)算機(jī)產(chǎn)業(yè)的發(fā)展,Windows 操作系統(tǒng)的應(yīng)用越來(lái)越廣泛,DOS 面臨著被淘汰的命運(yùn),但是因?yàn)樗\(yùn)行安全、穩(wěn)定,有的用戶還在使用,所以一般Windows 的各種版本都與其兼容,用戶可以在Windows系統(tǒng)下運(yùn)行DOS,中文版Windows XP 中的命令提示符進(jìn)一步提高了與DOS下操作命令的兼容性,用戶可以在命令提示符直接輸入中文調(diào)用文件。消息循環(huán)通過(guò)這個(gè)循環(huán)機(jī)制應(yīng)用程序從消息隊(duì)列中檢索

7、消息,再把它分派給適當(dāng)?shù)拇翱?,然后繼續(xù)從消息隊(duì)列中檢索下一條消息,再分派給適當(dāng)?shù)拇翱?,依次進(jìn)行。系統(tǒng)調(diào)用系統(tǒng)調(diào)用,顧名思義,說(shuō)的是操作系統(tǒng)提供給用戶程序調(diào)用的一組“特殊”接口。用戶程序可以通過(guò)這組“特殊”接口來(lái)獲得操作系統(tǒng)內(nèi)核提供的服務(wù),比如用戶可以通過(guò)文件系統(tǒng)相關(guān)的調(diào)用請(qǐng)求系統(tǒng)打開(kāi)文件、關(guān)閉文件或讀寫(xiě)文件,可以通過(guò)時(shí)鐘相關(guān)的系統(tǒng)調(diào)用獲得系統(tǒng)時(shí)間或設(shè)置定時(shí)器等。從邏輯上來(lái)說(shuō),系統(tǒng)調(diào)用可被看成是一個(gè)內(nèi)核與用戶空間程序交互的接口,它好比一個(gè)中間人,把用戶進(jìn)程的請(qǐng)求傳達(dá)給內(nèi)核,待內(nèi)核把請(qǐng)求處理完畢后再將處理結(jié)果送回給用戶空間。2.2基本原理首先進(jìn)入一個(gè)消息循環(huán),不斷地接收消息,根據(jù)輸入的命令進(jìn)行解析

8、,然后執(zhí)行命令,遇exit命令退出。基本流程圖:三、總體設(shè)計(jì)程序主要通過(guò)文件來(lái)存儲(chǔ)帳戶信息。進(jìn)入提示符后,在消息循環(huán)中運(yùn)用了一個(gè)do while循環(huán),switchcase將dos條用編寫(xiě)的函數(shù)組合起來(lái)供用戶選擇使用。連續(xù)的獲取用戶輸入,直到用戶輸入0退出循環(huán),結(jié)束程序。在處理文件或文件夾過(guò)程中,沒(méi)有使用系統(tǒng)當(dāng)前文件夾變量,只是在程序中單獨(dú)設(shè)定了一個(gè)變量作為系統(tǒng)當(dāng)前目錄,每次獲得的目錄路徑,如果是相對(duì)路徑,則自動(dòng)在前面加上當(dāng)前目錄路徑。整個(gè)程序的設(shè)計(jì)流程,圍繞著消息循環(huán)這一主線,根據(jù)消息判斷調(diào)用不同的功能函數(shù)來(lái)完成相應(yīng)的功能,主要使用了一些函數(shù)和匯編調(diào)用DOS接口和21號(hào)中斷。四、詳細(xì)設(shè)計(jì)4.1

9、、主要調(diào)用DOS的功能號(hào)2AH 讀取日期2CH 讀取時(shí)間30H 讀取MS-DOS版本號(hào)39H創(chuàng)建目錄41H 刪除文件3AH表示刪除目錄56H重命名文件3DH 打開(kāi)文件47H讀取當(dāng)前目錄3FH 讀文件或目錄4.2、主要函數(shù)void time() 通過(guò)定義該函數(shù)實(shí)現(xiàn)調(diào)用dos的2C號(hào)功能讀取系統(tǒng)時(shí)間的功能void day() 通過(guò)定義該函數(shù)實(shí)現(xiàn)調(diào)用dos的2A功能讀取系統(tǒng)日期的功能void dos() 通過(guò)定義該函數(shù)調(diào)用dos的30H功能讀取系統(tǒng)的版本號(hào)功能void DeleteFile(char filename80)定義該函數(shù)用于刪除文件或目錄如果刪除成功顯示“success”,刪除失敗表示找

10、不到該文件void Createfile(char filename80) 定義該函數(shù)調(diào)用dos的39H號(hào)功能用于創(chuàng)建一個(gè)目錄void file(char filename180,char filename280) 定于該函數(shù)調(diào)用dos系統(tǒng)的56號(hào)功能用于重命名目錄名和文件名的void showlist() 定于該函數(shù)調(diào)用dos系統(tǒng)的47號(hào)功能讀取當(dāng)前的工作目錄void rewords()定于該函數(shù)用于調(diào)用dos的9號(hào)功能實(shí)現(xiàn)回顯字符串功能void ReadFromFile(char filename80)定于該函數(shù)用于調(diào)用dos的3F功能用于讀取文件或目錄的內(nèi)容。clrscr();引用該函數(shù)

11、實(shí)現(xiàn)清除屏幕內(nèi)容的功能。5、 完成情況本程序完成了要求中的13項(xiàng)列目錄,包括獲取系統(tǒng)時(shí)間,獲取系統(tǒng)日期,創(chuàng)建目錄,刪除目錄,創(chuàng)建文件并寫(xiě)內(nèi)容到文件中,打印文本,刪除文件,更改目錄或文件名,顯示版本,清屏操作,獲得當(dāng)前的工作目錄等13個(gè)要求6、 使用說(shuō)明運(yùn)行程序首先回出現(xiàn)下圖的界面,顯示的是各項(xiàng)操作的命令,根據(jù)相關(guān)命令可以執(zhí)行相關(guān)的操作 功能1:顯示系統(tǒng)時(shí)間功能2:系統(tǒng)日期: 功能3:顯示版本功能4:刪除文件:功能5:創(chuàng)建目錄功能6:刪除目錄刪除new文件夾:功能7:重命名目錄或文件修改目錄(重命名目錄):將上面目錄123修改為101修改文件(重命名文件):將文件名1.txt改為new1.txt

12、功能8:顯示當(dāng)前工作目錄功能9:回顯字符串功能10:打印文件內(nèi)容(讀文件)已知new1.txt文件里面的內(nèi)容如下,通過(guò)該系統(tǒng)讀出文件的內(nèi)容功能11:清除屏幕所有內(nèi)容清屏后:直至輸入指令為0(代表exit)時(shí)退出系統(tǒng)。七、設(shè)計(jì)總結(jié)7.1系統(tǒng)特色本系統(tǒng)基本實(shí)現(xiàn)命令訪問(wèn)接口的設(shè)計(jì),能正常解釋命令并執(zhí)行,在命令的解釋和執(zhí)行直接采用DOS系統(tǒng)的中斷調(diào)用以及功能類(lèi)型號(hào)碼的選擇和設(shè)置,能夠符合操作系統(tǒng)命令接口設(shè)計(jì)的要求。7.2實(shí)踐感受課程設(shè)計(jì)是理論知識(shí)和實(shí)際操作的一種結(jié)合,對(duì)所學(xué)的知識(shí)進(jìn)行強(qiáng)化。從確立課題到遇到問(wèn)題查找資料,直到做出基本的結(jié)果,在這個(gè)過(guò)程中學(xué)到了之前所沒(méi)有接觸的知識(shí)點(diǎn)。例如在編程過(guò)程中要多使

13、用庫(kù)函數(shù)中自帶的內(nèi)容,不必另外再去編寫(xiě)已有的功能,這樣不僅能節(jié)省時(shí)間,也能提高程序的可靠性。要多了解庫(kù)函數(shù),可以閱讀相應(yīng)的幫助文件來(lái)獲得有用的信息。遇到問(wèn)題多與老師同學(xué)討論,可以幫助自己跳出定向思維。參考資料c程序設(shè)計(jì)(第三版)譚浩強(qiáng) 著 清華大學(xué)出版社80x86匯編語(yǔ)言程序設(shè)計(jì)沈美明,溫冬嬋 著 清華大學(xué)出版社c與c+標(biāo)準(zhǔn)類(lèi)庫(kù)及函數(shù).chmWindows API for 2000/XP實(shí)例精解 王強(qiáng) 周明 李定國(guó) 等編著 電子工業(yè)出版社數(shù)據(jù)結(jié)構(gòu)(c語(yǔ)言版)嚴(yán)蔚敏,吳偉民等編著 清華大學(xué)出版社 附 錄源代碼(Torbo C 3.0環(huán)境下)#include<stdio.h>

14、 #include<conio.h> #include<stdlib.h> #include<dos.h> #include<bios.h> #define INTER 0x21 void menu() printf("-n");printf("0.exitn");printf("1.Display system timen");printf("2.Display system dayn");printf("3.Display Mos-dos version

15、n");printf("4.Deletefilen");printf("5.Createcontentn");printf("6.Deletecontentsn");printf("7.Filenamen");printf("8.Display currrent listn");printf("9.Echo stringn"); printf("10.ReadingFilen"); printf("11.Clear screenn&qu

16、ot;);printf("-n"); void time() union REGS inregs,outregs;/定義中斷信息結(jié)構(gòu)體 struct SREGS segregs; inregs.h.ah=0x2C; /讀取時(shí)間int86x(INTER,&inregs,&outregs,&segregs);printf("Now the time is:%d:%d:%dn",outregs.h.ch,outregs.h.cl,outregs.h.dh); getchar(); void day() union REGS inregs

17、,outregs;/定義中斷信息結(jié)構(gòu)體 struct SREGS segregs; inregs.h.ah=0x2a; /讀取日期int86x(INTER,&inregs,&outregs,&segregs); printf("Now the day is:%d,%d,%dn",outregs.x.cx,outregs.h.dh,outregs.h.dl);getchar(); void dos() union REGS inregs,outregs;/定義中斷信息結(jié)構(gòu)體 struct SREGS segregs; inregs.h.ah=0x30;

18、/DOS 30號(hào)功能 讀取MS-DOS版本號(hào)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) int result;union REGS inregs,outregs; struct

19、SREGS segregs; inregs.h.ah=0x41;/DOS 中斷號(hào) 41 是刪除文件 inregs.x.dx=FP_OFF(filename); segregs.ds=FP_SEG(filename); int86x(INTER,&inregs,&outregs,&segregs); if(result=2|result=5)printf("nCan't delete the file:%s The file may not be exist!n",filename);elseprintf("nThe file:%s

20、has been delete successfully! n",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(&q

21、uot;nFILE %s is not exist!n",filename); printf("success!n"); void Deletefile(char filename80) int result;union REGS inregs,outregs; struct SREGS segregs;inregs.h.ah=0x3A; /3A 表示刪除目錄inregs.x.dx=FP_OFF(filename); segregs.ds=FP_SEG(filename); int86x(INTER,&inregs,&outregs,&se

22、gregs);result=outregs.x.ax;if(result=2|result=5)printf("nCan't delete the file:%s The file may not be exist!n",filename);elseprintf("nThe file:%s has been delete successfully! n",filename);void file(char filename180,char filename280) union REGS inregs,outregs; struct SREGS se

23、gregs; inregs.h.ah=0x56;/DOS 中斷號(hào) 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(&

24、quot;success!n"); void showlist() char list80; union REGS reg; struct SREGS segreg;reg.h.ah = 0x47;/47H 讀取當(dāng)前目錄reg.h.dl = 0;reg.x.si = FP_OFF(list); segreg.ds = FP_SEG(list);intdosx(&reg, &reg, &segreg); printf("The current working directory is:%sn", list); void rewords() u

25、nion REGS reg,reg1;struct SREGS sreg; char word200; for(int i=0;i<200;i+) wordi='$' scanf("%s",&word);reg1.x.dx = FP_OFF(word); sreg.ds = FP_SEG(word); reg1.h.ah=0x09; int86x(INTER,&reg1,&reg1,&sreg); printf("n"); void ReadFromFile(char filename80)union

26、 REGS inregs,outregs;struct SREGS segregs;int result;char ReadContents9*1024;inregs.h.ah=0x3D;/3D 打開(kāi)文件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)printf("n Can't read contents from

27、file:%s! The file may not be exist.n",filename);elseinregs.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("n Real Number of read characters in file:%s:%dn"

28、,filename,outregs);printf("nThe contents of file:%s!n",filename);for(int i=0;i<outregs.x.ax;i+)printf("%c",ReadContentsi);printf("n");int main() char DeleteFileName80; char ReadingFileName80;char file180,file280; int a; menu();do printf("Please input the number:"); scanf("%d&quo

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論