




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 佛山科學技術學院課程設計用紙課程設計說明書設計名稱: 操作系統課程設計 題 目: 操作系統命令接口設計 學生姓名: 專 業: 班 級: 學 號: 指導教師: 日 期: 2016 年 6 月 28 日 課程設計任務書 網絡工程 專業 年級 班 一、 設計題目操作系統命令接口設計二、 主要內容利用C語言、DOS中斷中21H與屏幕顯示相關的中斷調用完成設計,具體包括:1、 命令解釋器2、 列目錄命令3、 顯示時間命令4、 顯示日期命令5、 回顯字符串命令6、 創建目錄命令7、 刪除目錄命令8、 更改路徑命令9、 顯示當前工作目錄命令10、刪除文件命令11、打印文本命令12、文件重新命名13、顯示文
2、本命令14、顯示版本命令15、顯示目錄結構命令16、清除當前顯示內容命令上述內容中,所有命令通過命令解釋器能夠執行,即啟動命令解釋器以后,輸入相應命令,按照輸入指令執行相應功能,并在屏幕上顯示相應結果。三、 具體要求本設計的目的是通過設計一些簡單的操作系統的命令接口,使學生掌握操作系統接口的設計方法。要求學生在熟悉操作系統的命令接口及程序接口的基礎上,利用C語言設計簡單的命令接口。命令接口基于DOS的命令行接口。四、 進度安排依照教學計劃,課程設計時間為:2周。1. 要求講解、資料查找、系統分析,概要設計 (2天)2. 系統詳細設計、功能設計(2天)3. 算法實現、編程調試(5天)4. 功能演
3、示、資料整理、課程設計說明書編寫。(1天)五、 完成后應上交的材料課程設計說明書紙質文檔六、 總評成績指導教師 簽名日期 年 月 日系 主 任 審核日期 年 月 日2目錄一、程序概述11.1完成的任務11.2解決的問題1二、概念原理12.1基本概念12.2基本原理1三、總體設計2四、詳細設計34.1主要調用DOS的功能號34.2主要函數3五、完成情況3六、使用說明3七、設計總結47.1系統特色47.2實踐感受4參考資料5附 錄(程序源代碼)9一、程序概述1.1完成的任務本設計是要求編寫一個簡單的命令解釋器,利用C語言、DOS中斷中21H與屏幕顯示相關的中斷調用進行設計的,主要完成要求中所提到的
4、功能如:可打開提示符,并獲取用戶輸入的指令、可解析指令、可尋找命令文件、可執行基本的命令。在本設計中,設計了一個dos命令提示行 ,主要完成的功能有:顯示系統時間和日期,顯示系統版本號,刪除文件,創建目錄,刪除目錄,重命名目錄或文件名,回顯字符串,打印文件,清屏等功能。 1.2解決的問題在設計過程中主要遇到了兩個難題,一是如何理解和設計中斷,對匯編和c語言的結合,如引入#include,#include;二是如何使用中斷函數如int86(),int86x(),int dos(),int 等。里面主要的是結構體SREGS,聯合體REGS,以及匯編語言int 21H系統調用中斷,以及調用功能號的查
5、詢和設置。二、概念原理2.1基本概念中斷當CPU(中央處理器)執行一條現行指令的時候,出現必須CPU立即執行處理的情況,CPU暫時停止當前程序的執行轉而而執行新情況叫中斷,此時如果外設向CPU發出中斷請求,那么CPU在滿足響應的情況下,將發出中斷響應信號,與此同時關閉中斷,表示CPU不在受理另外一個設備的中斷。此次課程設計涉及有DOS中斷和BIOS中斷。命令接口處理器命令處理器是一個讀入并解釋你輸入的命令的程序,它是介于使用者和操作系統之核心程序(kernel)間的一個接口。它是一個交互性命令解釋器。命令處理器獨立于操作系統,這種設計讓用戶可以靈活選擇適合自己的命令處理器 。命令處理器讓你在命
6、令行鍵入命令,經過命令處理器解釋后傳送給操作系統(內核)執行。命令提示符“命令提示符”也就是Windows 95/98 下的“MS-DOS方式”,雖然隨著計算機產業的發展,Windows 操作系統的應用越來越廣泛,DOS 面臨著被淘汰的命運,但是因為它運行安全、穩定,有的用戶還在使用,所以一般Windows 的各種版本都與其兼容,用戶可以在Windows系統下運行DOS,中文版Windows XP 中的命令提示符進一步提高了與DOS下操作命令的兼容性,用戶可以在命令提示符直接輸入中文調用文件。消息循環通過這個循環機制應用程序從消息隊列中檢索消息,再把它分派給適當的窗口,然后繼續從消息隊列中檢索
7、下一條消息,再分派給適當的窗口,依次進行。系統調用系統調用,顧名思義,說的是操作系統提供給用戶程序調用的一組“特殊”接口。用戶程序可以通過這組“特殊”接口來獲得操作系統內核提供的服務,比如用戶可以通過文件系統相關的調用請求系統打開文件、關閉文件或讀寫文件,可以通過時鐘相關的系統調用獲得系統時間或設置定時器等。從邏輯上來說,系統調用可被看成是一個內核與用戶空間程序交互的接口,它好比一個中間人,把用戶進程的請求傳達給內核,待內核把請求處理完畢后再將處理結果送回給用戶空間。2.2基本原理首先進入一個消息循環,不斷地接收消息,根據輸入的命令進行解析,然后執行命令,遇exit命令退出。基本流程圖:三、總
8、體設計程序主要通過文件來存儲帳戶信息。進入提示符后,在消息循環中運用了一個do while循環,switchcase將dos條用編寫的函數組合起來供用戶選擇使用。連續的獲取用戶輸入,直到用戶輸入0退出循環,結束程序。在處理文件或文件夾過程中,沒有使用系統當前文件夾變量,只是在程序中單獨設定了一個變量作為系統當前目錄,每次獲得的目錄路徑,如果是相對路徑,則自動在前面加上當前目錄路徑。整個程序的設計流程,圍繞著消息循環這一主線,根據消息判斷調用不同的功能函數來完成相應的功能,主要使用了一些函數和匯編調用DOS接口和21號中斷。四、詳細設計4.1、主要調用DOS的功能號2AH 讀取日期2CH 讀取時
9、間30H 讀取MS-DOS版本號39H創建目錄41H 刪除文件3AH表示刪除目錄56H重命名文件3DH 打開文件47H讀取當前目錄3FH 讀文件或目錄4.2、主要函數void time() 通過定義該函數實現調用dos的2C號功能讀取系統時間的功能void day() 通過定義該函數實現調用dos的2A功能讀取系統日期的功能void dos() 通過定義該函數調用dos的30H功能讀取系統的版本號功能void DeleteFile(char filename80)定義該函數用于刪除文件或目錄如果刪除成功顯示“success”,刪除失敗表示找不到該文件void Createfile(char f
10、ilename80) 定義該函數調用dos的39H號功能用于創建一個目錄void file(char filename180,char filename280) 定于該函數調用dos系統的56號功能用于重命名目錄名和文件名的void showlist() 定于該函數調用dos系統的47號功能讀取當前的工作目錄void rewords()定于該函數用于調用dos的9號功能實現回顯字符串功能void ReadFromFile(char filename80)定于該函數用于調用dos的3F功能用于讀取文件或目錄的內容。clrscr();引用該函數實現清除屏幕內容的功能。5、 完成情況本程序完成了要求
11、中的13項列目錄,包括獲取系統時間,獲取系統日期,創建目錄,刪除目錄,創建文件并寫內容到文件中,打印文本,刪除文件,更改目錄或文件名,顯示版本,清屏操作,獲得當前的工作目錄等13個要求6、 使用說明運行程序首先回出現下圖的界面,顯示的是各項操作的命令,根據相關命令可以執行相關的操作 功能1:顯示系統時間功能2:系統日期: 功能3:顯示版本功能4:刪除文件:功能5:創建目錄功能6:刪除目錄刪除new文件夾:功能7:重命名目錄或文件修改目錄(重命名目錄):將上面目錄123修改為101修改文件(重命名文件):將文件名1.txt改為new1.txt功能8:顯示當前工作目錄功能9:回顯字符串功能10:打
12、印文件內容(讀文件)已知new1.txt文件里面的內容如下,通過該系統讀出文件的內容功能11:清除屏幕所有內容清屏后:直至輸入指令為0(代表exit)時退出系統。七、設計總結7.1系統特色本系統基本實現命令訪問接口的設計,能正常解釋命令并執行,在命令的解釋和執行直接采用DOS系統的中斷調用以及功能類型號碼的選擇和設置,能夠符合操作系統命令接口設計的要求。7.2實踐感受課程設計是理論知識和實際操作的一種結合,對所學的知識進行強化。從確立課題到遇到問題查找資料,直到做出基本的結果,在這個過程中學到了之前所沒有接觸的知識點。例如在編程過程中要多使用庫函數中自帶的內容,不必另外再去編寫已有的功能,這樣
13、不僅能節省時間,也能提高程序的可靠性。要多了解庫函數,可以閱讀相應的幫助文件來獲得有用的信息。遇到問題多與老師同學討論,可以幫助自己跳出定向思維。參考資料c程序設計(第三版)譚浩強 著 清華大學出版社80x86匯編語言程序設計沈美明,溫冬嬋著 清華大學出版社c與c+標準類庫及函數.chmWindows API for 2000/XP實例精解 王強 周明 李定國 等編著 電子工業出版社數據結構(c語言版)嚴蔚敏,吳偉民等編著 清華大學出版社 附 錄源代碼(Torbo C 3.0環境下)#include #include #include #include #include #define INT
14、ER 0x21 void menu() printf(-n);printf(0.exitn);printf(1.Display system timen);printf(2.Display system dayn);printf(3.Display Mos-dos versionn);printf(4.Deletefilen);printf(5.Createcontentn);printf(6.Deletecontentsn);printf(7.Filenamen);printf(8.Display currrent listn);printf(9.Echo stringn); printf(
15、10.ReadingFilen); printf(11.Clear screenn);printf(-n); 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:%dn,outregs.h.ch,outregs.h.cl,outregs.h.dh); getchar(); void day() union REGS inre
16、gs,outregs;/定義中斷信息結構體 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;/定義中斷信息結構體 struct SREGS segregs; inregs.h.ah=0x30;/DOS 30號功能 讀取MS-DOS版本號
17、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 SREGS segregs; inregs.h.ah=0x41;/DOS 中斷號 41 是刪
18、除文件 inregs.x.dx=FP_OFF(filename); segregs.ds=FP_SEG(filename); int86x(INTER,&inregs,&outregs,&segregs); if(result=2|result=5)printf(nCant delete the file:%s The file may not be exist!n,filename);elseprintf(nThe file:%s has been delete successfully! n,filename);void Createfile(char filename80) union
19、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) int result;uni
20、on 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,&segregs);result=outregs.x.ax;if(result=2|result=5)printf(nCant delete the file:%s The file may not be exist!n,filename);elseprintf(nThe f
21、ile:%s has been delete successfully! n,filename);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);
22、 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;/47H 讀取當前目錄reg.h.dl = 0;reg.x.si = FP_OFF(list); segreg.ds = FP_SEG(list);intdosx(®, ®, &s
23、egreg); 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 ReadFromFil
24、e(char filename80)union REGS inregs,outregs;struct SREGS segregs;int result;char ReadContents9*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)printf(n Cant read contents from
25、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,filename,outregs);printf(nThe contents of file:%s!n,filename);for(int i=0;ioutregs.x.ax;i+)printf(%c,ReadContentsi);printf(n);int main() char DeleteFileName80; char ReadingFileName80;c
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 安徽省阜陽市潁州區2025屆數學三年級第一學期期末質量跟蹤監視模擬試題含解析
- 2025屆西藏山南地區扎囊縣數學三年級第一學期期末模擬試題含解析
- 行政管理的公共關系學備考試題及答案
- 2022 年中級會計師考試《中級經濟法》真題及解析(9月5日)
- 劇組協調員助理場記聘用合同
- 長期公寓租賃合同
- 中級經濟師考試對行業發展的影響與試題及答案
- 農民信息技術應用服務合同
- 知識產權轉讓與保密協議細節展開說明文檔
- 心理學應用知識練習題
- 初中歷史資本主義制度的初步確立 作業設計
- 生活中的趣味數學智慧樹知到期末考試答案章節答案2024年石河子大學
- 能源英語面面觀 知到智慧樹網課答案
- 電腦時代需要練字辯論材料
- MOOC 職業生涯開發與管理-南京郵電大學 中國大學慕課答案
- 中國書法藝術智慧樹知到期末考試答案2024年
- 2024年4月自考00015英語(二)試題
- 上汽大眾電子說明書
- 數學建模與系統仿真智慧樹知到期末考試答案2024年
- 足球鞋推廣方案
- 論三農工作培訓課件
評論
0/150
提交評論