微機(jī)原理及應(yīng)用實驗環(huán)境_第1頁
微機(jī)原理及應(yīng)用實驗環(huán)境_第2頁
微機(jī)原理及應(yīng)用實驗環(huán)境_第3頁
微機(jī)原理及應(yīng)用實驗環(huán)境_第4頁
微機(jī)原理及應(yīng)用實驗環(huán)境_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第三部分 附錄附錄 匯編語言上機(jī)操作步驟一、 在IBM-PC機(jī)上運行匯編源程序所必備的軟件TPC-H型十六位微機(jī)實驗培訓(xùn)系統(tǒng),要求用匯編語言來編寫程序,為了在IBM-PC機(jī)上運行匯編源程序,機(jī)器上必須有DOS操作系統(tǒng)環(huán)境,DOS系統(tǒng)盤上必須有下列文件:EDITCOM 文件編輯程序MASMEXE 宏匯編程序CREF 交叉引用文件處理程序LINKEXE 鏈接程序LIB 庫管理程序DEBUGCOM 調(diào)試程序二、在IBM-PC機(jī)上運行匯編源程序的步驟當(dāng)用戶編制好匯編語言源程序之后,要在機(jī)器上運行,必須經(jīng)過以下幾個步驟:1用EDIT命令建立與修改匯編源程序文件(ASM文件)源程序就是用匯編語言的語句編寫

2、的程序,它不能被機(jī)器識別。源程序必須以ASM為附加文件名。至于EDIT的使用方法可以查閱手冊。2用MASM命令匯編源文件以產(chǎn)生相應(yīng)的目標(biāo)文件(OBJ文件)源程序建立以后,必須經(jīng)過匯編,轉(zhuǎn)換成用二進(jìn)制代碼表示的目標(biāo)文件,機(jī)器才可運行。匯編是通過調(diào)用PCDOS下的宏匯編程序MASM實現(xiàn)的。匯編過程中,匯編程序?qū)υ次募M(jìn)行二次掃描,如果源程序中有語法錯誤,則匯編過程結(jié)束后,匯編程序會指出源程序中的錯誤,這時,用戶可以再用編輯程序來修改源程序中的錯誤,最后,得到?jīng)]有語法錯誤的OBJ文件。3用LINK命令連接目標(biāo)文件以產(chǎn)生可執(zhí)行文件(EXE文件)由于匯編之后所得到的目標(biāo)代碼的存放地址并不是可執(zhí)行的絕對地

3、址,而是浮動的相對地址,因而,必須經(jīng)過連接,把程序的各個模塊連接在一起,或把要調(diào)用的子程序與主程序連接在一起,把相對地址變成絕對地址,形成可執(zhí)行的文件。連接是由調(diào)用PCDOS下的LINK程序來實現(xiàn)的。4調(diào)試、運行可執(zhí)行文件。經(jīng)過以上過程,在盤上有了可執(zhí)行文件,則可在DOS提示符下,直接打入文件名(不用擴(kuò)展名),就可以把執(zhí)行文件從盤上裝入內(nèi)存,且立即執(zhí)行此程序。然而通常一個較復(fù)雜、較長的匯編語言源程序,希望一點錯誤也沒有的可能性是很小的,這樣就需要調(diào)用PCDOS支持下的DEBUG程序,來調(diào)試我們的目標(biāo)程序。被調(diào)試程序在DEBUG的管理下,可以單步執(zhí)行程序,也可以設(shè)置斷點,可以顯示和修改CPU內(nèi)部

4、寄存器和標(biāo)志位的內(nèi)容等,這樣就便于尋找程序中的錯誤。在發(fā)現(xiàn)了錯誤以后,通常還要重復(fù)上述的編輯、匯編,連接和調(diào)試程序的全過程,直至程序運行正確為止。已調(diào)試的目標(biāo)程序,任何時候都可在PC DOS下,通過打入文件名即可運行它。上機(jī)過程示意圖如下:匯編語言程序編輯程序匯編程序連接程序調(diào)試程序有錯嗎?運行程序YN圖13 匯編語言程序上機(jī)過程流程為了便于操作,下面將上機(jī)操作全過程中的主要部分分別加以介紹,編輯程序因為使用普遍,在此不做介紹。三、宏匯編程序 經(jīng)過編輯命令建立和修改后存盤的匯編語言源程序(擴(kuò)展名為ASM),要在機(jī)器上運行,必須先由匯編程序把它匯編為機(jī)器碼的目標(biāo)程序。經(jīng)過IBM匯編程序匯編后的程

5、序在盤上建立三個文件:一個是擴(kuò)展名為OBJ的目標(biāo)程序。在此程序中,操作碼部分已變?yōu)闄C(jī)器碼,但操作數(shù)地址只是一個可浮動的相對地址,而不是內(nèi)存中的絕對地址。第二個是擴(kuò)展名為LST的匯編列表文件,它把源程序(包括注釋)和匯編后的目標(biāo)程序都制表,可以打印出來供檢查用。第三個是擴(kuò)展名為CRF的符號交叉列表文件,可以對符號進(jìn)行前后對照。在匯編時,匯編程序?qū)σ灰⑦@些文件,有如下提示: 例如對examasm文件進(jìn)行匯編:在DOS狀態(tài)下,打入MASM調(diào)用宏匯編程序,屏幕顯示與操作如下: C>MASM 此時,屏幕上出現(xiàn)如下信息: The IBM Personal Comporter MACRO Ass

6、emble, 100(C)Copyright。IBM Corp 1981 Source filenameASM:exam Object filenameexamObj: Source ListingNul1st:exam Cross referenceNulcrf:exam Warning Severes Errors Errors 0 0 從上面操作過程中可以見到,匯編程序的輸入文件就是:用戶編寫的源程序,它必須以ASM為文件擴(kuò)展名,在匯編調(diào)入后,先顯示版本號,然后出現(xiàn)第一行提示,詢問要匯編的源文件名。用戶輸入文件名,則出現(xiàn)第二個提示,詢問目標(biāo)程序的文件名,括號內(nèi)的為機(jī)器規(guī)定默認(rèn)的(defa

7、ult)文件名,通常直接按回車,表示采用默認(rèn)文件名,接著出現(xiàn)第三個提示,問是否要建立可打印文件,若要,打入文件名,若不要,可直接回車。最后出現(xiàn)第四個提示,詢問是否要建立交叉索引文件,若需要則打入文件名,若不要直接回車。在回答了第四個詢問后,匯編程序就對源程序進(jìn)行匯編。匯編過程結(jié)束時,如果程序有錯誤會給出源程序的警告性錯誤(warning errors)和嚴(yán)重錯誤(severs errors)。前者指出一般性錯誤,后者指出語法性錯誤。當(dāng)存在這兩類錯誤時,屏幕上除指出錯誤個數(shù)外,還給出錯誤信息代號。程序員可以通過查代碼手冊弄清楚錯誤的性質(zhì)。如果匯編過程中,發(fā)現(xiàn)有錯誤,則程序員應(yīng)該重新用編輯命令修改

8、錯誤,再進(jìn)行匯編,最終直到匯編正確通過。要指出的是匯編過程只能指出源程序中的語法錯誤,并不能指出算法錯誤和其他錯誤。注意:匯編后建立的.CRF文件是不能單獨使用的,若需要了解源程序中的符號(包括變量)在定義和引用時的情況,還要調(diào)用CREF文件對CRF文件進(jìn)行處理,生成.REF文件后,才能打印(或顯示)輸出.其過程如下:C> CREF Cref filename .CRF: exam List filename exam.REF: 在DOS狀態(tài)下,打入CREF,就會調(diào)入交叉引用文件處理程序CREF。CREF運行時,首先詢問要處理的文件名。在鍵入文件名后,出現(xiàn)第二個提示,詢問.REF文件名,

9、可用回車承認(rèn)默認(rèn)的.REF文件名。于是就建立了一個擴(kuò)展名為.REF的文件,然后返回DOS狀態(tài)。在DOS狀態(tài),用TYPE命令打印此文件,得如下顯示信息:Symbol Cross_Reference(# is definition)Cref_1BUF * * * * * * * * * * *8#16CODE * * * * * * * * * *12#1321DATA * * * * * * * * * *7#111314STACK * * * * * * * * * *1#613START * * * * * * * * * *14#22其中,有#號者是此符號被定義時的語句行號,后面是引用此符

10、號的語句行號。 四、連接程序(Link) 由匯編程序建立的目標(biāo)碼文件必須經(jīng)過連接以后,才能成為可執(zhí)行文件。連接程序并不是專為匯編語言設(shè)計的。利用它可以把若干個模塊連接在一起,這些模塊可以是匯編程序產(chǎn)生的目標(biāo)碼文件,也可以是其它高級語言編譯程序產(chǎn)生的目標(biāo)文件。在連接過程中,又建立了幾個文件。具體操作如下(以examobj進(jìn)行連接為例):C>LINK 此時,屏幕上出現(xiàn)如下信息:IBM 5552 multistation Linker 200(C)Copyright IBM Corp1985Corp1985Object modules.OBJexam Run Fileexam.EXE: Lis

11、t FileNUL.MAP:exam Libraries.LIB: Warning: NOSTACK Segment 首先詢問要連接的目標(biāo)文件,操作員鍵入文件名作為回答(此處是exam)。如果有多個要連接的目標(biāo)文件,應(yīng)一次鍵入。各目標(biāo)文件名之間用“+”號隔開。第二個提示詢問要產(chǎn)生的可執(zhí)行文件的文件名,一般直接回車就采用了括號內(nèi)規(guī)定的默認(rèn)文件名。第三個提示詢問是否要建立地址分配文件。鍵入文件名再回車表示要建立,直接按回車鍵表示不要建立。最后詢問是否用到庫文件,如果沒有庫文件,則直接鍵入回車即可(如果用戶用到庫文件,則鍵入庫文件名。建立庫文件的方法見第五節(jié))。回答以上問題后,連接程序便開始進(jìn)行連接

12、。若連接過程有錯,則顯示錯誤信息。若有錯誤就要重新調(diào)用編輯程序修改源文件,然后重新匯編、連接,直至無錯。LINK過程產(chǎn)生兩個輸出文件,一個是擴(kuò)展名為EXE的執(zhí)行文件產(chǎn)生此文件當(dāng)然是LINK過程的主要目的,另一個是擴(kuò)展名為MAP列表分配文件,有人也稱它為映象文件,它給出每個段在內(nèi)存中的分配情況。比如某個列表分配文件為如下內(nèi)容:C>TYPE examMap Warning:No STACK SegmentStart Stop Length Name00000H 0015H 0016H CODE00020H 0045H 0026H DATA00050H 0061H 0012H EXTRAPro

13、grame Entry point at 0002:0000由上面看出,變量CODE的起始地址是0000H,結(jié)束地址是0015H,字節(jié)數(shù)是16H,以此類推。 另外從LINK過程提示信息中,可看到最后給出一個“無堆棧段”的警告性錯誤,這并不影響程序的執(zhí)行。當(dāng)源程序中設(shè)置了堆棧段,則無此提示信息。五、子程序庫的建立方法 在處理比較復(fù)雜的問題時,往往需要把某些經(jīng)常被反復(fù)調(diào)用的子程序匯編成目標(biāo)模塊,集合在一起組成一個“子程序庫”(.LIB),以方便調(diào)用。建立子程序庫是調(diào)用DOS的庫管理程序LIB來實現(xiàn)的。庫管理程序LIB的啟動方式分為提問方式、命令方式、文件方式三種,此處僅介紹提問方式。在DOS狀態(tài),

14、鍵入“LIB”之后,DOS把LIB裝入主存并向用戶提問,用戶根據(jù)要求鍵入相應(yīng)的回答。LIB的提問信息及其回答如表1所示,回答時可用的命令字符如表2所示。表1 LIB的提示信息及回答 提示信息 回 答Library name:Operation:List file: 欲進(jìn)行操作的庫名(缺省文件擴(kuò)展名為.LIB) 命令字符及模塊名或目標(biāo)文件名 交叉參考列表文件名(缺省:NUL,無交叉參考列表文件)表2 庫管理命令字符 命令字符 功 能 + - * ; & CTRL_C把目標(biāo)代碼文件作為最后一個模塊加入庫中從庫中刪除一個模塊從庫中取出模塊,寫入目標(biāo)文件中(庫中仍保留)剩下的提示取缺省值提示信

15、息在一行內(nèi)回答不下時,鍵入此字符將另起一行終止庫管理操作下面舉例說明子程序庫的建立方法.建立一子程序庫WAN.LIB,將子模塊QUEUE、F10T2、F2T10放入該庫中,其操作步驟如下: 建立它們的源文件QUEUE.ASM、F10T2.ASM、F2T10.ASM。 將這三個源文件模塊分別匯編,生成目標(biāo)文件QUEUE.OBJ、F10T2.OBJ、F2T10.OBJ。 調(diào)用庫管理程序LIB建立子程序庫WAN.LIB,并將三個目標(biāo)文件加入庫中,既可逐個加入,也可一次加入。如果逐個加入,可用以下方法(一):C> LIBMicrosoft (R) Library Manager Version

16、3.04Copyright (C) Microsoft Corp 1983,1984,1985,1986. All rights reserved.Library name: WANLibrary does not exist. Create? YOperations: +QUEUEList file: C> LIBMicrosoft (R) Library Manager Version 3.04Copyright (C) Microsoft Corp 1983,1984,1985,1986. All rights reserved.Library name: WANLibrary d

17、oes not exist. Create? YOperations: +F10T2List file: C> LIBMicrosoft (R) Library Manager Version 3.04Copyright (C) Microsoft Corp 1983,1984,1985,1986. All rights reserved.Library name: WANLibrary does not exist. Create? YOperations: +F2T10List file: 如果一次加入,可用如下方法(二):C> LIBMicrosoft (R) Library

18、 Manager Version 3.04Copyright (C) Microsoft Corp 1983,1984,1985,1986. All rights reserved.Library name: WANLibrary does not exist. Create? YOperations: +QUEUE+F10T2+F2T10List file: 庫文件建立以后,庫中的子程序可以方便地被其它程序調(diào)用。例如,當(dāng)子程序模塊QUEUE、F10T2、F2T10入子程序庫WAN.LIB之后,主模塊MAIN.ASM匯編后可按如下方式連接(假定主模塊的目標(biāo)文件為MAIN.OBJ,且主模塊中調(diào)用

19、子模塊QUEUE、F10T2及F2T10):C> LINKMicrosoft 8086 Object LinkerVersion 2.44 (C) Copyright Microsoft Corp 1983Object Modules .OBJ: MAINRun File MAIN.EXE: List File NUL.MAP: Libraries .LIB: WAN連接后得到可執(zhí)行文件MAIN.EXE。附錄 匯編語言程序調(diào)試方法(DEBUG的使用) 調(diào)試程序DEBUG是DOS支持的又一種系統(tǒng)軟件,主要用于匯編語言程序的調(diào)試。匯編和連接過程只能查出源程序的語法錯誤,不能查出功能上的錯誤和

20、程序不完善的地方。DEBUG程序為用戶提供多種命令,大致有:顯示和修改寄存器和存貯單元的內(nèi)容;執(zhí)行程序中任意一段或一條指令;匯編單條源語句和反匯編機(jī)器碼指令;查找字符代碼;端口的輸入和輸出;文件裝入內(nèi)存和寫入磁盤等。用戶利用這些命令可以查出任何程序功能上的錯誤。下面說明DEBUG程序的啟動方法和主要命令意義。一、DEBUG程序的啟動 DEBUG程序有兩種啟動方法。DEBUG程序是在DOS盤上的一個獨立的可執(zhí)行程序(擴(kuò)展名為COM),所以,DEBUG程序的第一種啟動方法就是把它看作和一般的可執(zhí)行程序一樣,只要打入DEBUG和回車鍵,就可以把它裝入內(nèi)存。但是這樣啟動只把DEBUG程序本身裝入內(nèi)存并

21、進(jìn)入等待DEBUG命令狀態(tài),還沒有把要調(diào)試的程序裝入內(nèi)存。第二種啟動DEBUG的程序的方法是一次相繼裝入DEBUG程序和要調(diào)試的程序。打入的命令格式如下: DEBUGd:pathfilename.extparmlLparm2 其中的Filename是要調(diào)試程序的文件名,可選項d:path和ext分別是要調(diào)試程序的所在盤符、路徑和擴(kuò)展名??蛇x項parml和parm2是DEBUG程序為要調(diào)試程序準(zhǔn)備的參數(shù)(一般不用)。 例 進(jìn)入DEBUG程序并裝入要調(diào)試程序,要調(diào)試程序在A驅(qū)動器中。其操作如下: C>DEBUG A:ABCEXE (進(jìn)入DEBUG,并裝配ABCEXE) 此時屏幕上出現(xiàn)一個短線

22、,這表示可以使用DEBUG命令了。二、調(diào)試命令在說明每個命令之前,先說明一些共同信息: DEBUG命令都是以一個英文字母開頭,后面跟一個或多個參數(shù)。 命令字母和參數(shù)可用大寫或小寫或混合形式。 命令字母和參數(shù)中,相鄰兩個十六進(jìn)制之間必須用逗號或空格分開其它各部分之間有無空格或逗號都可以。 執(zhí)行任何命令期間都可用Ctrl+Break鍵方法結(jié)束命令的執(zhí)行。 打入命令字母和參數(shù)后必須打入回車鍵才能使命令有效。 如果執(zhí)行某種命令期間在顯示器或打印機(jī)上的很長的輸出,可以按Ctrl+Numlock鍵暫停繼續(xù)顯示,使顯示屏幕停下來供觀察。再按任何其它鍵,則繼續(xù)顯示輸出。 在DEBUG程序狀態(tài)下,控制鍵和DOS

23、支持的編輯鍵繼續(xù)有效。 如果輸入的命令有錯誤,將顯示出來。例如: dcs:100cs:110 error 這說明d命令的第二個address參數(shù)格式不對,它只能包括偏移地址部分,不能再有段地址部分。它發(fā)現(xiàn)S不是十六進(jìn)制數(shù)字符。 DEBUG程序狀態(tài)光標(biāo)提示符為“-”。下面按命令功能相近關(guān)系分組說明幾個主要命令功能和使用的方法:(一)顯示和修改寄存器或存貯單元的有關(guān)命令1. R(Register)命令R命令有三種功能:l 顯示單個寄存器內(nèi)容并等待修改這個寄存器內(nèi)容;l 顯示CPU內(nèi)部的所有寄存器的內(nèi)容和全部標(biāo)志位的狀態(tài);l 顯示和修改所有標(biāo)志位的狀態(tài)。 顯示和修改單個寄存器內(nèi)容命令命令格式:R 寄

24、存器名說明:顯示單個寄存器內(nèi)容。R之后輸入寄存器名符。例如命令 - RAX將顯示出AX的內(nèi)容和在下一行顯示出冒號。AXF1E4:- 上面的F1E4是AX的當(dāng)前內(nèi)容。如果在冒號后打入要修改的內(nèi)容,然后打回車鍵,這時AX即修改為新值;如果不輸入新值,只打回車鍵,則不改變原值。 顯示CPU內(nèi)部的所有寄存器的內(nèi)容和全部標(biāo)志位的狀態(tài)命令命令格式:R說明:顯示所有寄存器和標(biāo)志位值。例如:-R系統(tǒng)響應(yīng)給出格式如(值是假設(shè)的):AX=0E00 BX00FF CX=0007 DX=01FF SP0390 BP0000 SI0050 DI=0000 DS04BA ES04BA SS04BA CS=04BA IP0

25、1lA NV UP DI NG NZ AC PE NC04BA:0HA CD21 1NT21 前幾行顯示的是寄存器內(nèi)容和8個狀態(tài)標(biāo)志位的狀態(tài),最后一行顯示是下面將要執(zhí)行的指令地址,它對應(yīng)的機(jī)器碼和匯編語句形式。8位狀態(tài)標(biāo)志位的狀態(tài)不是以0或1的形式顯示的,而是用兩個字母顯示的。字母和狀態(tài)對應(yīng)關(guān)系如表所示: 標(biāo)志位名 為1對應(yīng)符 為0對應(yīng)符 OF(溢出標(biāo)志) OV NV DF(方向標(biāo)志) DN UP IF(中斷標(biāo)志) EI DI SF(符號標(biāo)志) NG PL ZF(零標(biāo)志) ZR NZ AF(輔助進(jìn)位) AC NA PF(奇偶標(biāo)志) PE PO CF(進(jìn)位標(biāo)志) CY NC 顯示和修改標(biāo)志位狀態(tài)

26、的命令命令格式: RF系統(tǒng)響應(yīng)是顯示8個狀態(tài)位。例如: OV DN EI NG ZR AC PE CY_(最后為光標(biāo)位置)如果打入回車鍵,將不改變標(biāo)志位的狀態(tài);也可以打入一個或多個新的狀態(tài)符,重新設(shè)置其狀態(tài)。輸入時,各標(biāo)志的次序無關(guān),輸入的各個標(biāo)志之間可以沒有空格。如從光標(biāo)位置開始打入:PONZDINV將改變第一、三、五、七個狀態(tài)位的值。2D(Dump)命令用途:顯示某個存儲區(qū)的內(nèi)容。格式:Daddress或Drange 存儲單元的內(nèi)容用兩種方式顯示:種是每一個存儲單元的內(nèi)容(每一字節(jié))用兩位16進(jìn)制數(shù)顯示;另一種是用相應(yīng)的ASCII字符顯示,句號(.。?)表示不可顯示的字符。l 如果取命令格

27、式:D 后面無地址或范圍參數(shù),將從前次命令顯示后的下一個單元開始顯示40H字節(jié)或80H字節(jié)的內(nèi)容。l 如果取命令格式:D range 則顯示指定地址范圍各單元的內(nèi)容。3E(Enter)命令 用途:顯示和修改存貯單元的內(nèi)容。 格式1:E address list 將內(nèi)容表包括的數(shù)值和字符串的ASCII碼依次置入從指定地址開始的存貯單元。例如: E DS:100 F3“XYZ”8D 從內(nèi)存單元DS:100H至DS:104H的5個單元中依次置入F3H(1個單元),XYZ的ASCII碼(3個單元)和8DH(1個單元)。格式2:E address顯示指定地址單元的內(nèi)容,并等待輸入新的值。 輸入新的值的過

28、程如下: 輸入一個字節(jié)的十六進(jìn)制數(shù),以替換原單元中的內(nèi)容,然后采取下列三種操作的一種。 (1)按空格鍵,則上一個替換要求完成,并且顯示出下一個單元的地址和原有的內(nèi)容。如果想改變它,可直接輸入要修改的值,再按空格鍵,這樣,就可以連續(xù)地進(jìn)行修改。若某一單元的內(nèi)容不需要修改,可直接按空格鍵。(2)按“”號鍵,將在下一行顯示前一單元的地址和內(nèi)容。如果想改變它,可直接輸入要修改的值,然后再按“”,則又顯示前一單元的地址和內(nèi)容,這樣就可連續(xù)地進(jìn)行反向修改。若所示的前一單元的內(nèi)容不需要修改,可直接按“”鍵。 (3) 按回車鍵將結(jié)束E命令。 命令參數(shù)中地址如果不指明段地址,則默認(rèn)段地址為DS。4F(File)

29、命令 用途:在指定的存貯地址范圍內(nèi)置入內(nèi)容表給出的數(shù)值或字符代碼。 格式:F range list 說明:如果list包含的字節(jié)少于range包括的單元數(shù),則把list的字節(jié)重復(fù)置入指定的地址區(qū),直到指定的范圍都置入新值為止。如果list包含的字節(jié)數(shù)多于range包括的單元數(shù),則多出的字節(jié)被忽略。 如果range參數(shù)中不指明段地址,則默認(rèn)段地址為DS。例如: F4BA:100L5 F3'XYZ'8D則從04BA:100至04BA:104的5個單元依次裝入F3 58 59 5A 8D。(二)匯編與反匯編命令1. A(Assemed) 命令用途:先顯示匯編的內(nèi)存地址,等待用戶輸入一

30、條助記符指令。用戶輸入指令并按回車后,DEBUG將把這條指令對應(yīng)的機(jī)器碼順序存放在指定的內(nèi)存單元中,并提示下一地址,等待用戶繼續(xù)輸入下一條指令。若直接按回車,則退出A命令;若在輸入指令時語句有錯誤,則顯示出錯信息,仍然提示當(dāng)前的匯編地址,用戶可重新輸入指令。格式:A address說明:若沒有指定地址,則從“CS:100”單元開始存放。2.U(Unassemed)命令 用途:對于存貯器內(nèi)的指令機(jī)器碼進(jìn)行反匯編,結(jié)果顯示的語句和源程序語句會大部分相同,由于不能反匯編出標(biāo)號、標(biāo)識符等信息,所以與源程序語句有些差別。但在調(diào)試程序時,這個命令常常用于對照機(jī)器碼指令與源程序是否一致。 格式:Uaddre

31、ss或Urange 說明:反匯編過程產(chǎn)生的輸出包括指令的開始地址,指令的機(jī)器碼和指令的源語句。 例:-U:從當(dāng)前地址開始反匯編 也可以從某個地址處開始反匯編 例:-U 200:從CS:200處開始反匯編(三)運行命令1G(Go)命令 用途:執(zhí)行正在調(diào)試的程序。 格式:G=addressaddressaddress 說明:等號及第一個address參數(shù)指明程序執(zhí)行的起點。后面的一個或多個address參數(shù)是設(shè)定的斷點。這個命令可取以下三種格式: (1)G不打入任何參數(shù)。這時從當(dāng)前指令,即從CS:IP指定的地址開始執(zhí)行,并一直執(zhí)行下去。 (2)G=address打入等號和程序執(zhí)行的起始地址。程序開

32、始執(zhí)行后一直執(zhí)行下去。 (3)Gaddressaddressaddress。這種格式意味著起始地址可取(1)或(2)的規(guī)定,可設(shè)一個或多個斷點地址。DEBUG程序中允許最多可設(shè)置10個斷點,這些斷點地址的次序是任意的。所謂斷點是指程序執(zhí)行到這個地址時立即停止,并顯示CPU內(nèi)部所有寄存器的內(nèi)容以及全部標(biāo)志位的狀態(tài)和一條將執(zhí)行的指令。主程序有兩個或多個分支時,可以在每個分支上設(shè)置一個斷點。這樣可以觀察每個分支執(zhí)行的情況。為此可以在G命令中設(shè)置多個斷點。當(dāng)然在一次運行時,只能停在其中的一個斷點上。程序員心中確定了斷點地址后,就可以用G命令來設(shè)置斷點。比如,想把斷點設(shè)置在0120H處,則打人命令: _

33、G0120此時,程序在0120H處停下,并顯示出所有寄存器以及各標(biāo)志位的當(dāng)前值,在最后一行還給出下一條將要執(zhí)行的指令地址、機(jī)器語言和匯編語言。程序員可以從顯示的寄存器的內(nèi)容來了解程序運行是否正確。2T(Trace)命令 用途:執(zhí)行一條或多條指令,每執(zhí)行一條指令將顯示所有寄存器的內(nèi)容和狀態(tài)標(biāo)志位的狀態(tài)。格式:TaddressValue說明:等號及address參數(shù)指明執(zhí)行的開始地址,Value參數(shù)指明執(zhí)行指令的條數(shù)。例如:T3:從當(dāng)前地址往下執(zhí)行三條指令2. P(Process)命令用途:執(zhí)行子程序調(diào)用,或一個循環(huán)指令,或一個中斷指令,或一個重復(fù)字符串指令,在下一個指令時停止。格式:P=addr

34、essvalue說明:當(dāng)調(diào)用一個子程序、一個循環(huán)指令、一個中斷或一個重復(fù)字符串指令時,發(fā)進(jìn)程命令P去執(zhí)行這些指令(作為一個自動操作),在下一個指令時控制返回。注:P命令與T命令的區(qū)別是:當(dāng)執(zhí)行的指令是子程序調(diào)用或一個循環(huán)指令、一個中斷或一個重復(fù)字符串指令時,P命令是一次執(zhí)行到這個進(jìn)程的結(jié)束,而T命令則仍然是一次執(zhí)行一條語句命令。對于執(zhí)行其他單條指令時,它們是一樣的。3. Q(Quit)命令用途:結(jié)束并退出DEBUG程序。格式:Q說明:Q命令不包括把文件寫回磁盤操作,它只是返回到啟動DEBUG之前的狀態(tài)。附錄 TPC-H通用微機(jī)實驗系統(tǒng)使用說明一、TPC-H型實驗臺結(jié)構(gòu)TPC-H型微機(jī)實驗系統(tǒng)為

35、單板式結(jié)構(gòu),結(jié)構(gòu)圖如圖5所示。圖5 TPC-H型微機(jī)實驗臺結(jié)構(gòu)圖6 I/O地址譯碼電路圖7 時鐘電路圖8 邏輯電平開關(guān)電路 圖9 LED顯示電路圖10 七段數(shù)碼管顯示電路圖11 單脈沖電路 圖12 邏輯筆電路圖13 繼電器及驅(qū)動電路 圖14 復(fù)位電路圖15 數(shù)/模轉(zhuǎn)換器DAC0832電路圖圖16 模/數(shù)轉(zhuǎn)換器ADC0809電路1、I/O地址譯碼電路如圖6所示,這里選用PC機(jī)未用的地址空間:280H2BFH共8條譯碼輸出線:Y0Y7,其地址分別是280H287H;288H28FH;290H297H;298H29FH;2A0H2A7H;2A8H2AFH;2B0H2B7H;2B8H2BFH。8根譯碼

36、輸出線在實驗臺上標(biāo)有“I/O地址”處分別由“自鎖緊”插孔引出,供實驗用。2、總線插孔采用“自鎖緊”插座在標(biāo)有“總線”區(qū)引出數(shù)據(jù)總線D7D0;地址總線A9A0;讀、寫信號IOR、IOW;中斷請求信號IRQ;DMA請求信號DRQ1;DMA響應(yīng)信號DACK1及AEN信號,供學(xué)生搭制各種接口實驗電路使用。3、時鐘電路如圖7所示,可以輸出1MHZ,2MHZ兩種信號,供A/D轉(zhuǎn)換器、定時器/計數(shù)器、串行接口實驗使用。4、邏輯電平開關(guān)電路如圖8所示,實驗臺下方設(shè)有8個開關(guān)K7K0,開關(guān)向上撥到“1”位置時開關(guān)開,輸出高電平,向下打到“0”位置時開關(guān)接通,輸出低電平,電路中串接了保護(hù)電阻,使接口電路不直接同+

37、5V、GND相連,可有效的防止學(xué)生因誤操作、誤編程損壞集成電路現(xiàn)象。5、LED顯示電路如圖9所示,實驗臺上設(shè)有8個發(fā)光二極管及相關(guān)驅(qū)動電路(輸入端L7L0),當(dāng)輸入信號為“1”時發(fā)光,為“0”時熄滅。6、七段數(shù)碼管顯示電路如圖10所示,實驗臺上設(shè)有兩個共陰極七段數(shù)碼管及驅(qū)動電路,段碼為同相驅(qū)動器,位碼為反相驅(qū)動器,從段碼與位碼的驅(qū)動器的輸入端(段碼輸入端:a、b、c、d、e、f、g、dp,位碼輸入端:S1、S2)輸入不同的代碼即可顯示不同數(shù)字或符號。7、單脈沖電路如圖11所示,采用RS觸發(fā)器產(chǎn)生,實驗者每按一次開關(guān)即可從兩個插座上分別輸出一個正脈沖及負(fù)脈沖,供“中斷”、“DMA”、“定時器/計

38、數(shù)器”等實驗使用。8、邏輯筆如圖12所示,當(dāng)輸入端Ui接高電平時紅燈(D2)亮;接低電平時綠燈亮。9、繼電器及驅(qū)動電路如圖13所示,實驗臺上設(shè)有一個+5V直流繼電器及相應(yīng)得驅(qū)動電路,當(dāng)其開關(guān)量輸入端輸入數(shù)字量“1”時,繼電器動作:常開觸點閉合、常閉觸點斷開。通過相應(yīng)得實驗使學(xué)生了解開關(guān)量控制的一般原理。10、復(fù)位電路如圖14所示,能在上電時,或按下復(fù)位開關(guān)S2后產(chǎn)生一個高電位的復(fù)位信號供8255、8251等接口芯片使用。11、接口集成電路實驗臺上由微機(jī)原理硬件實驗最常用的接口電路芯片,包括:可編程定時器/計數(shù)器(8253)、可編程并行接口(8255)、數(shù)/模轉(zhuǎn)換器(DAC0832)、模/數(shù)轉(zhuǎn)換器(ADC0809),這里芯片與CPU相連的引線除片選信號CS外都已連好,與外界連接的關(guān)鍵引腳在芯片周圍用“自鎖緊”插座引出,供學(xué)生實驗時使用。在本實驗系統(tǒng)中未用到的引腳,如8255的PB0PB7;8253的CLK2、GATE2、OUT2;ADC0809的IN3IN7都用小圓插孔引出,實驗時可用單股導(dǎo)線引出。另外,數(shù)/模轉(zhuǎn)換器附有雙極性輸出,模/數(shù)轉(zhuǎn)換器附有雙極性輸入插座。具體電路可見下面各 實驗說明。12、跳線開關(guān)(JP)實驗臺上共有3個跳線開關(guān),其中JP1用于I/O實驗與DMA實驗選擇,1、2短路時實驗

溫馨提示

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

評論

0/150

提交評論