2023年匯編實驗報告_第1頁
2023年匯編實驗報告_第2頁
2023年匯編實驗報告_第3頁
2023年匯編實驗報告_第4頁
2023年匯編實驗報告_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

合肥工業(yè)大學(xué)

計算機(jī)與信息學(xué)院實驗報告課程:匯編語言程序設(shè)計專業(yè)班級:學(xué)號:姓名:?實驗一Debug程序的使用avgdb?maxdbOdh,Oah,?mindb0dh,Oah,?dsegendscsegsegmentassumecs:cseg,ds:dsegstart:movax,dsegmovds,axmovex,50movax,0movbh,()movb1,100movsi,()addal,score[si]adcah,0incsioop1movdx,sidivdlmovavg,almovcx,50movsi,()empscore[si],bhjbes1movbh,score[si1incsioop11movex,50movsi,0I2:empscore[si],bljas2movb1,score[si]incsiloop12movaLblmovah,0movcl,10divc1empal,()jzgwlcmpa1,10jzmflmovch,ahaddah30hmovdl,almovah,2int21haddch,30hmovdhchmovah,2int21hjmpdonelgwl:movdl.ahaddd1,3Ohmovah,2int21hjmpdonelmfl:movd1,31hmovah,2int21hmovdl,30hmovah,2int21hmovd1,30hmovah,2int21hdonel:movdl,0dhmovah,2int21hmovd1,Oahmovah,2int21hmoval,bhmovah,0movc1,10divc1cmpa1,0jzgwcmpal,10jzmfmovch,ahadda1,30hmovdl,almovah,2int21haddch,30hmovdl,chmovah,2int2Ihjmpdonegw:movdl,ahaddd1,30hmovah,2int2Ihjmpdonemf:movdl,3Ihmovah,2int21h

movd1,30hmovah,2int21hmovd1,3Ohmovah,2int2Ihdone:movah,4chint21hcsegendsendstartH0A

B00lhll

AACCuuuu

OOOIMMMDH00F0BA3Ac:0H23C0D***DL0L0HLLH1HLH10A0A0CADA2CDA203、從鍵盤讀入一個字符串,以Enter結(jié)束,字符串不超過AHppUDUUTDUUTPPUMZMZODOONDOONMOOCJCJMAMMIAMMIJNMH0A

B00lhll

AACCuuuu

OOOIMMMDH00F0BA3Ac:0H23C0D***DL0L0HLLH1HLH10A0A0CADA2CDA203、從鍵盤讀入一個字符串,以Enter結(jié)束,字符串不超過AHppUDUUTDUUTPPUMZMZODOONDOONMOOCJCJMAMMIAMMIJNM1400:00998AC71400:0096B4001400:009DBl0A1400:009FF6F11400:00Al.3c001400:00A3741A1400:00A53c0A1400:00A7?4221400:00A98AEC1400:00AB04301400:00AD8AD01400:00AFB4021400:00B1CD211400:006380c5301400:00B68AD51400:0068B4021400:00BACD211400:00BCEB1F1400:00BE901400:00BF8AD4g00

一69出‘Yes';否則,輸出"NoOodatasegmentsidb51,?,51dup('$')s3db0ah,0dh;Yes$'s4dbOah,Odh,'No$'dataendsdsegsegments2db'asm'dsegendscsegsegmentassumecs:cseg,ds:data,es:dsegstart:movax,datamovds,axmovax,dsegmoves,axleadx,slmovah,Oahint21hmovd1,0dhmovah,2int21hmovdl,Oahmovah,2int21hleadx,s1+2movah,9int21hmovcl,sl+lcmpc1,3jbnotfound1easi,s1leadi,s2movdx,simovbx,dimovah,48cldagain:movcx,3repzcmpsbjzfoundadddx,lmovsi,dxmovdi,bxdecahjnzagainjmpnotfoundjmpoverfound:leadx,s3movah,9int21hjmpovernotfound:1eadx,s4movah,9int21hover:movah,4chint21hcsegendsendstartfadfasnfadfasmYesProgramterminatednormallyd|dfgfdgdfgf:\DOCUME~l\ADMINI~l\??\2013ppt\nasn>三.實驗體會通這次實驗,熟悉了VASM匯編環(huán)境和匯編程序設(shè)計的格式,熟悉在PC機(jī)上建立、匯編、連接、調(diào)試和運營8086/8088匯編語言程序的過程。同時對順序和循環(huán)程序設(shè)計更加純熟,并在編程過程中熟悉了算術(shù)運算、位操作和串操作等指令。算術(shù)運算中,對于不同類型數(shù)進(jìn)行運算時,要進(jìn)行擴(kuò)展,尚有不要忽視進(jìn)位;對于循環(huán)和控制轉(zhuǎn)移指令,假如有多個循環(huán)或轉(zhuǎn)移指令,則前一個循環(huán)或轉(zhuǎn)移結(jié)束后,一定到無條件轉(zhuǎn)移到結(jié)尾處;串操作指令中,源串和目的串分別定義在DS和ES兩個段中的,不能對ES進(jìn)行段超越操作等。實驗三匯編語言子程序設(shè)計(分支、子程序)一.實驗?zāi)康?、掌握分支和子程序結(jié)構(gòu)和設(shè)計方法;2、熟悉在PC機(jī)上建立、匯編、連接、調(diào)試和運營8086/8088匯編語言程序的過程。3、通過匯編語言了解高級語言的參數(shù)傳遞等知識。二.實驗內(nèi)容1、1.BL中的只有一位為1。編寫程序測試,并輸出提醒信息“TheXBitis1”,規(guī)定:地址表和轉(zhuǎn)移表。dsegscgmcntadb2msgOdbOdh,0ah:The0Bitismsg1db0dh,Oah;The1Bitis1';$'msg2dbOdh,0ah/The2Bitis1','$'msg3dbOdh,0ah/The3Bitis1';$'msg4dbOdh,Oah,The4Bitis1'/$'msg5dbOdh,Oah/The5Bitis1';$'msg6dbOdh,0ah,The6Bitis1',msg7db0dh,()ah:The7Bitis1';$'addrtbldwfuncO,funcl,func2,func3,func4,func5,func6,func7dsegendscsegsegmentassumecs:cseg,ds:dsegstart:movax?dsegmovds,axmovcx,8movsi,0movbl,acmpbl,0jzexitshrbijjcIIncsioopIjmpexitI:movax,siandax,Ofhshlax,1movbx,axjmpaddrtbl(bx]funcO:leadx,msgOjmpoutputfuncI:leadx?msgIjmpoutputfunc2:leadx,msg2jmpoutputfunc3:1cadx,msg3jmpoutputfunc4:lcadx,msg4jmpoutput

一.實驗?zāi)康?、熟悉DEBUG程序中的命令,學(xué)會在DEBUG下調(diào)試運營匯編語言源程序。2、掌握8086/8088的尋址方式及多字節(jié)數(shù)據(jù)的解決方法。二.實驗內(nèi)容1、運用DEBUG程序中的“E”命令,將兩個多字節(jié)數(shù)“003F1AE7H”和“006BE5C4H”分別送入起始地址為DS:0200H和DS:0204H兩個單元中。2、分別用直接尋址方式和寄存器間接尋址方式編寫程序段,實現(xiàn)將DS:0200H單元和DS:02O4H單元中的數(shù)據(jù)相加,并將運算結(jié)果存放在DS:0208H單元中。規(guī)定:本次實驗的內(nèi)容均在DEBUG下完畢,實現(xiàn)數(shù)據(jù)的裝入、修改、顯示;匯編語言程序段的編輯、匯編和反匯編;程序的運營和結(jié)果檢查。三.實驗過程和程序1、啟動DOS操作系統(tǒng)2、運營DEBUG.COM程序(若當(dāng)前盤為C)ODEBUGZ為DEBUG提醒符,僅當(dāng)屏幕出現(xiàn)該提醒符后,才可輸入DEBUG命令)3、用“A”命令編輯和匯編源程序186E:0100MOVAX,[0200]/186E:0103MOVBX,[0202]/186E:0107ADDAX,[0204]/186E:010BADCBX,[0206]/func5:1eadx,msg5jmpoutputfunc6:leadx,msg6jmpoutputfunc7:leadx,msg7jmpoutputoutputunovah,9int21hexit:movah,4chini2IhcsegendsendstartC:\DOCUME~l\ADMINI~l\??\2013ppt\nasn>debugdeno5.exe一gThe1Bitis1Programterminatednornallydsegsegmentadb8msgOdbOdh,Oah;TheOBitismsgldbOdh,0ah/The1Bitis1'msg2dbOdh,Oah/The2Bitis1';$1msg3dbOdh,0ah;The3Bitismsg4dbOdh,Oah;The4Bitismsg5dbOdh,Oah;The5Bitis1',msg6dbOdh,()ah,'The6Bitismsg7dbOdh,Oah;The7Bitis1'dsegendscsegsegmentassumecs:cseg,ds:dsegstart:inovax,dsegmovds,axmovex,8movsi,0movbl,acmpbl,0jzexit:shrb1,1jc11incsiloop1jmpcxit11:movax,siandax,0fhmovbx,axsh1ax,laddbx,axaddbx,offsetjmptbljmpbxjmptb1:jmpnearptrfuncOjmpnearptrfunc1jmpnearptrfunc2jmpnearptrfunc3jmpnearptrfunc4jmpnearptrfunc5jmpnearptrfunc6jmpnearptrfunc7func0:1eadx,msg0jmpoutpulfunc1:1eadx,msgljmpoutputfunc2:leadx,msg2jmpoutputfunc3:1eadx,msg3jmpoutputfunc4:leadx,msg4jmpoutputfunc5:leadx,msg5jmpoutputfunc6:leadx,msg6jmpoutputfunc7:leadx,msg7jmpoutputoutput:movah,9int21hexit:movah,4chint21hcsegendsendstartC:\DOCUME~l\fiDMINI~l\??\2013ppt\nasn>debugdeno6.exe-gThe3Bitis1Programterminatednormally2.編寫一個子程序計算z=f(x,y)=x*y+x-y(x,y,z有符號數(shù)內(nèi)存數(shù))。規(guī)定通過堆棧(寄存器、內(nèi)存)傳送所有參數(shù)。dsegsegmentxdb2ydb4zdb?dsegendscsegsegmentassumecs:cseg,ds:dsegstart:movax,dsegmovds,axcallresu1tmovah,4chnt21hresultprocpushaxpushbxmova1,ximulymovbl,xaddaLbIsubal,ymovz,a1popbxpopaxretresultendpcsegendsendstart3FD:000D53PUSHBX3FD:000EA00000MOUAL,[0000]3FD:0011F62E0100IMULBYTEPTR[0001]3FD:00158A1E0000MOUBL,[0000]3FD:001902C3ADDAL,BL3FD:001B2A060100SUBAL,[0001]3FD:001FA20200MOU[0002],ALg=0000000aX=4CFCBX=0000CX=0035DX=0000SP=0000BP=0000SI=0000DI=0000S=13FCES=13ECSS=13FCCS=13FDIP=000ANUUPEIPLNZNAPENC3FD:000ACD21INT21dds:00023FC:0000060000000000-00000000000000003FC:0010B8FC138ED8E80400-B44CCD215053A00。L.tPS..3FC:002000F62E01008AIE00-0002C32A060100A2.3FC:003002005B58C30A5468-6520332042697420..[X..The3Bit3FC:004069732031240D0A54-6865203420426974isl$..The4Bit3FC:00502069732031240D0A-5468652035204269isl$..The5Bi3FC:0060742069732031240D-0A54686520362042tisl$..The6B3FC:00706974206973203124-0D0A546865203?20itis1$..The73FC:00804269Bidatasegmentxdw123ydw56dataendscodesegmentassumecs:code,ds:datastart:?movax,dataomovds,ax?subsp,2pushxpushycallc叩opzmovah,4chint2lhcprocopushbpmovbp,spapushaxpushbx。pushdx-movax,[bp+6]0movbx,[bp+4]omu1bx0movdx,[bp+6]?subdx,bx,addax,dxmov[bp+8],ax叩opdx叩。pbxpopaxpopbpmovah,4chin(21hcodeendsendstartCIKDOCUME1\ADMINIl\??\2013ppt\nasm>debugdemo7.exe13FD:0000B8FC13MOUAX,13FC13FD:00038ED8MOUDS,AX£3FD:000583EC02SUBSP,+0213FD:0008PP360000PUSH[0000]13FD:000CFF360200PUSH[0002]13FD:0010E80800CALL001BL3FD:00138F060400POP[0004J13FD:0017B44CMOUAH,4c13FD:0019CD21INT2113FD:001B55PUSHBP13FD:001C8BECMOUBP,SP13FD:001ES0PUSHAX13FD:001F53PUSHBX-g=00000019ftX=4CFCBX=0000CX=004EDX=0000SP=0000BP=0000SI=0000DI=0000DS=13FC1iS=13ECSS=13FCCS=13FDIP=0019NUUPEIPLNZNAPENC13FD:0019CD21INT21-dds:0f13FC:00007B0038002BIB0000-0000000000000000<.8.?三.實驗體會通過本次實驗,進(jìn)一步熟悉在PC機(jī)上建立、匯編、連接、調(diào)試和運營8086/8088匯編語言程序的過程,通過匯編語言了解了高級語言的參數(shù)傳遞等知識,并熟悉了分支程序和子程序的設(shè)計方法,對于地址表和轉(zhuǎn)移表的概念、使用及其區(qū)別更加熟悉。實驗四匯編語言高級編程專題一.實驗?zāi)康腎、匯編語言宏程序設(shè)計;2、掌握中斷服務(wù)子程序的編寫。3、匯編語言與高級語言的混編。二.實驗內(nèi)容1、編寫一個宏,求三個數(shù)的最小數(shù),原型為:MIN3x,y,z,minshiftmacrox,y,zmovax,xcmpax,yjldonemovax,ydone:cmpax,zj1exitmovax,zexit:movax,axendmcodesegmentassumecs:codestart:shift4,2,3movah,4chint21hcodeends

endstart:'C:\¥IKDO¥S\systeB32\cad.exe-debugde>o8.exe:0000:0003:0006:0008:000B:000E:001B:001D:001Fg=0000B804003D02007C03B802003D03007C03B803008BC0B44CCD210000000000000000001700000XC00B0030A4XX0XX0XXH1AA0AA0fifiA2C02BX=00003F2ES=13F2:001?CD21C02BX=00003F2ES=13F2:001?CD21INT212、掛接1CH中斷,正計時60秒后退出。規(guī)定屏幕顯示0-59的秒數(shù)。INTNOEQUICHUSEINT=1DATASEGMENTOLDISRDW?,?TIMERDB100COUNTERDW0ISDONEDB0DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAX,0MOVES,AXIFUSEINTMOVAL,INTNOMOVAH,35HINT2IHMOVOLDISR[0],BXMOVAX,ESMOVOLDISR[2],AXELSECLIMOVAX,ES:[INTNO*4]MOVOLDISR[0],AXMOVAX,ES:[INTNOM+2]MOVOLDISR[2J,AXSTIENDIFIFUSEINTPUSHDSMOVAX,SEGISRMOVDS,AXMOVDX,OFFSETISR186E:010FMOV[0208],AX/186E:0112MOV[020A],BX/186E:O1I6/4、用“U”命令反匯編驗證源程序-UCS:0100/186E:0100A10002MOVAX,[0200]186E:01038B1E0202MOVBX,[0202J186E:010703060402ADDAXJ0204]186E:010B131E0602ADCBX,[0206]186E:010FA30802MOV[0208],AX186E:0112891E0AO2MOV[020A],BX186E:0116注意:檢查源程序是否有錯誤,若有則返回到第3步用“A地址”命令進(jìn)行修改,直到程序無錯誤。DEBUG約定在其命令或源程序中所涉及到的數(shù)據(jù)均被看作十六進(jìn)制數(shù),其后不用“H”說明。在DEBUG下,源程序中不能使用“標(biāo)號”、“變量”和一些偽指令。在DEBUG下,大小寫不敏感。5、程序未執(zhí)行前,用“R”命令觀測,相關(guān)寄存器的內(nèi)容。-RZ如:(AX)=0000H,(BX)=0000H.(SD=000OH(DI)=00OOH(CS)=0B32H(1P)=010OH6、在程序未執(zhí)行前,用“D”命令觀測DS:0200H,DS:02O4H.DS:0208H單MOVAL,INTNOMOVAH,25HINT2IHPOPDSELSECLIMOVWORDPTRES:lINTNO*4J,OFFSETISRMOVWORDPTRES:[INTNOM+2],SEGISRSTIENDIFWAITHERE:CMPISDONE,60JNZWAITHEREEXIT:IFUSEINTPUSHDSMOVDX,OLDISRfO]MOVAX,OLDISR[2]MOVDS,AXMOVAL,INTNOMOVAH,25HINT2111POPDSELSECLIMOVAX,OLDISR[O]MOVES:[INTNO*4],AXMOVAX,OLDISR[2]MOVES:[INTN0*4+2],AXSTIENDIFMOVAX,4C(X)HINT21HISRPROCFARPUSHDXPUSHAXMOVAX,DATAMOVDS,AXSTIINCTIMERAGAIN:CMPTIMER,1000/55;18JBDONEMOVTIMER,0MOVAH,2MOVDL,13INT21HMOVAX,COUNTERMOVDL,10DIVDLMOVDH,AHMOVDL,ALMOVAH,2ADDDL,30HINT21HMOVDL,DHADDDL,30HINT21HincCOUNTERJGEDONEMOVISDONE,1DONE:PUSHFCALLDWORDPTROLDISRCLIPOPAXPOPDXIRETISRENDPCODEENDSENDSTART

三.實驗體會通過本次實驗,掌握了匯編語言宏程序設(shè)計,熟悉了中斷服務(wù)子程序的基本知識了解了中斷服務(wù)子程序的編寫和匯編語言的編寫,也了解到了中斷服務(wù)子程序與一般子程序在編寫和調(diào)用返回上的不同之處。元的內(nèi)容D20020B/7、用“G”命令運營源程序G=1100116/8、再用“D”命令觀測DS:0200H?DS:020BH字節(jié)單元中的內(nèi)容D20020BZ9、用“T”單步操作命令對源程序單步執(zhí)行,觀測AX、BX、CS、IP寄存器內(nèi)容的變化,并與預(yù)計的結(jié)果相比較。注意:D命令顯示內(nèi)存數(shù)據(jù),注意觀測多字節(jié)數(shù)據(jù)在內(nèi)存中的存放方式。指令執(zhí)行的時候,IP寄存器隨著變化,注意觀測。1、程序運營結(jié)果:(AX)=00ABH、(BX)=00ABHDS:02()8H四字節(jié)單元的內(nèi)容:OOABOOABHCAC:\¥INDO¥S\systeB32\CMD.exe-debugKa1393:0100nouax,02001393:0103C:\DOCUME-1\ADMINI-l>debugax,[0200]bx,[0202]ax,[0204]bx,[0206][0208],ax[020a],bx3f006b001393:0100nou1393:0103nou1393:0107add1393:010Badc1393ax,[0200]bx,[0202]ax,[0204]bx,[0206][0208],ax[020a],bx3f006b00RX=00ABBX=00ABDS=1393ES-13931393:01160000CX=0000DX=0000SP=FFEESS=1393CS=1393IP=0116RX=00ABBX=00ABDS=1393ES-13931393:01160000CX=0000DX=0000SP=FFEESS=1393CS=1393IP=0116ADDCBX+SI],ALDS:00AB=6F2、試用寄存器間接尋址方式編寫程序段,完畢上述程序段的功能。(參考下列程序流程圖)

3、附加題目:1.從DS:0000H開始的5個16位帶符號數(shù)分別記為x,y,z,v,w,用E命令初始化為:540,1,—1,1080,0,試求w=(v—(x*y+z—540))/x1393:01001393:01031393:01071393:010A1393:010C1393:01101393:01131393:01161393:01191393:011D1393:01201393:01221393:01241393:01261393:01281393:012c1393:012E1393:0131nouax,[0000]novbx,[0002]noudx,0imulbxaddadcsubsbbnovnousubsbbnovnounouidiuax,[0004]ax,0ax,021cdx,0bx,[0006]cx,0bx,axcx,dxax,bxdx,cxbx,[0000]bxnou10008Laxg=01000131AX=0002DS=1393BX=021CES=13931393:01310000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000SS=1393CS=1393IP=0131NUUPEIPLZRNAPENCADD[BX+SILALDS:021C=00.完畢BX中1的個數(shù)的記錄。-a1393:0100nou1393:0103xor1393:0105mou1393:0108shr1393:01001393:01031393:01071393:010A1393:010C1393:01101393:01131393:01161393:01191393:011D1393:01201393:01221393:01241393:01261393:01281393:012c1393:012E1393:0131nouax,[0000]novbx,[0002]noudx,0imulbxaddadcsubsbbnovnousubsbbnovnounouidiuax,[0004]ax,0ax,021cdx,0bx,[0006]cx,0bx,axcx,dxax,bxdx,cxbx,[0000]bxnou10008Laxg=01000131AX=0002DS=1393BX=021CES=13931393:01310000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000SS=1393CS=1393IP=0131NUUPEIPLZRNAPENCADD[BX+SILALDS:021C=00.完畢BX中1的個數(shù)的記錄。-a1393:0100nou1393:0103xor1393:0105mou1393:0108shr1393:010Aadc1393:010Dloop1393:010F-g=0100010£XXXbacbaX2a410AX=0001BX=0000DS=1393ES=13931393:010F0015CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000SS=1393CS=1393IP=010FNUUPEIPLNZNAPONCADD【DILDLDS:0000=CD.用用操作指令將DS:000。開始20個字節(jié)初始化為:0CCH。并將這20個字節(jié)的內(nèi)容復(fù)制到其后的20個字節(jié)里。eld393:0101mou.393:0104nou.393:0106nou393:0109rep.393:010Bnou.393:010Dnou393:010Fnou.393:0112mou.393:0115rep393:0117g=100117C4bsX4b0clseb01silxtxsixodacsbdsen)S=1393ES=1393393:0117DA00CX=0000DX=0000SP=FFEEBP=0000SI=0014DI=01SS=1393CS=1393IP=0117NUUPEIPLNZNAPOIFIADDDWORDPTR[BX+SI]-dds:00001393:00001393:0010L393:00201393:00301393:0040L393:0050.393:0060,393:0070CCCCCCB705CD2020CCCCCC1200212020CCC30000CCC90022CCC00000CC

溫馨提示

  • 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

提交評論