《匯編語言》實驗_第1頁
《匯編語言》實驗_第2頁
《匯編語言》實驗_第3頁
《匯編語言》實驗_第4頁
《匯編語言》實驗_第5頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

《匯編語言》課程實驗指導手冊本實驗指導手冊旨在指導數(shù)學與軟件科學學院信息與計算科學專業(yè)《匯編語言》(專業(yè)任選課)的實驗教學活動過程。其主要使用對象為本課程主講教師和實驗指導教師。它可以作為教學過程中的教學輔助參考資料,也可以作為學生在本門課程的學習中,結合實際教學內(nèi)容,完成相關實驗并填寫實驗報告的主要依據(jù)。具體實施過程中,除開各實驗中要求的必做題目外,教師可結合實際教學情況,根據(jù)學生接受程度作適當擴展。學生在進行實踐設計活動時,也可以結合自身掌握和學習的實際情況進行有選擇地實踐。本指導手冊僅針對本學院信息與計算科學專業(yè)而設置。本實驗手冊編寫的參考書籍:1.《IBM-PC匯編語言程序設計(第2版)》,沈美明溫冬嬋編著,北京:清華大學出版社,2001年8月(第2版)2005年6月第14次印刷2.《80X86匯編語言程序設計教程》,楊季文等編著,北京:清華大學出版社,1998年6月(第1版)2005年8月第14次印刷引言匯編語言程序設計技術是實踐性很強的課程。實踐也是學好程序設計課程中必不可少的重要環(huán)節(jié)。程序設計的實踐分兩個步驟:一是設計和編寫解決問題的程序算法流程,并在此基礎上編寫源程序代碼;二是在計算機上對程序進行調(diào)試,并使程序完成問題的求解過程,進行相應的邏輯測試。由于匯編語言固有的特點,其程序調(diào)試比一般的高級程序語言困難,為此,學習過程中,尤其注意事先做好上機準備,做到目的明確,思路清晰,調(diào)試策略完全、全面,以便更好地觀察和分析匯編程序執(zhí)行的技巧,并注意領會計算機工作的本質(zhì)過程和步驟。可以參閱計算機組成原理方面的參考書,幫助理解計算機的基本工作原理。實驗過程中,應當注意如下問題:(1)上機實習的主要目的是訓練匯編語言程序的上機調(diào)試能力和分析、解決調(diào)試過程中遇到的問題的能力。并在此過程中逐步提高程序編寫與問題分析能力。而不是簡單地對教材上的實例做驗證式的操作;(2)上機內(nèi)容可以結合教材內(nèi)容和習題,或由老師布置專門的上機習題進行;(3)為提高上機效果。必須在上機之前準備好上機的基本內(nèi)容并編寫好上機程序,盡量在上機之前先作好預先的閱讀分析工作;(4)上機調(diào)試的基本方法:語法檢查(編譯)==>邏輯檢查(設計者檢查)==>測試。上機實驗的主要步驟:(1)了解實驗目的和要求,并復習或閱讀相關教材內(nèi)容;(2)根據(jù)題目要求,事先編寫好程序,并經(jīng)過設計者靜態(tài)檢查程序的語法正確性和邏輯正確性,分析可能出現(xiàn)的問題;(3)設計好上機時準備測試程序的用例;(4)上機調(diào)試通過程序,并記錄上機調(diào)試中出現(xiàn)的問題和測試結論等,寫出實驗報告。調(diào)試過程中,尤其要注意各種語法錯誤、邏輯錯誤調(diào)試經(jīng)驗的積累。要注意的是,匯編語言程序的實驗中,其源程序到可執(zhí)行程序之間的轉(zhuǎn)換過程的調(diào)試步驟一般不要求有集成環(huán)境,需要分步進行。具體步驟如下:1)編輯源程序(用edlin/edit/TurboC編輯環(huán)境或其它可以編輯生成文本文件的編輯器均可);2)將源程序匯編成2#目標文件;3)對目標文件進行鏈接,形成可執(zhí)行文件(.EXE/.COM);4)執(zhí)行或調(diào)試執(zhí)行可執(zhí)行文件。實驗報告的主要內(nèi)容:(1)實驗題目;(2)目的要求;(3)程序說明(如程序結構、各模塊的算法和數(shù)據(jù)結構等);(4)經(jīng)調(diào)試后的程序清單;(5)測試情況說明;(6)分析(包含沒有通過的程序的原因分析)。實驗環(huán)境(軟件和硬件環(huán)境):硬件環(huán)境:IBM-PC及其系列機內(nèi)存256KB以上外存:硬盤或至少一個軟驅(qū)CPU:80586以上顯示器:單色或彩色顯示器鍵盤:標準ASCII碼鍵盤軟件環(huán)境:編緝器:EDIT.COM或其它編緝器匯編程序:MASM.EXE或ASM.EXE連接程序:LINK.EXE調(diào)試程序:DEBUG.COM或DEBUG.EXE實驗報告的具體內(nèi)容填寫格式,參見《四川師范大學實驗報告手冊》格式的規(guī)定。其中,程序清單請附著在相應的實驗單元后面,程序結果、說明與分析等寫在實驗結果處,如不夠,可另行附頁。實驗一熟悉匯編程序編輯、編譯、連接和執(zhí)行與調(diào)試的基本方法(1學時)實驗目的:(1)熟悉匯編語言程序的基本結構;(2)熟悉匯編程序的編輯、編譯、連接與執(zhí)行方法;(3)熟悉匯編程序的調(diào)試執(zhí)行過程。實驗內(nèi)容:1.完成并熟悉一個簡單匯編語言程序的編輯、編譯、連接、運行過程,直到程序輸出結果正確;2.熟悉基本的DEBUG命令的使用方法;3.可參考的程序?qū)嵗缦?也可以參考教材范例):(0100-0118);source:hello.asm;function:displayastring;datasegmentDSEGSEGMENTMESSAGEDB‘Thisismyfirstprogram!’,0DH,0AH,24HDSEGENDS;codesegmentCSEGSEGMENTASSUMECS:CSEG,DS:DESGBEGINMOVAX,DSEGMOVDS,AXMOVDX,OFFSETMESSAGEMOVAH,9INT21HMOVAH,4CHINT21HCSEGENDSENDBEGIN實驗準備:(1)計算機設備;(2)程序調(diào)試環(huán)境的準備(熟悉匯編語言的基本結構,匯編語言的編譯、連接等過程和方法,調(diào)式環(huán)境DEBUG的基本使用方法);(3)實驗源程序準備。實驗步驟:(1)工作環(huán)境準備(安裝、復制MASM),如果已經(jīng)準備好,則可以跳過此步;(2)用EDIT.COM或其它編輯軟件輸入源程序代碼;(3)在DOS界面上進行匯編,有條件的也可以在集成環(huán)境下進行;(4)對匯編結果文件(2#.OBJ文件)進行連接;(5)執(zhí)行可執(zhí)行文件,觀察并記錄執(zhí)行結果信息;(6)熟悉DEBUG的基本使用方法;(7)編寫實驗報告。實驗結果:(1)對基于MASM的程序調(diào)試環(huán)境、方法和步驟進行總結;(2)給出匯編程序的基本結構和實驗程序?qū)嵗膱?zhí)行邏輯和結果;(3)給出DEBUG的基本使用方法。實驗二設計并跟蹤調(diào)試簡單匯編程序(1學時)實驗目的:(1)熟悉匯編程序解決實際問題的程序編寫方法;(2)進一步熟練掌握編譯、連接和DEBUG調(diào)試程序的方法。實驗內(nèi)容:1.匯編語言程序設計方法。主要實驗實例:(1)設計并實現(xiàn)一個1+2+…+20的程序,并上機實現(xiàn)之(或根據(jù)實際情況布置相應的問題進行設計);(2)顯示一個“Hello,Howareyou?”的匯編程序。(0100-0111)2.DEBUG的基本使用。(參見后面的DEBUG使用資料)(1)啟動和退出方法;(2)各種命令的使用方法。實驗準備:匯編語言程序設計方法,DEBUG的基本使用。實驗步驟:(1)選擇實驗問題;(2)設計匯編語言的程序代碼,并進行閱讀、分析;(3)上機調(diào)試進行測試并做測試記錄;(4)全面熟悉DEBUG的常用命令的使用方法,并作簡要記錄;(5)編寫實驗報告。實驗結果:(1)根據(jù)實驗題目的程序測試,寫出測試報告;(2)寫出關于DEBUG常用命令使用方法的測試報告和說明;(3)測試結果和匯編程序代碼清單。實驗三利用匯編指令完成簡單程序設計(1學時)實驗目的:(1)熟悉用數(shù)據(jù)段進行數(shù)據(jù)臨時存儲和數(shù)據(jù)移動的方法;(2)熟悉匯編語言中的數(shù)據(jù)傳送、邏輯運算等指令。實驗內(nèi)容:(第1題必做,2和3任選其一)主要實驗實例:1.利用DEBUG工具測試和掌握教材習題中的各種指令在各種尋址方式下的使用方法和結果;2.利用教材3.19題進行單步執(zhí)行,觀察并記錄寄存器中的CF、SF、OF和ZF等標志位的變化規(guī)律;3.編寫程序完成將存放在附加段中的數(shù)組數(shù)據(jù)移動到數(shù)據(jù)段中的程序。實驗準備:認真閱讀和復制教材相關內(nèi)容和課后習題。實驗步驟:(1)對第1題,先分析各種尋址實例,并預測其可能的執(zhí)行結果;(2)對2和3題任選其一,進行匯編程序設計,然后,上機測試和分析;(3)編寫實驗報告。實驗結果:(1)根據(jù)測試目標寫出測試報告;(2)測試結果分析說明;(3)測試程序代碼清單。實驗四利用匯編語言環(huán)境進行順序程序設計(1學時)實驗目的:運用匯編指令系統(tǒng)完成順序程序設計問題的求解。實驗內(nèi)容:(第1題中任選其一,2、3、4、5中任選其一)主要實驗實例:1.寫出執(zhí)行以下功能的匯編語言程序:(1)ZW+(Z-X)(2)ZW-(X+6)-(R+9)(3)Z(W*X)/(Y+6),R余數(shù)(4)Z((W-X)/5*Y)*2其中,X,Y,Z,R,W均為存放16位帶符號數(shù)單元的地址。2.試寫出對存放在DX和AX中雙字長數(shù),求補的指令序列3.試編寫程序,求出雙字長的絕對值。該數(shù)存放在A和A+2單元中。要求結果存放在B和B+2單元中。4.設X和Y均為16位無符號數(shù),試寫程序求表達式16X+Y的值,要求將結果存放在存儲單元Z處。5.試編寫一個將壓縮BCD碼轉(zhuǎn)換為10#數(shù)字表示的ASCII碼的程序。對BCD碼和轉(zhuǎn)換后的ASCII碼,要求分別存放在數(shù)據(jù)段中BCD和ASCII起始的存儲單元中。實驗準備:復習順序程序設計的基本方法和計算機進行問題求解的基本步驟。實驗步驟:(1)完成源程序設計任務,并準備好測試用例,分析其可能的測試結果;(2)上機運行和測試所寫的程序;(3)進行實驗分析;(4)編寫實驗報告。實驗結果:(1)根據(jù)測試目標寫出測試報告;(2)測試結果分析說明;(3)測試程序代碼清單。實驗五利用匯編語言進行分支程序設計(4學時)實驗目的:主要掌握匯編語言分支程序設計技術。重點掌握分支程序設計中的條件判斷和準備等技巧。實驗內(nèi)容:(任選其二)主要實驗實例:1.比較AX、BX和CX(或三個從BUFF位置連續(xù)的數(shù)據(jù))中帶符號的數(shù)據(jù),將大者存放于AX中,小者存放于CX,中者存放于BX。2.試編寫一個將16#數(shù)轉(zhuǎn)換為對應ASCII碼的程序。3.試編寫一個統(tǒng)計學生成績的程序。分別統(tǒng)計分數(shù)在60分以下的,60-69段,70-79段,80-89段,90-99段和100段的人數(shù),并分別將它們存放在RESULT開始的存儲單元中。實驗準備:匯編語言條件判斷和轉(zhuǎn)移指令知識,分支程序設計的基本方法。實驗步驟:(1)完成源程序設計任務,并準備好測試用例,分析其可能的測試結果;(2)上機運行和測試所寫的程序;(3)進行實驗分析;(4)編寫實驗報告。實驗結果:(1)根據(jù)測試目標寫出測試報告;(2)測試結果分析說明;(3)測試程序代碼清單。實驗六匯編語言中的循環(huán)程序設計(4學時)實驗目的:掌握循環(huán)程序設計的基本方法。主要掌握幾種基本的循環(huán)程序設計技巧,如計數(shù)法程序設計、當循環(huán)、直到循環(huán)等程序設計技術。實驗內(nèi)容:(任選其二)主要實驗實例:1.用多種循環(huán)方法實現(xiàn)1+2+3+…+20的程序(至少二種方法);2.將寄存器AX中的2#數(shù)用16#形式顯示出來;3.將內(nèi)存中的數(shù)據(jù)塊中(BUFF為起始地址)奇數(shù)和偶數(shù)分別存入以ADDR1和ADDR2開始的存儲塊中,并分別統(tǒng)計其中的奇、偶數(shù),將統(tǒng)計結果存放在RESULT開始的兩個字存儲單元中;4.不利用乘法指令實現(xiàn)乘法的程序;5.對在附加段中的首地址為LIST的字數(shù)組進行從大到小的排序;6.對給定數(shù)組和給定數(shù),編制程序來確定數(shù)組中是否有給定數(shù)的值,如有則從數(shù)組中刪除之;7.對給定數(shù)組和給定數(shù)(設數(shù)組是有序數(shù)組),試將給定數(shù)插入給定數(shù)組中相應位置。實驗準備:匯編語言下的循環(huán)程序設計基本技術和指令系統(tǒng)。循環(huán)程序設計的基本結構和問題表示方法。實驗步驟:(1)完成源程序設計任務,并準備好測試用例,分析其可能的測試結果;(2)上機運行和測試所寫的程序;(3)進行實驗分析;(4)編寫實驗報告。實驗結果:(1)根據(jù)測試目標寫出測試報告;(2)測試結果分析說明;(3)測試程序代碼清單。實驗七匯編語言中的子程序設計(4學時)實驗目的:熟悉和掌握匯編語言中的子程序設計技術,并應用它解決實際問題。實驗內(nèi)容:(任選其二)主要實驗實例:1.通過寄存器傳遞參數(shù)的子程序設計10#數(shù)到16#數(shù)的轉(zhuǎn)換程序的實現(xiàn)(從鍵盤獲取一個10#數(shù),然后把該數(shù)以16#的形式在屏幕上顯示出來)。2.通過地址表傳遞參數(shù)的子程序設計(重復以上程序)。3.通過堆棧傳遞參數(shù)的子程序設計(重復以上程序)。實驗準備:子程序的基本構成和表示方法。子程序的基本特點和程序表達方法。子程序的參數(shù)傳遞與調(diào)用、返回特點。實驗步驟:(1)完成源程序設計任務,并準備好測試用例,分析其可能的測試結果;(2)上機運行和測試所寫的程序;(3)進行實驗分析;(4)編寫實驗報告。實驗結果:(1)根據(jù)測試目標寫出測試報告;(2)測試結果分析說明;(3)測試程序代碼清單。實驗八主程序與子程序之間的參數(shù)傳遞實驗(4學時)實驗目的:熟悉主程序和子程序之間的參數(shù)傳遞基本途徑和方法。實驗內(nèi)容:主要實驗實例:(1)把一個大寫字母改寫為小寫字母的子程序的編寫和調(diào)試。(2)寫一個判別字符是否為數(shù)字的子程序,并利用該子程序刪除一個字符串中的所有數(shù)字字符。實驗準備:有關子程序和主程序概念,及其參數(shù)傳遞方法。實驗步驟:(1)上機驗證所選題目,并做相應測試和分析;(2)進行實驗分析;(3)總結指針及其程序設計、實現(xiàn)方法和經(jīng)驗;(4)編寫實驗報告。實驗結果:(1)根據(jù)測試目標寫出測試報告;(2)測試結果分析說明;(3)測試程序代碼清單。實驗九DOS功能調(diào)用方法(2學時)實驗目的:熟悉和掌握程序中的DOS功能調(diào)用基本方法,并實踐常用的幾種方法。實驗內(nèi)容:(任選其二)主要實驗實例:(1)寫一個程序,用2#數(shù)形式顯示所按鍵的ASCII碼值。(2)寫一個程序,它首先接受一個字符串,然后顯示其中的數(shù)字符的個數(shù),英文字母的個數(shù)和字符串的長度。(3)編寫一個顯示指定內(nèi)存單元內(nèi)容的程序。要求:允許用戶按16#數(shù)的形式輸入指定內(nèi)存單元的段地址值和偏移,然后用16#數(shù)形式顯示指定字節(jié)單元的內(nèi)容。(4)寫一個顯示文本文件內(nèi)容的程序。實驗準備:DOS功能調(diào)用的用途、方法。實驗步驟:(1)上機驗證所選題目的程序設計結果,并做相應測試和分析;(2)進行實驗分析;(3)總結結構體程序設計和實現(xiàn)的基本方法及其經(jīng)驗,尤其是鏈表技術;(4)編寫實驗報告。實驗結果:(1)根據(jù)測試目標寫出測試報告;(2)測試結果分析說明;(3)測試程序代碼清單。實驗十輸入、輸出與中斷調(diào)用(2學時)實驗目的:初步掌握輸入、輸出和中斷調(diào)用的基本方法。實驗內(nèi)容:主要實驗實例:1.寫一個程序完成如下功能:讀鍵盤,并把按鍵在顯示器上顯示出來。在檢測到按下SHIFT鍵時,程序結束。2.采用直接寫屏的方法在屏幕上以多種屬性顯示字符串“HELLO”。實驗準備:輸入、輸出和中斷調(diào)用的基本方法和用途。實驗步驟:(1)上機驗證所選題目的程序設計結果,并做相應測試和分析;(2)進行實驗分析;(3)總結結構體程序設計和實現(xiàn)的基本方法及其經(jīng)驗,尤其是鏈表技術;(4)編寫實驗報告。實驗結果:(1)根據(jù)測試目標寫出測試報告;(2)測試結果分析說明;(3)測試程序代碼清單。實驗指導手冊制定人:馮山2005年9月DEBUG簡介每個版本的DOS都帶有DEBUG調(diào)試器(Windows系統(tǒng)也不例外),原因在于,DEBUG不僅是動態(tài)調(diào)試器,也是2#文件編輯器和系統(tǒng)維護工具。啟動和退出命令格式:DEBUG[文件標識符[參數(shù)]]其中,文件標識符是要打開的文件名(.EXE和.COM文件),參數(shù)是即將被調(diào)試的文件或程序要用到的命令行參數(shù)。DEBUG將根據(jù)文件的擴展名判定被調(diào)試程序的類型。除.EXE和.COM外,所有其它文件都被認為是數(shù)據(jù)文件。如果缺省,則認為還沒有指定具體的被調(diào)試對象。此時,它仍將在內(nèi)存中開辟一段區(qū)域來建立程序的前綴部分,并進入調(diào)試狀態(tài)。DEBUG的用法中,注意[]內(nèi)的項表示可有可無。因此,共有以下幾種使用方法:C>DEBUG--------缺省調(diào)試文件C>DEBUGHELLO.EXE--------給出被調(diào)試文件,但不帶參數(shù)C>DEBUGHELLO.EXE10--------給出被調(diào)試文件,同時帶參數(shù)進入DEBUG后,將處于操作提示符“-”的狀態(tài)。要退出DEBUG,只需在操作提示符狀態(tài)位置輸入Q命令即可。要注意的是,Q命令退出時,正在被調(diào)試的程序文件的不會被保存。命令一覽表及其基本使用方法命令一覽表DEBUG命令一覽表編號命令格式功能說明1A[地址]匯編2C[范圍]地址內(nèi)存區(qū)域比較3D[范圍]顯示內(nèi)存單元中的內(nèi)容4E地址[字節(jié)值表]修改內(nèi)存單元內(nèi)容5F范圍字節(jié)值表填充內(nèi)存區(qū)域6G[=起始地址][斷點地址表]斷點執(zhí)行7H數(shù)值數(shù)值十六進制數(shù)加減8I端口地址從端口輸入9L[地址[驅(qū)動器號扇區(qū)號扇區(qū)數(shù)]]從磁盤讀取指定區(qū)域的內(nèi)容10M范圍地址內(nèi)存區(qū)域傳送11N文件標識符[文件標識符…]指定文件12O端口字節(jié)值向端口輸出字節(jié)中的值13P[=地址][數(shù)值]執(zhí)行過程14Q退出DEBUG15R[寄存器]顯示和修改寄存器中的值16S范圍字節(jié)值表在內(nèi)存區(qū)域搜索字節(jié)值表17T[=地址][數(shù)值]跟蹤執(zhí)行18U[范圍]反匯編功能19W[地址[驅(qū)動器號扇區(qū)號扇區(qū)數(shù)]]向磁盤指定區(qū)域?qū)懭朊钍褂玫恼w說明1)命令和參數(shù)不分大小寫;2)命令和參數(shù)之間,要用定界符分隔,即空格、制表符、逗號等。要注意的是定界符只在兩個16#數(shù)之間是必須的。例如,一下命令格式是完全等價的:DCS:100110DCS:100,110D,CS:100,1103)命令只有回車后才有效;4)如果命令格式或語法有錯,DEBUG將以“Error”指出其所在位置;5)常用編輯鍵可以用于命令的輸入過程中(回車之前);6)要中斷命令的執(zhí)行,可以用Ctrl+Break或Ctrl+C,以返回DEBUG操作提示符;7)若命令產(chǎn)生的輸出行較多時,可以用Ctrl+S暫停顯示。注:DEBUG接受和顯示的都是16#數(shù)。命令參數(shù)的使用說明DEBUG中,除開Q命令外,所有命令都有參數(shù)。為了便于對命令的準確描述和使用,對參數(shù)的使用方法和符號約定作如下說明:1)地址:通常表示一個內(nèi)存區(qū)域(或緩沖區(qū))的開始地址,由段地址值和偏移地址兩部分構成。段地址既可以用寄存器表示,也可以用4位16#數(shù)表示。而偏移地址值則用4位16#數(shù)表示。例如:CS:100表示中,段地址由CS寄存器給出,100表示偏移地址;1098:0000表示中,1098即段地址值,而0000表示偏移地址。當段地址缺省時,除A,G,L,T,U和W命令隱含使用CS寄存器值作為段地址外,都使用DS中的值作為段地址。例如:圖1缺省啟動DEBUG后的缺省段地址參數(shù)使用實例圖2帶被調(diào)試文件名的DEBUG啟動后的缺省段地址使用實例如圖1所示,D命令不帶任何參數(shù)時,其使用的段地址由DS寄存器表示,即1383。注:圖1中CS寄存器中的值也是1383,原因在于DEBUG啟動時沒有給出準備被調(diào)試的程序。如圖2所示,如果啟動時帶文件名,則可觀察出來。此時,D命令用的段地址正好是DS的值,即13D9(此時,CS的值為13E9)。使用CS的例子,請在實驗中操作和觀察。2)端口地址:由一個兩位的16#數(shù)構成。主要用于端口地址的輸入和輸出。3)范圍:用于指定內(nèi)存區(qū)域或緩沖區(qū)域。有兩種表示方法:一是用起始地址和結束地址界定;二是用起始地址和長度表示,而長度必須以字母L引導,最大的范圍是64K,即0到0FFFFH。例如:CS:100110----兩地址界定法CS:100L10----地址加長度法注:CS:100CS:110的表示法是錯誤的。4)數(shù)值:一般表示重復的次數(shù)。其范圍最多為4位16#數(shù)。5)字節(jié)值:表示輸出到端口中的數(shù)值,最多可以是2位16#數(shù)。6)字節(jié)值表:表示要替換或查找的若干個以字節(jié)為單位的值。各個值之間由空格等間隔符分隔。注:字節(jié)值表可以含字符串,而字符串必須用引號引住。7)驅(qū)動器號:表示要讀寫扇區(qū)所在的驅(qū)動器。其中,0代表A,1代表B,2代表C,3代表D。8)扇區(qū)號:表示DOS邏輯扇區(qū)號,最多可以是3位16#數(shù)。利用DEBUG命令調(diào)試程序的常用命令使用實例(1)幫助命令?----用于顯示DEBUG的命令及其使用格式信息(如圖3所示)。圖3DEBUG的幫助命令及其信息(2)R命令----顯示8086/8088各個寄存器的內(nèi)容和下一條將要執(zhí)行的指令(如圖1,圖2所示)。不帶任何參數(shù)的R只是顯示寄存器內(nèi)容。如果帶寄存器參數(shù),則可以修改該寄存器的值(如圖4所示)。(3)U命令----將指定范圍內(nèi)的內(nèi)容反匯編出來。如果范圍不指定,則表示從當前CS:IP處開始,或緊接上次反匯編操作結束處開始,默認為32字節(jié)(如圖4所示)。例如:UDS:0000L5表示從DS:0000開始反編譯5條指令。(4)D命令----可以顯示內(nèi)存空間中最低端的1MB范圍內(nèi)的任何單元的值。例如:D1096:0000L30表示顯示1096段處從0000單元開始的48字節(jié)的內(nèi)容(如圖5所示)。圖4DEBUG的R和U命令使用實例(5)T命令----用于跟蹤執(zhí)行一條或多條指令。跟蹤可從指定地址開始,地址參數(shù)以等號引導,參數(shù)無段地址值,則用CS值作為段地址。如果無起始地址,則從CS:IP處開始執(zhí)行。如果不指定跟蹤的指令條數(shù),則默認跟蹤一條。例如:T=CS:00003表示從CS:0000處開始,跟蹤3條指令的執(zhí)行情況(如圖5所示)。圖5DEBUG的D和T命令使用實例注:與T命令相近的有P命令。其區(qū)別在于:P命令不會由于過程調(diào)用或軟中斷調(diào)用而跟進入被調(diào)用的程序中。G命令用于設置斷點。沒有指定開始地址的,從CS:IP位置開始執(zhí)行,直到遇到斷點或程序正常結束。(6)E命令----修改內(nèi)存中存儲單元的值。匯編器和鏈接器的使用方法DOS平臺上主要用的匯編編譯器為MASM和TASM,鏈接器為LINK和TLINK。前者由Microsoft提供,后者由Borland提供。這里只介紹MASM和LINK。TASM和TLINK的使用方法相似。MASM的使用以MASM5.0為例,其格式如下:MASM[/options][source[.asm]],[out[.obj]],[list[.lst]],[cref[.crf]][;]其中,source[.asm]----源程序文件。缺省擴展名為.asmout[.obj]----指定輸出的目標代碼文件。缺省的文件名為源程序文件名,缺省的擴展名為.objlist[.lst]----指定輸出列表文件,缺省的擴展名為.lst。缺省情況下不生成列表文件。cref[.crf]----指定輸出的交叉參考文件,缺省的擴展名是.crf。缺省情況下不生成交叉參考文件。最后的分號表示其后的項按缺省處理。如果運行MASM時不帶參數(shù),則自動提示給出相應參數(shù)。

溫馨提示

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

評論

0/150

提交評論