匯編語言子程序?qū)嶒瀇第1頁
匯編語言子程序?qū)嶒瀇第2頁
匯編語言子程序?qū)嶒瀇第3頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、實驗四子程序?qū)嶒?一)本實驗的目的在于讓讀者掌握同一模塊調(diào)用的方法。(1) 實驗?zāi)康恼莆罩鞒绦蚺c子程序之間的調(diào)用關(guān)系及調(diào)用方法。(2) 掌握子程序調(diào)用過程中近程調(diào)用與遠(yuǎn)程調(diào)用的區(qū)別。(3) 掌握通過堆棧轉(zhuǎn)送參數(shù)的方法。(1) 實驗內(nèi)容將BUF開始的10個單元中的二進(jìn)制數(shù)轉(zhuǎn)換成兩位十六進(jìn)制數(shù)的ASCII碼,在屏幕上顯示出來。要求碼型轉(zhuǎn)換通過子程序HEXA藪現(xiàn),在轉(zhuǎn)換過程中,通過子程序DISP實現(xiàn)顯示.(2) 編寫一個主程序,從鍵盤接收若干個字符,然后用遠(yuǎn)調(diào)用的方法,調(diào)用子程序統(tǒng)計字符串中字符b'的個數(shù).子程序的參數(shù)是字符串的首地址TABLE,字符串長度N及字符”b”.子程序返回字符”b”

2、的個數(shù).參數(shù)傳送采用堆棧實現(xiàn).主程序在子程序返回后,顯示字符”b”及其個數(shù)(設(shè)為一位十六進(jìn)制數(shù)).1. 實驗說明(1) 第一個實驗程序用子程序的近程調(diào)用實現(xiàn)。由于在調(diào)用HEXAS樣程序時,子程序乂調(diào)用了DISP子程序,這叫子程序的嵌套調(diào)用。實驗過程中可以從堆棧的內(nèi)容看到兩個子程序的返回地址值。由于是近調(diào)用,地址值只包括返回地址的段內(nèi)偏移雖。在每個子程序的執(zhí)行中,檢查CS值是不變的。(2) 第二個程序是利用遠(yuǎn)調(diào)用的方法調(diào)用子程序的。在遠(yuǎn)調(diào)用情況下,主程序與子程序處在不同的邏輯代碼段中,可在子程序執(zhí)行中查看CS值,它與主程序中的CS值是不同的。子程序調(diào)用后,堆棧中保留了返回地址的段地址及段內(nèi)偏移雖

3、。(3) 第二個程序中,主程序與子程序之間參數(shù)的傳送是由堆棧實現(xiàn)的。一段是將參數(shù)(此處是串首址TABLE串的長度N及待統(tǒng)計的字符“b”)順序壓如堆棧,在子程序調(diào)用后,通過BP指針對堆棧中的參數(shù)訪問,并將統(tǒng)計的結(jié)果通過堆棧返回。有關(guān)該方法的原理此處不再介紹。(1) 實驗準(zhǔn)備預(yù)習(xí)子程序設(shè)計的基本方法,根據(jù)實驗內(nèi)容要求,畫出子程序及主程序的流程圖。(2) 熟悉鍵盤鍵入字符串及用堆棧傳送參數(shù)的程序段編制方法。2. 實驗步驟(2) (1)編輯、匯編兩個源程序,生成相應(yīng)的可執(zhí)行文件(。EXE用DEBU曲R命令,T命令或G命令和D命令檢查遠(yuǎn)程調(diào)用及近程調(diào)用時堆棧的變化。特別是通過堆棧傳送的參數(shù)和子程序取出的

4、參數(shù)是返回參數(shù)的詳細(xì)過程。(3) 檢查程序執(zhí)行的結(jié)果是否正確。(1) 實驗報告要求分析遠(yuǎn)程調(diào)用與近程調(diào)用的區(qū)別,在用DEBUG有關(guān)命令觀察時,執(zhí)行過程有何不同。(2) 說明用堆棧傳送參數(shù)的過程及其具體方法。(3) 分析實驗結(jié)果及所遇到問題,并說明解決的方法。參考程序清單(1)碼型轉(zhuǎn)換程序清單:;CONV.ASNDATASEGMENTBUFDB0ABH,0CDH,0DEH,01H,02H,03HDB3AH,4BH,5CH,6FHDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVCX,10LEABX,BUFAGAI

5、N:MOVAL,BXCALLHEXASCINCBXLOOPAGAINMOVAH,4CHINT21HHEXASCPROCNEARMOVDL,ALPUSHCXMOVCL,4SHRDL,CLPOPCXCALLDISP;顯示高位HEX數(shù)MOVDL,ALANDDL,0FHCALLDISPRETHEXASCENDPDISPPROPCMPDL,9JBENEXTADDDL,7NEXT:ADDDL,30HMOVAH,2INT21H;顯示RETDISPENDPCODEENDSENDSTART(2)統(tǒng)計并顯示某鍵入字符的個數(shù)的程序:COUNTER.ASMDATASEGMENTCHARDB七BUFDB50H,?50H

6、DUPDATAENDSMCODESEGMENTASSUMECS:MCODE,DS:DATASTART:MOVAX,DATALEADX,BUFMOVAH,9INT21HLEASIBUFMOVCL,SI+1中為字符串長度指向串首址TABLE中為待查字符MOVCH,0;CXINCSIINCSI;SIMOVAL,CHARMOVAH,0;AXPUSHSIPUSHCXPUSHAX;參數(shù)送堆棧CALLCHECKPOPAX:統(tǒng)計個數(shù)在AL中MOVDL,CHARMOVAH,2INT21HMOVDL,ALANDDL,0FHCMPDL,9JBENEXTADDDL,7NEXT:ADDDL,30HMOVAH,2INT2

7、1H;顯示統(tǒng)計個數(shù)MOVAH,4CHINT21HMCODEENDSSCODESEGMENTASSUMECS:SCODECHECKPROCFARPUSHBPMOVBP,SPMOVSI,BP+10MOVCX,BP+8MOVAX,BP+6XORAH,AHAGAIN:CMPAL.SIJNENEXT1INCAHNEXT1:INCSILOOPAGAINMOVBP+10,AXPOPBPRET4CHECKENDPENDSTARTC;TIIiDOISsystB32ci.(J*&se-DelucC:UUS456*ETE4C5:00878D3鏘施。LEAGU0900DS:0080-9100*=14G4lS=

8、1*1C44C5:000B-D14C4-4C4:14C014C4:14V04C4:14E04C4:14F04G4:lSe014:15104C4:1520'4C-*:±53014C4:1540<1麗麗'4C4:eei04C4:跚四kCd:00O0,4C4:00404C4:B0L84C4:00604C4:0070BX=0900ES-14B4E80D00B8385=8968B8E2EeF50C888E055E5EED00001DOC400FE0B5760302CD760AD2BlCK=SQ0ASP=麗麗S3=1404CS=14CSIPOBBECALL001SJBP=0

9、S00SI=0000DI=6006NUUPElFLNZMAFONCECE4EC980746FF班26063FE6DCBlFF743E或ES13ED00-SB76-B42A-S35A-27F8-fE0B-C019-019724SE8404008?09SB46U.$4-FB4366(d94B0D44034585790C051088ED40814465c9BB224533AC2c?E8C0DBBCBFD2688ESF574EE-D4B43r70D0C082DL75OAB45DEEDi20-E2DD3GE4-4C0012CD-2190-8BUB-E5FEC9C:¥IWDOISsysteB32

10、ci.(i.eze-DebugC:kUSIX456«EIES=14C4-D14C44G4:14C04C4;14»014C4:14E04C4:14F014G4:156a4C4:1510434:15504C4:1504C4:154ad00004C4:0(dUU14C4:9Q104C4:A02R4C4:SQ304C4:O0404C4汩臉0C4:00C04C4:007OES-14B4E80D0RB8385896HB8E2E8FS0C08&E055ESEED014E53DAl0CFB0C0B080462620BOB707DSS-14C4CS-14CSIP-60OBcalleo

11、ivCb40ECFF7t匾BM0F56E8EC2656Bl76NA83C407削0$4&M3FF6跚56E6EB0B0100-8HC35EFF%-64ESM742A®3C4043E5A-2?FF00QZE8-EE3FB?EGC1B-CQ7S09iai?-ei?4asEB97T4894600ff436609480D44034585990G051088ED40814465C9BB22J1533RC2C7E8G0DBBCBFD2688E8F574EED_24-F20104-M-100O2D-MU2Bl?5BAD45D5EDL20£2HD-36IM4G80-E2CD-219

12、0-fiBOB5FE-C9E2OSCDQFFEIE5D3000000000EB0000E8HEM1C4GG3DIG2308QFA3975E6B228D4258A003S01?BDD%F22D0346F683D2FONC001020304829320E252royruLinternklria.led感l(wèi)lyc<C:¥IND0»SsysteB32CID.exe一DEBUGC:IASI789.EXEMicrosoft(R>OverlayLinkerUei*sion3.60Cupyrlyht<C>MicrosoftCorp1983-1987.ft11rlyhtsreserved.RunFile789.EXE:ListFiletNUL.MAPJ:Libraries.LIBI-LINK:warningL4021:nostacksegmentC:nasn>CD.C:>BEBUGC:MASM789.EXE-TAX-14C4DX-0000CX-00F9DX-0000sr-0000DP-0000SI-0000DI-0000DS=14B4ES-14B4SS-14C4CS=14CAIP-0003NUUPElPLH

溫馨提示

  • 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

提交評論