實(shí)驗(yàn)二求最大數(shù)最小數(shù)_第1頁(yè)
實(shí)驗(yàn)二求最大數(shù)最小數(shù)_第2頁(yè)
實(shí)驗(yàn)二求最大數(shù)最小數(shù)_第3頁(yè)
實(shí)驗(yàn)二求最大數(shù)最小數(shù)_第4頁(yè)
實(shí)驗(yàn)二求最大數(shù)最小數(shù)_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

實(shí)驗(yàn)二、尋找最大和最小數(shù)實(shí)驗(yàn)一、 實(shí)驗(yàn)?zāi)康?、 學(xué)習(xí)循環(huán)程序結(jié)構(gòu),掌握編寫循環(huán)處理程序的方法和技巧。2、 通過(guò)循環(huán)結(jié)構(gòu)程序熟悉匯編語(yǔ)言程序設(shè)計(jì)的主要方法。3、 了解和掌握程序設(shè)計(jì)過(guò)程中算法的選擇。4、 掌握匯編語(yǔ)言調(diào)試方法。二、 實(shí)驗(yàn)內(nèi)容以buff開(kāi)始的內(nèi)存單元中有9個(gè)有符號(hào)數(shù)(字節(jié)型DB):手動(dòng)輸入9個(gè)數(shù)字請(qǐng)編寫程序,找出最大的數(shù)并存入MAX單元中,同時(shí)也找出最小的數(shù)并存入MIN單元中,在Debug下運(yùn)行程序,查看數(shù)據(jù)區(qū)MAX和MIN的內(nèi)容檢驗(yàn)運(yùn)行結(jié)果。三、 編程過(guò)程1、在數(shù)據(jù)段設(shè)置buff區(qū)(DB)存放10個(gè)被測(cè)試的數(shù),再分別設(shè)置字節(jié)數(shù)據(jù)MAX、MIN。BUFdbMAXdbMINdb2、 通過(guò)一個(gè)循環(huán)程序完成比較,先用第一個(gè)數(shù)與第二個(gè),把較小的數(shù)放在AL中,較大的數(shù)放在AH中。3、 以后每次都用AL與后面的數(shù)比較,把小的總放在AL中;然后再用AH與后面的數(shù)比較,把大的放在AH中;比較結(jié)束后AL和AH分別放最小和最大數(shù)。四、 實(shí)驗(yàn)步驟1、 在EDIT或其它編輯方式下輸入源程序,并以3.ASM名保存。2、 用MASM文件匯編源程序,C>MASM3;3、 用LINK連接程序,C〉LINK3;形成3.EXE文件。4、 在DEBUG調(diào)試環(huán)境下調(diào)試并運(yùn)行3.EXE程序。5、 首先用R指令,然后使用U指令查看自己所編寫的程序,確定斷點(diǎn)后,使用G命令執(zhí)行程序到斷點(diǎn),查看結(jié)果||c:X>debug3.ewe\kkl0000BfliiliHOUUA7:0朋38EDSHOUDS,AXUA7:冊(cè)05SD160@00LEADX400001U479009E409MOVAH,09U47:MBCD21INT211447;00OD6D161800LEADX406181Ui/0011E40RMOVRH.舶Ui/:0013CD21FNI21Ui/:的15B90S00MOVCX,0069Ui/0018EB1A00MOVBX?001AUi7O01B8A27HOUAHJBMJ:a@lDSA07NOVALJBX]:fl01FINC囲-LI1U760283A27〔:HP口1.WXJ1U700227D05JGE眥9lt47:002t8A27MOVAH.EBXl1447:8026EB07JMP002F1U7:002890N(1PIt47:e0293A07CMPAL.tBXl1447:002B7C02JL002F1U7802D8A07MOVRLJBNllt47:002F49DECCKlt47:003075EDJNZ001F1447:003288262400MOV[00241.fiH1U70036A2250OMM[00251,Al1U760398A162600M(JVDL,[0e2611U7:003DB血MOVAH021U7:003FCD21INT21-u1⑷::Q0tl8A162t0BMOVDL4O024]1447;;00t5B402MOVflhl.92Ut/::0Gt7CD31INT211⑷:get?8Ai62seeMOVDL40025]1⑷;;0etDB402MOVHhl.02ULf:BBtFCD31INT21Ml-.:0051B44CMOVfiH.iCMl-0053CD21INT21Ui/::0G55F4HI1IV./::恤568956F6HUVIBP-OAl.DX1⑷;:O0598A4663MOVAL,[BP*081Ukf-.0G5C26ES;lii/:065D38470tCMP[BM*041?AL1⑷;;呱60750FJNZ0071<J=O51pleaseinputnu?ber:123456789知flH=0231 BK=B022 CX=00fl0 DM=0fl31 SP=fl00fl BP=00flGSI=0fl06DI=fl00flDS=1444 ES=1434 SS=1444 CS=1447 IP=0051 NVUPElPLZRHAPECV1447:0051BUG MOVAH.4C程序執(zhí)行輸入9個(gè)數(shù)字:123456789輸出:最大值9,最小值16、程序運(yùn)行結(jié)束后,用DDS:O檢查數(shù)據(jù)區(qū)MAX及MIN內(nèi)容,檢查結(jié)果是否正確。-d1U4:0080U4A:0B9e-d1U4:0080U4A:0B9e1444:00C01444:0006U44:0HI-eT.LJ.五、思考-dds:014U;0080OH0D706C65617365-26696E707574206E,rplea5einputnUU:901Q756D626572an202i-0fl09313233343536unber:$.123456UU:802O3798398039310A0D-24000S9800的0009789.91..* 1444:0030B844148ED88D1600-00B409CD21801618.D !.14U;0040001注舶〔:l)21B90300-BE1A朋HH2707咼!'cU4t:00b0刖?!/IJ陰Hfl2/bHH5Hf]航①冊(cè)n/:3..\..:.i..IUU:W075ED88262keoA225-068A16260002CDuhB$…SC……1444:0070218A1624oeB402CD-218H162500B402CD21Bt4CCI)210H0BBH-H0H0BO900BOBOBBH的的0090腕0600加-的090090甌0600eo09090090甌oe0060-69990093900600600909000000000000-09000090朋00000000090000視000000-0080009000000008⑷090000觀060060-00盹0000000Q0000師朋加E-U]師肺0H師-麗曲H0抽腳I闇師的09009090060060-69090090甌0600601、 查看DOS操作系統(tǒng)把可執(zhí)行程序裝載到的內(nèi)存的首地址及結(jié)束地址。首地址:1447:0000,結(jié)束地址:1447:00532、 查看MAX和MIN的段地址及偏移地址。MAX:1444:0024MIN:1444:00253、 分別計(jì)算數(shù)據(jù)段和代碼段占用的地址空間大小數(shù)據(jù)段:40字節(jié)代碼段:54字節(jié)附:源程序清單:DATASEGMENTSTRDB0AH,0DH,"pleaseinputnumber:",'$'BUFDB?DB10;BUF大小DB10DUP(?);字符個(gè)數(shù)CNT7EQU$-BUF-3;循環(huán)次數(shù)MAXDB?;存放最大數(shù)MINDB?;存放最小數(shù)CRLFDB0AH,0DH,'$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEADX,STR

MOVAH,09HINT21HINPUT:LEADX,BUFMOVAH,0AHINT21HMOVCX,CNT-1MOVBX,OFFSETBUF+2;首地址MOVAH,[BX];假定第一個(gè)數(shù)為最大數(shù)MOVAL,[BX];假定第一個(gè)數(shù)為最小數(shù)LOOP1:INCBX;指向下一個(gè)數(shù)CMPAH,[BX];比較JGENEXT1;AH中數(shù)大MOVAH,[BX]JMPNEXT2;AH中數(shù)小,替換NEXT1:CMPAL,[BX];比較JNGENEXT2MOVAL,[BX];AL中數(shù)大,替換NEXT2:DECCXJNZLOOP1;循環(huán)MOVMAX,AHMOVMIN,AL;存儲(chǔ)最大數(shù)MOVDL,CRLFMOVAH,02INT21HMOVDL,MAXMOVAH,02INT21HMOVDL,MINMOVAH,02INT21HMOVAH,4CHINT21HCODEENDSENDSTAR實(shí)驗(yàn)三、統(tǒng)計(jì)學(xué)生成績(jī)實(shí)驗(yàn)步驟1、2、_lb步.1、2、_lb步.3、4、用MASM文件匯編源程序,C>MASMt;如有錯(cuò)誤,回到第一步,如沒(méi)錯(cuò)誤,到第三用LINK連接程序,C〉LINKt;形成t.EXE文件。在DEBUG環(huán)境下運(yùn)行調(diào)試程序:C>DEBUGt.EXE回車,使用U命令反匯編自己編寫的程序,查找到斷點(diǎn)地址,用G命令使程序執(zhí)行到完成初始化的功能;|C:\>debcjgt1U6:Q000跑皿MOVAX.1U41446:00038ED8MOVDS.AH1446:000533CBXGRAH.AH1U6;0007B9140OMOVCX.00141U6;000R8D1E00G0LEABK.[0060]803F3C[:MPBVTEPTR[BK1,3C1U6:00117C22JL汕呱1U6:0013EB01JMP99161U6:00159GNOPlt46:0016803F46CMPBYTEPTR[3X1,461446:00197C22JL003D1U6;001BEB01JMPB01E1U6;001D90NOP1446:001E-g=0R803F50CMPBVTEPTR[0X1,50Ia^6900BK=0090CH=001iDX=0089SP=0060BP=0900SM00601=0090iDS-liiiES=U34SS=1444CS=14t6IP=0O0ANVJPElPLZRNAPEHDll^6:O0BASDlEmaLEADS:em=^E985、 此時(shí)使用D命令查看數(shù)據(jù)段的內(nèi)容,是否有學(xué)生的分?jǐn)?shù)并查看s5、s6、s7、s8、s9、s10字節(jié)變量的地址及內(nèi)容。7000066630888000800000005009988840-011_0004000099900EBB6-6-67000066630888000800000005009988840-011_0004000099900EBB6-6-6501EE210A0D22BBB50822EEE400CC11160077000A046A00040145000--------309FF46830B33111一一000066630C8800030300000603998887081180050D0029989EBB4EE248EE7103D4222BB421222EEE04CCC1146477700848C040035B35600數(shù)據(jù)段有學(xué)生的分?jǐn)?shù),S51444:0014內(nèi)容為0;S61444:0015內(nèi)容為0;S71444:0016內(nèi)容為0;S81444:0017內(nèi)容為0;S91444:0018內(nèi)容為0;S101444:0019內(nèi)容為0;6、然后查找程序功能結(jié)束的命令對(duì)應(yīng)的斷點(diǎn)地址,用G命令使程序運(yùn)行到斷點(diǎn);G命令執(zhí)行程序,程序結(jié)果如下:-g=uuy5^3431AK=4C91BN=0ei4DS=14UES<434-g=uuy5^3431AK=4C91BN=0ei4DS=14UES<43414t6:00C9CD21CM=0000DX=0031SP=000GBP=0006SI=0600DI=0600SS=1444CS=1446IP-00C?NVUPElPLNZNHPOMCINT21

7、此時(shí)再使用D命令查看存儲(chǔ)各分?jǐn)?shù)段的學(xué)生人數(shù)是否正確。^71^7101234567:s 384E432857633F33-4A645A50U^71^7101234567:s 3C7C22EB0190803F-467C22EB0190803F507C22EB0190803F-5A7C22EB0190803F647C227428809614-0001EB26908006150001EBIE90800616-0001EB16908006170001EB0E90800618-0001EB0690800619各分?jǐn)?shù)段的學(xué)生人數(shù)正確實(shí)驗(yàn)四、查找字符一、實(shí)驗(yàn)步驟1、 在EDIT或其它編輯方式下輸入源程序,并以5.ASM名保存。2、用MASM文件匯編源程序,C〉MASM5;如有錯(cuò)誤,回到第一步,如沒(méi)錯(cuò)誤,到第三3、 用LINK連接程序,C〉LINK5;形成5.EXE文件。4、 運(yùn)行程序:C>5.EXE回車執(zhí)行結(jié)果為:在屏幕上先顯示提示信息,例如pleaseenter:后,等待鍵盤輸入字符,輸入字符AABBCCDDEEFFGG,輸入結(jié)束后應(yīng)在屏幕出現(xiàn)CHAR字符出現(xiàn)的次數(shù):-g=?taPleaseinputchars:AABBCCDDEEFFGGi=則?E=0002D=O002C=0002B=0092A=0002AH=00OD BX=001t CM=0B04 DH=0032 SP=FFFE BP=Ofl00SM0O0DI=0OB0DS=1U4 ES=143t SS=14U CS=1U4 IP=00E4NVUPElPL?RNRPENCC3 RET附實(shí)驗(yàn)三源程序:DATASEGMENTSCORE DB56,78,67,40,87,99,63,51,74,100,90,80,68,88,55,66,84,96,45,73NUM_UNDER60DB0NUM_60TO69DB0NUM_70TO79DB0NUM_80TO89DB0NUM_90TO99DB0NUM_100DB0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXXORAX,AXMOVCX,20LEABX,SCORECOMPARE:CMPBYTEPTR[BX],60JLUNDER60JMPIS60TO69IS60TO69:CMPBYTEPTR[BX],70JL_60TO69JMPIS70TO79IS70TO79:CMPBYTEPTR[BX],80JL_70TO79JMPIS80TO89IS80TO89:CMPBYTEPTR[BX],90JL_80TO89JMPIS90TO99IS90TO99:CMPBYTEPTR[BX],100JL_90TO99JZEQUAL100UNDER60:ADDNUM_UNDER60,1JMPCON_60TO69:ADDNUM_60TO69,1JMPCON_70TO79:ADDNUM_70TO79,1JMPCON_80TO89:ADDNUM_80TO89,1JMPCON_90TO99:ADDNUM_90TO99,1JMPCONEQUAL100:ADDNUM_100,1CON:LEABX,[BX+1]LOOPCOMPARELAST:MOVDL,NUM_UNDER60ADDDL,30HMOVAH,2INT21HMOVDL,''MOVAH,2INT21HMOVDL,NUM_6OTO69ADDDL,30HMOVAH,2INT21HMOVDL,''附實(shí)驗(yàn)四源程序:MOVAH,2INT21HMOVDL,NUM_70TO79ADDDL,30HMOVAH,2INT21HMOVDL,''MOVAH,2INT21HMOVDL,NUM_80TO89ADDDL,30HMOVAH,2INT21HMOVDL,''MOVAH,2INT21HMOVDL,NUM_90TO99ADDDL,30HMOVAH,2INT21HMOVDL,''MOVAH,2INT21HMOVDL,NUM_100ADDDL,30HMOVAH,2INT21HMOVAH,4CHINT21HCODEENDSENDSTARTN50Equ

;輸入50個(gè)字符CodeOSegmentAssumeSS:Code0,CS:Code0,DS:Code0MainProcFarStart:MovAX,Code0MovSS,AXMovDS,AXJmpBeginChar0DB0intCountDB0TableDBN+1,?,NstrMessageDBchars',10,13,36'PleaseDup(0)inputBegin:LeaDX,strMessageMovAH,9Int21H提示輸入字符串LeaDX,TableMovAH,10CmpBX,AX;是否地址已經(jīng)超出范圍?JzSub4是CmpBytePtr[BX],0該地址是否有字符?JnzSub1有Int21H得到字符串PushDXCallSubProcJmpSub0Sub1:CmpChar0,0 ;判斷是否已有字符要記數(shù)?ExitO:MovAH,4CHInt21HMainEndPSubProcProcNearPopAXPopBXPushAXIncBX;得到輸入的實(shí)際字符串的長(zhǎng)度的地址MovAX,BX;備份地址,供判斷用!AddBL,[BX]得到該字符串的最后一個(gè)字符的地址PushBX ;保存地址IncBX ;地址預(yù)先加一Sub0:DecBX地址減一TOC\o"1-5"\h\zJnzSub2 ;有MovCH,BytePtr[BX]MovChar0,CH ;沒(méi)有,置初始字符.Sub3:MovBytePtr[BX],0 ;清空該字符IncintCount ;力口一JmpSub0Sub2:MovCH,BytePtr[BX]Cmp Char0,CH ;判斷該地址的字符是否要記數(shù)的字符?Jnz Sub0 ;不是JmpSub3Sub4:CmpC

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論