微機實驗報告1 基本實驗認識
桂 林 理 工 大 學
實 驗 報 告
班級 軟體工程16-1班 學號 3162052051116 姓名 張識虔 同組實驗者
實驗名稱 基本認識實驗
一、實驗目的:
二、實驗環境:
三、實驗內容:
1.2 原始檔的編輯與輸入
1.2.1 原始檔的命名與輸入 組合語言原始檔的編輯輸入過程中需要注意下面幾點: (1) 可以使用的文字編輯器有:DOS 下的 EDIT、寫字板、記事本等。不能 使用帶格式控制的文字編輯工具。例如,不能使用 Word 文件; (2) 除註釋外,源程式中的字元和標點符號必須是英文狀態下字元和標點符 號(半形); (3) 註釋中的符號可以使用任何可顯示可列印的符號; (4) 源程式的命名可以使用英文、數字等,並且字元的長度不超過
(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 的使用 (1)Windows 環境下用記事本編輯源程式 新建一個記事本,在記事本中輸入源程式,將檔名儲存為.asm 檔案。 (2)DOS 環境下用 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 兩個重要的編譯連線檔案。
- 進入 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。
- 連結 obj 檔案
生成的 obj 檔案並不是一個可執行檔案,還需要經過 LINK 連結之後才能生 成.exe 檔案。 格式:LINK obj 檔案路徑 1
如: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的使用
由於DEBUG是DOS的外部命令,因此必須在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 命令,可以用於跟蹤和除錯程 序中的各條指令的命令,同樣可以用於單條命令的跟蹤,和多條命令的跟蹤。不 同的只是該命令對於任何指令(包括過程呼叫指令)均當成一條指令來處理,因 此對於除錯一些諸如像包括有子程式呼叫、BIOS、DOS 功能呼叫等指令的程式 的時候特別好用;
-d 顯示一段地址單元中的資料。
d 命令執行後螢幕上顯示一段地址單元中 的資料,在顯示過程中,可用 Ctrl+S 來暫停顯示,用任意鍵繼續;也可以用 Ctrl+C 鍵終止資料顯示,返回監控狀態;
-e[address][value]
編輯指定地址單元中的資料。該命令執行後,則按位元組 顯示或修改資料,可通過“空格”鍵進入下一高地址單元資料的修改,使用“-” 鍵則進入下一地地址單元進行資料的修改,並可填入新的資料來修改地址單元的內容。若輸入回車,則結束 e 命令。
-q 退出返回作業系統。
例如,對A1.ASM原始檔進行除錯,如圖1-4-1、1-4-2和1-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檔案