實驗二循環(huán)程序設(shè)計new_第1頁
實驗二循環(huán)程序設(shè)計new_第2頁
實驗二循環(huán)程序設(shè)計new_第3頁
實驗二循環(huán)程序設(shè)計new_第4頁
實驗二循環(huán)程序設(shè)計new_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實驗二 循環(huán)程序設(shè)計一、實驗?zāi)康?1) 加深對循環(huán)結(jié)構(gòu)的理解。 2) 掌握循環(huán)程序的設(shè)計方法。 二、實驗內(nèi)容 將從3000H內(nèi)存單元開始的100個字節(jié)存儲單元全部清0。 要求:先在在DEBUG調(diào)試狀態(tài)下進行,然后在dos下進行masm和link進行。過程包括匯編程序、運行程序、檢查結(jié)果。 三、實驗設(shè)備 PC機一臺四、實驗步驟 1) 輸入源程序并檢查無誤。 2) 對內(nèi)存單元3000H開始的100個存儲單元用E命令輸入任意數(shù)。 3) 程序用DEBUG的T命令單步跟蹤執(zhí)行。4) 程序用DEBUG的G命令執(zhí)行。5) 用D命令檢查執(zhí)行結(jié)果。 6) 用宏匯編格式寫源程序。7) 對源程序進行編譯、連接、運行

2、。五、實驗報告的要求 1) 列出源程序。 2) 對程序中用到的寄存器說明其功能。1、數(shù)據(jù)寄存器數(shù)據(jù)寄存器主要用來保存操作數(shù)和運算結(jié)果等信息,從而節(jié)省讀取操作數(shù)所需占用總線和訪問存儲器的時間。32位CPU有4個32位的通用寄存器EAX、EBX、ECX和EDX。對低16位數(shù)據(jù)的存取,不會影響高16位的數(shù)據(jù)。這些低16位寄存器分別命名為:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。4個16位寄存器又可分割成8個獨立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每個寄存器都有自己的名稱,可獨立存取。程序員可利用數(shù)據(jù)寄存器的這種“可分可合”的特性,

3、靈活地處理字/字節(jié)的信息。寄存器AX和AL通常稱為累加器(Accumulator),用累加器進行的操作可能需要更少時間。累加器可用于乘、除、輸入/輸出等操作,它們的使用頻率很高;寄存器BX稱為基地址寄存器(Base Register)。它可作為存儲器指針來使用; 寄存器CX稱為計數(shù)寄存器(Count Register)。在循環(huán)和字符串操作時,要用它來控制循環(huán)次數(shù);在位操作中,當(dāng)移多位時,要用CL來指明移位的位數(shù);寄存器DX稱為數(shù)據(jù)寄存器(Data Register)。在進行乘、除運算時,它可作為默認的操作數(shù)參與運算,也可用于存放I/O的端口地址。在16位CPU中,AX、BX、CX和DX不能作為

4、基址和變址寄存器來存放存儲單元的地址,但在32位CPU中,其32位寄存器EAX、EBX、ECX和EDX不僅可傳送數(shù)據(jù)、暫存數(shù)據(jù)保存算術(shù)邏輯運算結(jié)果,而且也可作為指針寄存器,所以,這些32位寄存器更具有通用性。2、變址寄存32位CPU有2個32位通用寄存器ESI和EDI。其低16位對應(yīng)先前CPU中的SI和DI,對低16位數(shù)據(jù)的存取,不影響高16位的數(shù)據(jù)。寄存器ESI、EDI、SI和DI稱為變址寄存器(Index Register),它們主要用于存放存儲單元在段內(nèi)的偏移量,用它們可實現(xiàn)多種存儲器操作數(shù)的尋址方式,為以不同的地址形式訪問存儲單元提供方便。變址寄存器不可分割成8位寄存器。作為通用寄存器

5、,也可存儲算術(shù)邏輯運算的操作數(shù)和運算結(jié)果。它們可作一般的存儲器指針使用。在字符串操作指令的執(zhí)行過程中,對它們有特定的要求,而且還具有特殊的功能。3) 總結(jié)計數(shù)控制循環(huán)程序的設(shè)計方法。 1.計數(shù)控制型循環(huán)程序設(shè)計這種程序設(shè)計方法直觀,方便,但必須在循環(huán)次數(shù)已知的的條件下才能采用。2.條件控制型循環(huán)程序設(shè)計在實際工作中,有時循環(huán)次數(shù)無法事先確定,但循環(huán)次數(shù)與問題中的某些條件有關(guān),這時就應(yīng)根據(jù)給定的條件滿足與否來判斷是否結(jié)束循環(huán)。3.多重循環(huán)程序設(shè)計 在實際工作中,一個循環(huán)結(jié)構(gòu)常常難以解決實際應(yīng)用問題,所以人們引入了多重循環(huán)。這些循環(huán)是一層套一層的,因此又稱為循環(huán)的嵌套。注意:(1)內(nèi)層循環(huán)必須完全

6、包含于外層循環(huán)內(nèi),不允許循環(huán)結(jié)構(gòu)交叉。(2)轉(zhuǎn)移指令只能從循環(huán)結(jié)構(gòu)內(nèi)轉(zhuǎn)出或可在同層循環(huán)內(nèi)轉(zhuǎn)移,而不能從一個循環(huán)結(jié)構(gòu)外轉(zhuǎn)入該循環(huán)結(jié)構(gòu)內(nèi)。4) 說明實驗過程。六、思考題如果把清0改成置FFH,程序又應(yīng)如何修改?如果單元以字為單位,程序又應(yīng)如何修改?附:DEBUG調(diào)試程序 DEBUG.EXE程序是專門為分析、研制和開發(fā)匯編語言程序而設(shè)計的一種調(diào)試工具,具有跟蹤程序執(zhí)行、觀察中間運行結(jié)果、顯示和修改寄存器或存儲單元內(nèi)容等多種功能。它能使程序設(shè)計人員或用戶觸及到機器內(nèi)部,因此可以說它是80X86CPU的心靈窗口,也是我們學(xué)習(xí)匯編語言必須掌握的調(diào)試工具。 1)DEBUG程序使用在DOS提示符下鍵入命令:

7、CDEBUG 盤符:路徑文件名.EXE參數(shù)1參數(shù)2 這時屏幕上出現(xiàn)DEBUG的提示符“-”,表示系統(tǒng)在DEBUG管理之下,此時可以用DEBUG進行程序調(diào)試。若所有選項省略,僅把DEBUG裝入內(nèi)存,可對當(dāng)前內(nèi)存中的內(nèi)容進行調(diào)試,或者再用N和L命令,從指定盤上裝入要調(diào)試的程序;若命令行中有文件名,則DOS把DEBUG程序調(diào)入內(nèi)存后,再由DEBUG將指定的文件名裝入內(nèi)存。2)DEBUG的常用命令(1)匯編命令 A格式:A起始地址功能:將輸入源程序的指令匯編成目標(biāo)代碼并從指定地址單元開始存放。若缺省起始地址,則從當(dāng)前CS:100地址開始存放。A命令按行匯編,主要是用于小段程序的匯編或?qū)δ繕?biāo)程序的修改。

8、 (2)反匯編命令 U 格式1:U=起始地址 格式2:U=起始地址結(jié)束地址|字節(jié)數(shù) 功能:格式1從指定起始地址處開始將32個字節(jié)的目標(biāo)代碼轉(zhuǎn)換成匯編指令形式,缺省起始地址,則從當(dāng)前地址CS:IP開始。 格式2將指定范圍的內(nèi)存單元中的目標(biāo)代碼轉(zhuǎn)換成匯編指令。(3)顯示、修改寄存器命令 R格式:R寄存器名功能:若給出寄存器名,則顯示該寄存器的內(nèi)容并可進行修改。缺省寄存器名,則按以下格式顯示所有寄存器的內(nèi)容及當(dāng)前值(不能修改)。 AX=0000 BX=0004 CX=0020 DX=0000 SP=0080 BP=0000 SI=0000 DI=0000 DS=3000 ES=23A0 CS=138

9、E IP=0000 NV UP DI PL NZ NA PO NC 138E:0000 MOV AX,1234 -R AX ;輸入命令 AX 0014 ;顯示AX的內(nèi)容 : ;供修改,不修改按回車。 若對標(biāo)志寄存器進行修改,輸入:-RF 屏幕顯示如下信息,分別表示OF、DF、IF、SF、ZF、AF、PF、CF的狀態(tài)。 NV UP DI PL NZ NA PO NC不修改按回車鍵。要修改需個別輸入一個或多個此標(biāo)志的相反值,再按回車鍵。R命令只能顯示、修改16位寄存器。(4)顯示存儲單元命令 D格式1:D起始地址 格式2:D起始地址結(jié)束地址|字節(jié)數(shù) 功能:格式1從起始地址開始按十六進制顯示80H個

10、單元的內(nèi)容,每行16個單元,共8行,每行右邊顯示16個單元的ASCII碼,不可顯示的ASCII碼則顯示“”。格式2顯示指定范圍內(nèi)存儲單元的內(nèi)容,其他顯示方式與格式1一樣。如果缺省起始地址或地址范圍,則從當(dāng)前的地址開始按格式1顯示。例如:-D 200;表示從DS:0200H開始顯示128個單元內(nèi)容-D 100 120;表示顯示DS:0100-DS:0120單元的內(nèi)容 說明:在DEBUG中,地址表示方式有如下形式: 段寄存器名:相對地址,如:DS:100段基值:偏移地址(相對地址),如:23A0:1500(5)修改存儲單元命令 E格式1:E起始地址 內(nèi)容表 格式2:E地址 功能:格式1按內(nèi)容表的內(nèi)

11、容修改從起始地址開始的多個存儲單元內(nèi)容,即用內(nèi)容表指定的內(nèi)容來代替存儲單元當(dāng)前內(nèi)容。例如:E DS:0100 VAR 12 34表示從DS:0100 為起始單元的連續(xù)五個字節(jié)單元內(nèi)容依次被修改為V、A、R、12H、34H。格式2是逐個修改指定地址單元的當(dāng)前內(nèi)容。如:E DS:0010 156F:0010 41.5F其中156F:0010單元原來的值是41H,5FH為輸入的修改值。若只修改一個單元的內(nèi)容,這時按回車鍵即可;若還想繼續(xù)修改下一個單元內(nèi)容,此時應(yīng)按空格鍵,就顯示下一個單元的內(nèi)容,需修改就鍵入新的內(nèi)容,不修改再按空格跳過,如此重復(fù)直到修改完畢,按回車鍵返回DEBUG“-”提示符。如果在

12、修改過程中,將空格鍵換成按“-”鍵,則表示可以修改前一個單元的內(nèi)容。(6)運行命令 G格式:G=起始地址第一斷點地址第二斷點地址功能:CPU從指定起始地址開始執(zhí)行,依次在第一、第二等斷點處中斷。若缺省起始地址,則從當(dāng)前CS:IP指示地址開始執(zhí)行一條指令。最多可設(shè)置10個斷點。(7)跟蹤命令 T格式:T=起始地址正整數(shù)功能:從指定地址開始執(zhí)行正整數(shù)條指令,若缺省正整數(shù),表示執(zhí)行一條指令,若兩項都缺省,表示從當(dāng)前CS:IP指示地址開始執(zhí)行一條指令。(8)指定文件命令 N 格式:N功能:指定即將調(diào)入內(nèi)存或從內(nèi)存寫入磁盤的文件名。該命令應(yīng)該用在L命令和W命令之前。(9)裝入命令 L 格式1:L起始地址盤符號扇區(qū)號扇區(qū)數(shù) 格式2:L起始地址 功能:格式1根據(jù)盤符號,將指定扇區(qū)的內(nèi)容裝入到指定起始地址的存儲區(qū)中。格式2將N命令指出的文件裝入到指定起始地址的存儲區(qū)中,若省略起始地址,則裝入到CS:100處或按原來文件定位約定裝入到相應(yīng)位置。(10)寫磁盤命令 W格式1:W

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論