1. 程式人生 > >微機實驗報告1 基本實驗認識

微機實驗報告1 基本實驗認識

     

班級  軟體工程16-1  學號  3162052051116  姓名  張識虔  同組實驗者              

實驗名稱             基本認識實驗                            

日期 2018 11 11

一、實驗目的:

 

二、實驗環境:

 

三、實驗內容:

 

1.2 原始檔的編輯與輸入

1.2.1 原始檔的命名與輸入 組合語言原始檔的編輯輸入過程中需要注意下面幾點: (1) 可以使用的文字編輯器有:DOS 下的 EDIT、寫字板、記事本等。不能 使用帶格式控制的文字編輯工具。例如,不能使用 Word 文件; (2) 除註釋外,源程式中的字元和標點符號必須是英文狀態下字元和標點符 號(半形); (3) 註釋中的符號可以使用任何可顯示可列印的符號; (4) 源程式的命名可以使用英文、數字等,並且字元的長度不超過

8 個(最 8 個)。副檔名必須使用.asm(或大寫.ASM),存檔路徑不能出現中文或長字元;

 (5) E 盤中建立一個資料夾 MYCODE,如 E:\MYCODE,進入資料夾 MYCODE 中,在資料夾中編輯的原始檔。 1.2.2 DOS 環境 (1) 進入 DOS “開始”選單“執行”輸入 cmd確定,可進入 DOS 環境。如圖 1-2-1 所示。

 

1-2-1  使用指令方式進入 DOS 環境

或“開始”選單“所有程式”“附件”“命令提示符”。如圖 1-2-2 所示。

 

 

 

 

1-2-2  從程式方式進入 DOS 環境

即可進入 DOS 方式。在 DOS 方式下,DOS 介面如圖 1-1-3 所示。

 

WIN系統執行不了 只能用這個DOSBOX來運行了 原理都一樣

1-2-3  DOS 環境編輯介面

(2) DOS 提示符下,鍵入 E: 回車,進入E盤根目錄,這時提示符變為 E:/>

 

 

(3) 建立資料夾 MYCOED 的方法是:DOS 命令提示符 E:/>下輸入

E:\>  MD  MYCODE 回車,建立自己的資料夾(或叫做子目錄)MYCODE

我的檔案放在  myassembly資料夾 所有 cd myassembly

(4) 進入 MYCODE 資料夾,方法是:在 DOS 命令提示符 E:/>下輸入

 

 

E:\> CD  MYCODE 回車,進入資料夾(或叫做子目錄)MYCODE,進入後,

提示符變為“ E:\MYCODE/> ”。進入 DOS 下建立的資料夾 MYCODE 如圖 1-2-4 所示。

 

1-2-4  進入 DOS 下建立的資料夾 MYCODE

Windows 進入 DOS 模式,可能只有小視窗顯示,在 DOS 視窗右擊滑鼠, 點選屬性,選擇全屏模式,可以全屏顯示,如圖 1-2-5 和圖 1-2-6 所示。

 

1-2-5  DOS 環境屬性

 

 

 

1-2-6  DOS 環境視窗全屏設定

DOS 環境下輸入指令 EXIT 回車可退出 DOS 環境,如圖 1-2-7 所示。

輸入 exit後直接退出DOSBox視窗

 

1-2-7  退出 DOS 環境

 

1.2.3 DOS 環境下 EDIT 的使用 1Windows 環境下用記事本編輯源程式 新建一個記事本,在記事本中輸入源程式,將檔名儲存為.asm 檔案。 2DOS 環境下用 EDIT 編輯源程式 DOS 介面輸入命令:“EDIT”可開啟源程式編輯介面,如圖 1-2-8 所示。

 

 

 

1-2-8  使用 EDIT 命令進入源程式程式設計介面

在編輯介面中直接輸入彙編源程式,如圖 1-2-9 所示。

 

1-2-9  在編輯介面輸入彙編源程式

編輯源程式完畢後,對源程式進行儲存和退出,如圖 1-2-10 所示。在編輯 介面中可以通過滑鼠或鍵盤操作,按“Alt+選單首字母鍵可把游標在編輯框和 選單欄間切換,如“Alt+F”、“Alt+E”、“Alt+S”、 Alt+V”等快捷鍵選擇。光 標在選單欄時可以使用滑鼠或者鍵盤的“上下左右”方向鍵移動游標位置,回車 鍵確認選擇。退出 EDIT 編輯介面後則進入 DOS 介面。

 

1-2-10  對源程式儲存和退出

 

 

 8

 

EDIT 命令是一個簡單的編輯軟體,我們經常用它來編輯一些程式和批處理 檔案。例如,在 c 盤根目錄下編輯一個簡單的批處理檔案,要求無論當前盤和當 前目錄如何,每次只需輸入一個字元 w,然後回車即可執行 c windows 目錄下 windows 程式。要編輯一個檔名為 w.bat 的批處理檔案,可以在提示符下敲

edit w.bat 回車(就是編輯 w.bat 檔案的意思)。

 

進入編輯狀態後,輸入以下內容:c cd\windows win 如圖 1-2-11 所示。

 

我在edit裡邊寫了 hello my friends

1-2-11  DOS 環境下 EDIT 編輯介面

輸入完後,按 Alt+F 鍵啟用 File 選單,按向下的箭頭選擇退出(Exit),如圖 1 -2-12 所示。

 

1-2-12  退出 EDIT 編輯介面

 

 

 9

這時已經編輯完 w.bat 檔案,又回到了提示符狀態,用前面講過的 type 命令 就可以檢視剛才編輯的 w.bat 檔案,只需輸入 type w.bat 回車即可,如圖 1-2-13 所示。

 

1-2-13  檢視 w.bat 檔案

 

1.3 彙編程式 MASM 的作用和使用方法

1.3.1 巨集彙編程式 巨集彙編程式--MASM 彙編就是把用匯編語言編寫的源程式翻譯成機器語言 的目標程式。其基本工具是彙編程式。可使用小彙編程式(ASM),也可以使用 微軟公司產品巨集彙編程式(MASM)。

 1.3.2 彙編工具 MASM5.0 使用簡介 MASM 5.0 巨集彙編程式用於 DOS 環境下,MASM 5.0 是最常用的彙編連結 軟體,其簡單操作為:使用 MASM 命令將.asm 檔案編譯為.obj 檔案,用 LINK 命令將.obj 檔案連結為.exe 檔案,如圖 1-3-1 所示。

 

彙編源程式檔案 *.asm (助記符)

可執行檔案 *.exe (二進位制指令程式碼)

目標檔案 *.obj (純二進位制的中間 程式碼)

彙編

masm.exe 工具

編譯 連結

link.exe 工具

 

1-3-1  彙編過程

使用 MASM5.0 彙編工具時,不用預先安裝,可直接將 MASM5.0 拷貝到 PC 機的磁碟中執行。拷貝時最好放在磁碟的根目錄下,這樣方便在 DOS 系統操作。 本例程中將 MASM5.0 解壓放在 D 盤的根目錄下,資料夾命名為 MASM5.0,在 該資料夾中有 MASM.EXE LINK.EXE 兩個重要的編譯連線檔案。

  1. 進入 E:\MYCODE 目錄

E 盤根目錄下建立一個資料夾 MYCODE,用於存放編寫的.asm 檔案。若 在此目錄下存在可用的 hello.asm 檔案,編譯和連結此檔案的方法如下。編寫好 原始碼後,進入 DOS 系統開啟 E:\MYCODE 所在目錄,方法:“開始”“執行”輸入 cmd 可進入 DOS 系統,依次輸入 E:CD MYCODE,可開啟 E:\MYCODE 目錄。

 2. 編譯 asm 檔案

格式:MASM   asm 原始檔及路徑 1   obj 檔案目標路徑 2(省去則預設當 前路徑)

例如當前目錄是MYCODE,而 MASM.exe在巨集彙編資料夾D:\MASM5.0中, 要執行 MASM.exe 程式,需要給出 MASM.exe 程式的完整路徑名。

 例如當前目錄是使用者目錄 MYCODE,這時的 DOS 命令提示符為:

 

 E:\MYCODE\>

如果有一個組合語言源程式名字為 HELLO.ASM,要執行 D:\MASM5.0 檔案 夾下的 MASM.EXE 程式對彙編源程式 HELLO.ASM 進行彙編,應該在 DOS 令提示符下輸入

 

E:\MYCODE\>D:\MASM5.0\MASM HELLO.ASM  回車(鍵盤輸入)

 

在介面輸入 D:\MASM5.0\MASM HELLO.ASM 之後連續 3 次回車。程式無 錯則在 E:\MYCODE 中增加檔案 HELLO.OBJ

  1. 連結 obj 檔案

生成的 obj 檔案並不是一個可執行檔案,還需要經過 LINK 連結之後才能生 .exe 檔案。 格式:LINK  obj 檔案路徑

如:E:\MYCODE\>D:\MASM5.0\LINK HELLO.OBJ  回車(鍵盤輸入)

在介面輸入 D:\MASM5.0\LINK. HELLO.OBJ 之後連續 3 次回車,可在 E:\MYCODE 目錄下發現一個 hello.exe 檔案。 編輯好的原始檔需要彙編(用 MASM.EXE 工具),連結(用 Link.EXE 工具) 連結成可執行檔案,才能在 PC 上除錯或執行。

 

1.3.3 MASM.EXE 的使用

 

MASM.EXE 用於將彙編源程式彙編成目標檔案。

 例如:用一個彙編程式說明 MASM.EXE 的使用方法。彙編程式名稱為 HELLO.ASM,內容如下:

 DATA SEGMENT

       MSG DB Hello, word.,0DH,0AH,$

 DATA ENDS

 CODE SEGMENT   

   ASSUME CS:CODE,DS:DATA START: MOV AX,DATA   

MOV DS,AX   

    MOV DX,OFFSET MSG    

   MOV AH,09H   

    INT 21H    

   MOV AX,4C00H    

   INT 21H CODE ENDS   

    END START

 輸入“masm hello;”指令,指令後的分號表示一切按預設情況進行。執行後 顯示以下內容: Microsoft (R) MASM Compatibility Driver Copyright (C) Microsoft Corp 1993.  All rights reserved.

 

Invoking: ML.EXE /I. /Zm /c hello.asm

 

Microsoft (R) Macro Assembler Version 6.11 Copyright (C) Microsoft Corp 1981-1993.  All rights reserved.

 

Assembling: hello.asm 程式沒有語法錯誤,並生成目標檔案 HELLO.OBJ

 

 1.3.4 LINK.EXE 的使用 LINK.EXE 用於將目標檔案連結成可執行檔案。

 例如:將剛才用 MASM.EXE 彙編出來的目標程式進行連結。目標程式名稱 HELLO.OBJ

 

 輸入“link hello;”指令,指令後的分號表示一切按預設情況進行。執行後顯 示以下內容:

 

 Microsoft (R) Segmented Executable Linker  Version 5.31.009 Jul 13 1992 Copyright (C) Microsoft Corp 1984-1992.  All rights reserved.

 

LINK : warning L4021: no stack segment 連結警告沒有定義棧段,這不影響程式的執行。

 

接下來可以執行 HELLO.EXE,看看顯示結果是不是 Hello, world.

 

 

1.4 程式的除錯(DEBUG

 

1.4.1 DEBUG的作用

 

DEBUG DOS 提供的用於程式除錯的系統,作為 DOS 的外部命令隨 DOS 的其它外部命令一起由 DOS 的提供產商向用戶提供。因此使用者在使用 DEBUG 系統時一定要注意當前使用者所使用的 DOS 的外部命令中是否提供該命令(若 DOS 命令不全,有可能沒有此命令)。

 

1.4.2 DEBUG的使用

 

由於DEBUGDOS的外部命令,因此必須在DOS的提示符狀態下進行呼叫。 呼叫的方法如下:

 

E:\MYCODE>DEBUG FILENAME.EXE  回車(鍵盤輸入)

 

此處 FILENAME 應是檔案的全名,即應包括檔案的主名和副檔名(若檔案 有副檔名),如檔案不在當前目錄,則還因包括檔案所存放的目錄名。 輸入上述命令後若在當前目錄中能找到相應的檔案,則系統在螢幕的左邊顯 示一短槓:“-”;若在當前目錄中能找不到相應的檔案,則系統在螢幕上顯示:“file not find”,並在螢幕的左邊顯示一短槓:“-”。 注意:DEBUG除錯程式只能呼叫當前目錄的檔案。

 

常用的除錯命令如下:

 -u  反彙編;

 

-r  暫存器或片內 RAM 區顯示與修改。

 

操作後螢幕顯示 CS=XXXX  DS=XXXX  IP=XXXX  AX=XXXX,若需要顯示並修改特定暫存器內容,則選擇 R 暫存器名回車操作,如 RAX 回車則顯示:AX=XXXX,鍵入回車鍵,結束該

命令;

 -g =[address1][address2][address3] 

 

執行到斷點行, g 格式表示無斷點連續運 行程式,連續執行程式中,當遇到斷點或按下 Ctrl+C 鍵時,終止程式執行;

 -t =[address][value] 

單步執行指定的程式。每次按照指定的地址或 IP/PC 示的地址,單步執行一條指令後則顯示執行後的 CPU 暫存器情況;

-p =[address][value] 

單步執行命令,類似於 t 命令,可以用於跟蹤和除錯程 序中的各條指令的命令,同樣可以用於單條命令的跟蹤,和多條命令的跟蹤。不 同的只是該命令對於任何指令(包括過程呼叫指令)均當成一條指令來處理,因 此對於除錯一些諸如像包括有子程式呼叫、BIOSDOS 功能呼叫等指令的程式 的時候特別好用;

 -d  顯示一段地址單元中的資料。

d 命令執行後螢幕上顯示一段地址單元中 的資料,在顯示過程中,可用 Ctrl+S 來暫停顯示,用任意鍵繼續;也可以用 Ctrl+C 鍵終止資料顯示,返回監控狀態;

 -e[address][value] 

編輯指定地址單元中的資料。該命令執行後,則按位元組 顯示或修改資料,可通過“空格”鍵進入下一高地址單元資料的修改,使用“- 鍵則進入下一地地址單元進行資料的修改,並可填入新的資料來修改地址單元的內容。若輸入回車,則結束 e 命令。

 -q  退出返回作業系統。

例如,對A1.ASM原始檔進行除錯,如圖1-4-11-4-21-4-3所示。

 

 

1-4-1  A1.ASM 除錯和反彙編

 

1-4-2  檢視暫存器的內容和檢視資料

 

1-4-3  單步除錯觀察暫存器的值

 

 

四、心得體會:

 

win10系統不能正常使用DOS 只能藉助DOSBOX軟體來進行操作  這些之前在組合語言課程已經學過  都是挺簡單的操作   EDIT編譯比較麻煩  如果有修改 不怎麼方便修改,在電腦建立TXT檔案 然後在TXT檔案打入程式碼後 在把檔名改成asm檔案這樣就好運行了

 

 

DOS 輸入程式碼時  要注意英文的符號 和中文的符號有所不同 比如 MSG DB Hello, word.,0DH,0AH,$ 這條語句中 ‘   兩個是不同的符號  前者是英文符號 後者是中文符號  DOS系統中 無法識別中文符號,如果打入中文符號 程式就出現報錯  MASM之後無法生成.OBJ檔案  那麼 後面的 link 步驟無法執行  所以也就不能生成且執行.EXE檔案