天天看點

實驗一、指令解釋程式實驗

一、        實驗目的

(1)掌握指令解釋程式的原理;

(2)*掌握簡單的DOS調用方法;

(3)掌握C語言程式設計初步。

二、        實驗内容和要求

     編寫類似于DOS,UNIX的指令行解釋程式

(1)自行定義系統提示符

(2)自定義指令集(8-10個)

(3)使用者輸入HELP以查找指令的幫助

(4)列出指令的功能,區分内部還是外部指令

(5)使用者輸入QUIT退出

(6)内部指令有dir, cd, md, rd, cls, date, time, ren, copy等。

三、        實驗方法、步驟及結果測試

  1. 1.      源程式名:壓縮封包件(rar或zip)中源程式名 MiniOS.c

可執行程式名:MiniOS.exe

  1. 2.      原理分析及流程圖

采用數組的存儲結構。

主要算法: 

顯示程式提示資訊;

While(1) 

{ 顯示提示符; 

接收鍵盤的字元串; 

判斷是否quit程式退出指令,是則退出; 

判斷是否内部指令,并給出相應的資訊,否則給出錯誤資訊; 

} 

顯示退出程式資訊

  1. 3.      主要程式段及其解釋:

for( i=0;i<19;i++)       

           if(strcmp(ch1,j[i])==0)      /*比較輸入的字元串與數組的關鍵字是否相等*/  

           {    

                  switch(i)   

                  {    

                  case 0:

                         printf("dir 顯示一個目錄中的檔案和子目錄。\n");

                         break;    

                  case 1:

                         printf("cd 顯示目前目錄的名稱或将其更改。\n");

                  case 2:

                         printf("md 建立目錄。\n");

                  case 3:

                         printf("rd 删除目錄。\n");

                  case 4:

                         printf("cls 清除螢幕。\n");

                  case 5:

                         printf("date 顯示或設定日期。\n");

                  case 6:

                         printf("time 顯示或設定系統時間。\n");

                         break;    

                  case 7:

                         printf("ren 重命名檔案。\n");

                  case 8:

                         printf("copy 将至少一個檔案複制到另一個位置。\n");

                         break;

                  case 9:

                         printf("javac 将某一個java程式進行編譯。\n");

                  case 10:

                         printf("java 運作某一個已編譯的java檔案。\n");

                         break; 

                  case 11:

                         printf("erase 删除至少一個檔案。\n");

                  case 12:

                         printf("chkntfs 顯示或修改啟動時間磁盤檢查。\n");

                  case 13:

                         printf("assoc 顯示或修改檔案擴充名關聯。\n");

                  case 14:

                         printf("at 計劃在計算機上運作的指令和程式。\n");

                  case 15:

                         printf("attrib 顯示或更改檔案屬性。\n");

                  case 16:

                         printf("call 從另一個批處理程式調用這一個。\n");

                  case 17:

                      printf("dir\tcd\tmd\trd\tcls\ndate\ttime\tren\tcopy\tjavac\njava\terase\tchkntfs\tassoc\tat\nattrib\tcall\nEnter \" quit\" to quit this program!!\n");

                  case 18:

                         printf("Thanks for using it,bye!!\n");

                         break;    }    

                  return 1;

}  

           printf("No this one!!\nNot a internal commal.\n");

           return 0;

根據輸入的字元串,輸出相應的資訊。

  1. 4.      運作結果及分析
實驗一、指令解釋程式實驗

四、        實驗總結

  這次實驗用了switch case語句,優點是便于自己編寫簡單點,而缺點是沒有讀取檔案友善。