匯編語言的編程步驟與調試方法_第1頁
匯編語言的編程步驟與調試方法_第2頁
匯編語言的編程步驟與調試方法_第3頁
匯編語言的編程步驟與調試方法_第4頁
匯編語言的編程步驟與調試方法_第5頁
免費預覽已結束,剩余1頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、. 匯編語言的編程步驟與調試方法一、 匯編源程序的建立1. 使用工具(1)EDIT,記事本等文本編輯軟件,編輯源程序,保存為.asm文件; (2)ASM,MASM匯編程序,對源程序進行匯編,生成.obj文件-目標文件,以及調試用.LST-列表文件和.CRF-交叉引用表;(3)Link連接程序,對使用的目標文件和庫文件進行連接,生成.exe文件,同時調試用.map-地址映像文件;如果源程序無語法錯誤,上述三步將生成可運行的.exe文件,如果運行結果無誤,則完成對匯編程序的編程,如果運行后結果存在錯誤,需要進行調試。(4)Debug調試程序,對.exe文件進行調試,修改,直到程序正確。圖3 目標程

2、序生成步驟圖2. 編程過程 (1)用文本編輯軟件,編寫擴展名為.asm的源文程序文件。(2)用匯編程序對編好的源文件進行匯編。命令行: masm *.asm 如果源文件中存在語法錯誤,則匯編程序將指出錯誤類型及位置,可根據這些信息重新編輯源文件,直至無語法錯誤,匯編后,將生成指定名稱的目標文件.obj。使用MASM50匯編程序進行匯編,輸入命令行 masm或者masm *.asm后,根據提示,輸入文件名,在匯編沒有錯誤的情況下,如屏幕所示:匯編程序可生成三個文件,*.obj,*.lst和*.crf。*.obj-目標文件,用于連接生成可執(zhí)行文件;*.lst-列表文件(可選),匯編語言匯編的機器語

3、言與匯編語言對照表,可用于調試;*.crf-交叉引用文件(可選),給出了用戶定義的所有符號和對每個符號定義、引用的行號。(3)目標文件的連接 命令行:link *.obj *.obj *.lib 連接程序,將多個目標程序及庫文件,連接生成可執(zhí)行的*.exe文件,同時可選擇生成*.map文件。 *.map-地址映像文件,給出內存地址分配的有關信息。 下圖所示屏幕,為Link連接兩個目標文件,沒有錯誤的情況下,生成*.exe文件。(4)執(zhí)行程序 執(zhí)行*.exe文件,觀察程序運行結果,如果存在錯誤,需要進行調試。調試工具DEBUG是針對匯編語言程序設計的一種調試工具,熟練使用DEBUG有助于匯編語言

4、程序員對于邏輯錯誤的調試。二、 匯編程序的調試1. 調試方法DEBUG工具的調試文件為可執(zhí)行文件*.exe,在命令行窗口或者DOS環(huán)境下,執(zhí)行DEBUG命令:命令行 Debug *.exe DEBUG程序如果正常啟動,提示符顯示為“_”。出現“_”提示符后,根據調試的需要,輸入正確的Debug命令,根據顯示內容,修改源文件。2. 常用DEBUG命令(1) D命令-內存顯示命令命令格式 格式1:D起始地址 格式2:D起始地址 結束地址|L 字節(jié)數調試程序的過程中,可利用該命令可以察看指定范圍的內存單元的內容,以確定對內存單元的修改是否正確??梢酝ㄟ^命令指定顯示的范圍(格式2),在不指定顯示長度的

5、情況下(格式1),將顯示從起始地址開始128個字節(jié)的內容,如果只寫D,則將從上一個D命令顯示結束的位置開始顯示128個字節(jié)。在內存顯示過程中,可以通過“Ctrl+S”鍵暫停,按任意鍵可繼續(xù)顯示,以防顯示過快,來不及察看,另外可以通過“Ctrl+S”中止該命令的執(zhí)行。(2)E命令-數據編輯命令命令格式 格式1:E起始地址 列表 格式2:E起始地址 調試過程中,為了進行程序測試,需要改變內存或者寄存器的數據,此時利用DEBUG的E命令可以非常方便的進行修改。E命令可以使用一連串的數據對內存連續(xù)地址單元進行修改,此時使用格式1,也可以修改某個地址單元的內容后,按“空格”鍵,繼續(xù)修改高地址單元內容。使

6、用E命令時,可以同時配合使用D命令,以確定是否正確的完成了對內存單元的修改。(3)U命令-反匯編命令 命令格式:U起始地址 結束地址調試過程中,可以利用U命令將目標程序反匯編為匯編程序,以觀察匯編指令的存放位置,匯編指令的正確與否,對于無源碼的目標程序,還可以利用反匯編獲取目標程序的源碼 。(4)G命令-運行程序命令命令格式:G=起始地址 第一斷點地址 第二斷點地址.調試過程中,可以利用G命令運行程序,觀察結果的正確性,或者設置斷點,利用G命令觀察程序運行到某一位置是否正確,G命令最多可以設置10個斷點,當程序運行置斷點時,停止執(zhí)行,并顯示當前所有寄存器和標志位的內容,以及下一條將要執(zhí)行的指令

7、。如果G命令無起始地址,則從當前CS:IP內容為開始運行。(5)T命令-單步執(zhí)行命令命令格式 格式1:T=地址 格式2:T=地址 執(zhí)行指令的條數調試過程中,可以利用該指令單步執(zhí)行,從指定地址開始(如果不指定,則從CS:IP開始),執(zhí)行一條指令(格式1)或者執(zhí)行指定條數的指令(格式2)后,停止執(zhí)行,并顯示當前所有寄存器和標志位的內容。(6)R命令-寄存器訪問命令命令格式 格式1:R 格式2:R 寄存器名稱一般匯編程序中,會頻繁的使用寄存器,使用R命令,可以在調試程序的過程中方便的進行寄存器內容的察看。如果不指定寄存器名稱(格式1),則顯示所有寄存器和標志位內容;可以指定需要察看的寄存器的名稱(格

8、式2),只顯示察看寄存器的內容。(7)Q命令-Debug退出命令命令格式 QDebug程序使用結束后,使用該命令退出Debug。3.Debug使用舉例 右邊所示的匯編源程序EX.asm,在命令行窗口中輸入下面命令行: MASM EX.asm 對EX.asm文件進行匯編,如果沒有語法錯誤,則生成EX.obj目標文件。輸入下面命令行: LINK EX.obj 對目標文件進行連接,連接后得到可執(zhí)行文件EX.exe,使用Debug對該程序進行調試。(1)U-反匯編 對EX.exe反匯編后,得到代碼段地址和指令的對應圖如下圖所示。 從反匯編的結果,可以得到指令在代碼段的偏移地址,常與T命令和G命令聯合使用,使程序運行到固定的位置,查看結果。同時,可以從反匯編代碼中看出,變量會被匯編為直接尋址方式,使用變量在數據段內的有效地址表示。(2)T-單步每按一下T,執(zhí)行一步,屏幕上顯示執(zhí)行指令后,通用寄存器、段寄存器和標志位的狀態(tài),下一條指令,以及指令中操作的存儲器尋址方式對應的內存單元的內容。(3)G-執(zhí)行 根據反匯編的情況,G斷點常設置在正常返回DOS調用之前,即MOV AH,4CH,執(zhí)行后,可以通過查看寄存器內容,或者D命令查看內存地址單元的內容,檢查程序的運行是否正常。(4)D-查看存儲器內容查看數據段內容,屏幕上會給出128字節(jié)

溫馨提示

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

評論

0/150

提交評論