微機原理實驗四串操作指令_第1頁
微機原理實驗四串操作指令_第2頁
微機原理實驗四串操作指令_第3頁
微機原理實驗四串操作指令_第4頁
微機原理實驗四串操作指令_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

實驗四串操作指令程序?qū)嶒炓?、實驗?zāi)康氖煜の宸N串操作指令的功能,會編寫常用的串操作應(yīng)用程序。會使用DEBUG命令查看串操作運行的結(jié)果。二、實驗環(huán)境硬件:PC微機軟件:MasmforWindows匯編集成開發(fā)環(huán)境三、實驗講義串指連續(xù)存放在存儲器中的一些數(shù)據(jù)字節(jié)、字或者雙字。串操作允許對程序連續(xù)存放的數(shù)據(jù)塊進行操作。這是唯一一種可以從存儲器到存儲器的指令。源串一般存放在數(shù)據(jù)段,偏移地址由SI指定;目標串必須在附加段,偏移地址由DI指定。在每次進行串操作后,SI和DI兩個指針會自動修改。修改的是增量方向還是減量方向由標志位DF決定,DF=0為增量操作,DF=1為減量操作。CX中存放的是數(shù)據(jù)塊的長度,可在CX前加重復(fù)前綴標志,對串進行連續(xù)操作。執(zhí)行串指令之前,一般先進行如下操作:源串首地址(末地址)fSI目的串首地址(末地址)fDI串長度fCX建立方向標志DF重復(fù)前綴標志助記符判斷條件說明REPCX0CX=CX-1,若CX 0則重復(fù)REPE或REPZCX0且ZF=1CX=CX-1,若CX0且ZF=1則重復(fù)REPNE或REPNZCX=0且ZF=0EX=CX-1,若CX0且ZF=0則重復(fù)方向標志指令方向標志由標志位DF決定,有CLD和STD兩種指令。CLD將DF置0,地址為增量操作。STD將DF置1,地址為減量操作。串傳送指令格式:[REP]MOVSDESTS,SRCS[REP]MOVSB/MOVSW/MOVSD功能:將DS:SI中的源串?dāng)?shù)據(jù)傳送到ES:DI規(guī)定的目的串單元中。加重復(fù)前綴REP可實現(xiàn)連續(xù)存放的數(shù)據(jù)塊的傳送。例1:將源串中前三個字節(jié)的數(shù)據(jù)傳送到目的串。源串在數(shù)據(jù)段(DATAS)中,存放在SRC單元中;目的串在附加數(shù)據(jù)段(EDATAS)中,存放在DEST單元中。Bl SEISIMIENT?SRCIB0汕H』叫Ml川昨此處輸人數(shù)搖段牝碼03DrtlfilS匚血£WEOATASSEGHEtlT06&ESTDBKHB囲麗』刪B0州;此處輸入堆棧段代碼EPATA5ENDS?WSTACKSSESriEHT1flSTACKSEW$1213ID(IDESSEEilMIEN1THA assureC5:EfWES3OS:DATfiS,SS:staoksSTfiRT:nou刪.mt臨ttiwmu AX.EHTftS;此處輸人代碼段代碼HDU ES,用雄2S1 LEH SI?SRCLEA BTjDESlTTOC\o"1-5"\h\zHOU CXa3CLOrep25環(huán) noy HH^coi27 IHT 21HCODESEIWS29 EW STftRT要查看傳送結(jié)果是否正確,需要進行DEBUG操作。具體步驟如下:-U,查看反匯編代碼結(jié)果腮MKBcw0.74.Cpuspeed0003BB760700G0BEDB?005BB71G70006BEGG000A8D3&腮MKBcw0.74.Cpuspeed0003BB760700G0BEDB?005BB71G70006BEGG000A8D3&00?0000EBD3DOO0B0012B903I900015FC0016F3601?fi4001日B44C001ACDZ1SMCGG?0001E0003HOM ^^770KW DS.AXHOV AX.0771rtOU ES.ftXLEW SLI0000]LEfl DLIWOOJHOU (X0SQ3CLDREPZKW5BHOU AH.4C1NT Z1ADD IHK^SIl.ALADD-T4,將數(shù)據(jù)段和附加數(shù)據(jù)段裝入內(nèi)存。[jjlDOSEdy0.74,Cpu-speedi:JDOO叩1曰.Frarne-sldp0.Program:DEBDj|o||回l|E3|B772:國IKFt:即?2;@0站即ZZ:的I?0772:0010B772^601A977Z:001C即?z:emiEPH"F3制meCB21O?00CLDREPSMDUS?imu』NTADDMH儲I」啊21[BX*3ll>ftL趙碼!IS1Lix^ez?0ix^ez?0BX=W0OBS=W60忖7Z:emBEDSC3C毛03CDX=0?roSF=eTOOSS電陽FCS=0?72IP=eO63HOUDS.ftKIP=0000SI^OWDI=O0WIWHJPEOPL臨斯M3MCfx=cr?70BX=0O0EIfx=cr?70BX=0O0EI|K?e77(D E3-O?&0pf?7Z:e^DS71Gf?盼的就DX=03?豹=0驅(qū)I8SKJ7&FCS-(jJ77ZIF-H)G6HOUI^X,e771BF=e^'81=^0'Bl=MeHUl|JFEDPLNAraIMCix=t?^lBX=@G00ix=t?^lBX=@G00技再770ES=WWP??2;?00?BBCaCX=00:3CS3=WbFC5=077ZIF=e9WHOU ES.■敝呼=0彌射宓曲皿=醫(yī)曲

miLi卩eiflkmronc貿(mào)旳?iBX=e@0@標胡77QES=W71BP=w@asoaoow貿(mào)旳?iBX=e@0@標胡77QES=W71BP=w@asoaoow疏二妙eIWUPElPLMEmTORC疇;妙"健餉SS=W6Fcs=0772IF曲冊搟72;的翳SD%QlBae LEAW[陽鬧]可以看到最后數(shù)據(jù)段段地址DS=0770H,附加數(shù)據(jù)段段地址ES=0771H。查看內(nèi)存,可使用-D指令。查看數(shù)據(jù)段:-D0000(默認數(shù)據(jù)段);查看附加數(shù)據(jù)段:-D0771:0000(段地址:偏移地址)。結(jié)果如下圖所示數(shù)據(jù)裝入成功。@DOSBcx0.74,.Cpuspeed:3CK>Dcycles,FrameiE;kip口』Program:DEBUGSi?TO:G7A077G:G?B0770:(3711031?770:07£0『70:旳盹oeoeoeoeoe2*tt-tt-S*a01010101OGOG麗寫0-0-0-00@DOSBcx0.74,.Cpuspeed:3CK>Dcycles,FrameiE;kip口』Program:DEBUGSi?TO:G7A077G:G?B0770:(3711031?770:07£0『70:旳盹oeoeoeoeoe2*tt-tt-S*a01010101OGOG麗寫0-0-0-00a?-o8M3le(J01I0I0IEI1P01I0Iuu“-J*-ZJEli器器00曲%%wwe5*5*5*S*2*ea?o-o?10IJQIEIalol舊I0BP01?t>o“u06000需00IGIGIQK3IG)0Q-0000090909090-E0000I_flf779:GWfffl匣3779:0010&37?n;f^finn朋加:曲肺no[-r;7[|:[MHI]HH^?U:tWtjU00tw'.J[■>'CH)_Jfl(-X-)??J""J" LJ-I)Q771:tM9da?04SE0O舊舊ral1^!rtno-?wFEz泗河國渕石日1010161010IGTfi-_o0oMW09FJO-OfifJO-ffl旳-MMIMMJHHOUUWO)Wt?UWIM(MRDCD[■HtwIHOT71:OOGX3€I771:GW1G0771:0020(7771:MHO(777仁財flOT71:CMTiOW?l:tW/U|S5060I0I0I0I0IGIGI70GaQ08|0*93*9??00a300B0009旳EEDB曲0300AOOfififlgg000OAon00OflAOWUUOUGJ0-00?7-8EA4-B4fJO-OOno-ofiRO0000uwI3I@I0I9I8I6IGIG0GGoo_woS*0eee6ee0???alal0lelelolnlEoEIolatl?lD0?0阿0008C-0-OGGG9000ED3E00OGfiOOfiM)0000Ofi00GOO)UW-T4。設(shè)置SI,DI,CX,DF的值的7十鹽的臥771:圏100771垢映的卩1:的諒血_£1盤冋t'JM-:EMutM比68器器的7十鹽的臥771:圏100771垢映的卩1:的諒血_£1盤冋t'JM-:EMutM比68器器WC=0771iB^=WW&S=W?tPES書?7i0722;加瓠BD3E006&wc=o??i齡eweDS=0770iES=W?l閔12imjeecx^oeascss=w&rA4I-B40fi?-OQ妙腳?-00MaB^aaaSQ1!B@0002O000@px=ee^sp=ow0CS=W72IP=ffiMLEADLtQOlBe]CX=003CD罟國圏SF=W90SS^OT&FCS=e?72IP=O&12MOUCX.OTObp^ssw常喪的i>i=oeee

muupejnHzmpohear=O0Wsi毛磁Pi=wee

NUUPElPLnsmpowEJF-fflM)e30-0300 DI-0000nuupeirLnsmiromcaxhotpi咲eeooDS毛7?0)ES=ef771!0f77Z-ffil5rcCX-tKB3EOZ畑SS=0f7&FC5^9?7ZCISSP-CHOOIF=e915-T執(zhí)行三次,執(zhí)行重復(fù)串傳送命令。-D0771:0000。查看附加數(shù)據(jù)段結(jié)果是否正確。可以看到,將數(shù)據(jù)段中前三個字符傳送到了附加數(shù)據(jù)段中,結(jié)果正確。r^r^nr^iDOSBax€.74,匚puwpeed:JDOOeyries,Aramesldpfl.Program:DEQLIiS|?丄sleleee1007Feor^r^nr^iDOSBax€.74,匚puwpeed:JDOOeyries,Aramesldpfl.Program:DEQLIiS|?丄sleleee1007Feo&ao串比較指令格式:[REPE/Z][REPNZ/NE]CMPSDESTS,SRCS[REPE/Z][REPNZ/NE]CMPSB/CMPSW/CMPSD功能:由DS:SI指定的源串元素減去ES:DI指定的目的元素,結(jié)果不回送,只影響標志位的值。當(dāng)源串元素與目的元素的值相同時,ZF=1;否則ZF=O??捎脕頇z查兩個串是否相等。加重復(fù)前綴REPE/Z,表示重復(fù)比較兩個字符串,若兩個字符串的元素相同則比較到CX=O為止,否則結(jié)束比較。加重復(fù)前綴REPNE/NZ,表示若兩個字符串元素不相同,重復(fù)比較直到CX=0為止,否則結(jié)束比較。例2:比較SRC和DEST單元中元素是否相同,若相同,將全1送至DATA1單元;若不同,將全0送至DATA1單元。在

肝1DATASSEGHEHT02SRCDBCffl.fllH.OZH.OSH.Q^H;此處輸人蠶1括段代碼03DHTA1DB?汕UHT歸ENDS05財EOATASSEGHEHT07BESTDBuai,ffin 輸入堆棧段代石冊胸EDfiiTflSENDS1011SEGMEHT北STFiCKSENDS仙15CODESSEGMENT16ASSOIIECS:COPESsPS:DATftSTflCIKS17START:1SIIDU備』NT刖侶I1DUD"K2UHOUflM.EDflTflS;此處輸入代碼段代碼21IIDUES,AK2223LEfiSI}SRC24LEADIGEST25IIDUCM,526CLD27REPECMPSB28JZEflUL29IIDUBHV@30JIIPDONE31EQULzHOUBH,0FFH32DONE:IIOUD^rrhBH3334IIDU95IHT21II36CODESENDS37EHDSTART扌LIII 卜在DEBUG中,查看內(nèi)存中DATA1處的值為00H,源串與目的串不相同。結(jié)果正確。DOSEok0.74,Cpuspeed:3{K)0cycles,Frameskip0,Program:DEEUG-D0776;90067&GG&&GOMl79GG20DO700G39GGeftCft■)770:0049陽7&GG5&GOMl79GG7006-D0776;90067&GG&&GOMl79GG20DO700G39GGeftCft■)770:0049陽7&GG5&GOMl79GG70064I9DI0報looo日0D0B00066EI5I0IGN3I60B-O0000送I?)79J5)0)O)0GeapqeoGollo-WE_w-?-w00|O0M)BOrc4C

00M)06GGDOM4HM07-DEfi6-74Zl-99GGDOM4HM06-0900(■?00EBOO00(■?0000HMGOQZ0000HMGO00IXIODB7OO00IXI00■V..6串掃描指令基本格式:[REPE/Z][REPNZ/NE]SCASDESTS[REPE/Z][REPNZ/NE]SCASB/SCASW/S功能:AL,AX或EAX的值減去目的ES:DI中的元素,結(jié)果不回送,僅影響標志位的值。當(dāng)AL,AX,EAX的值與目的串元素的值相同時,ZF=1;否則ZF=O。常用于在指定存儲區(qū)域中尋找某個關(guān)鍵字。要搜索的關(guān)鍵字放在AL、AX、EAX中。加重復(fù)前綴REPE/Z,表示目的串元素值和累加器值相同時重復(fù)掃描,直到CX=0為止,否則結(jié)束掃描。加重復(fù)前綴REPNE/NZ,表示目的串元素值和累加器值不相同時重復(fù)掃描,直到(E)CX=O時為止,否則結(jié)束掃描。例3:在ES段DEST開始處存有6個ASCII碼。搜索'E',若找到則在屏幕上顯示Y,否則顯示N。在屏幕上顯示單字符用2號DOS功能調(diào)用:MOVDL,'單字符'MOVAH,2INT21H點擊運行后,屏幕顯示Y,結(jié)果正確串裝入指令格式:LODSSRCSLODSB/LODSW/LODSD功能:將DS:SI所指定的源串元素裝入累加器AL,AX,EAX中,以便顯示或輸出到接口,該指令一般不加重復(fù)前綴。串存儲指令格式:[REP]STOSDESTS[REP]STOSB/STOSW/STOSD功能:將累加器AL,AX,EAX中的值存入ES:DI中的目的串存儲單元中。該指令常用于將內(nèi)存某個區(qū)域置同樣的值。待送存的數(shù)據(jù)放入AL或AX中。若加重復(fù)前綴REP,表示累加器的值連續(xù)送目的串存儲單元,直到(E)CX=0為止,四、實驗內(nèi)容串傳送指令。自定義源串和目的串?dāng)?shù)據(jù),將源串?dāng)?shù)據(jù)傳送至目的串單元。

OHDHTOl^SEONENT■ZSRED3-ABCDE-;^輸入數(shù)據(jù)殷代碼?DATOHDHTOl^SEONENT■ZSRED3-ABCDE-;^輸入數(shù)據(jù)殷代碼?DAT和£ENDSUKEDfiTfiSSEGIIEtIT財OESTDBFRO尸譏遜輸入堆棧段代碼07[囲EPATASENDSWSTACKS^EEallEMr11STACKSENDS13佃CODESSECNEMTASSUMEGS:GODESvOS:DATASvSS:STACKSSTRWT:WU艄』和酬HOUDS.AXMU朋.EDM舲:此處輸“代碼段代碼MUUESPAKLEASIPSRCLEADIPDEETmuokCLDREPMQVSBMBUAH.WHIW21H站 EHJ3S22ENDSlfllRT將數(shù)據(jù)段DATAS中的源串存放在src單元中‘ABCDE'傳送到數(shù)據(jù)段EDATAS中虧DCK0QKO.74.Cpuspeed:3000cycles.Frameslcip0,Program:1托BUG1=回1spX=GT??lBX=G000CX=90QZVX=00G?SP=OO0OR嚴圈?031^0003ni-om3P)S=G(?7?ESW77JLSS=eTOFCS=0772IP=eG46MUUPElPLMZMAPONCa?72:@?16F3JtEFZ9772:001?他TMQUSBAX-0771 HM-0000 CX-00Q1 DX-0Q&3SF-OQQQBF-醃馳SI-OQCHDI-0004PSGT?7?ES077133076FCS0772IF(M16MUUFElPLMZMAPONCW^zWlLFJREPZ(11-Thdush的GT?7i耽oof?exseeedk阻朋sf0000bf施eSI0005dieecsPS-OT7QES-077LSS-OTGFCS-0772IF-G01DNUUTElPLNZnarancCJff72:ft&lBB44CHIU】〕efz?i:eeee9771:woe|n舵約qqIsla?190eo000?711&&1&E曠70価住TieBB7107-BEC6BD36???68I?3E?P■■■■屯■■■■ ?■?A3771:??EG 000?旳056?FCF3A4-B44CC?21i3S?6001100]TT9771:00000GO0?03000Q]0G03-00000000G?eeee>備a??l:8GHieODIBBBe86eeodbb00-00ee0000so00GOIQB9771:謂6陽06陽囲00000090-Oe06|0G'000??i0eoGo9771:??6000000?000000??-?0?00?000@?0oe>Go00000?6X9?00?00??-@??e?D000???e?000‘????‘ 串比較指令。比較源串和目的串?dāng)?shù)據(jù)是否相同,若相同,將全1送至DATA1單元;若不同,將全0送至DATA1單元。

U1DflTflS^EGMEHT—G2|XRCDB-nBCDE-;|tt^A數(shù)據(jù)段代碼皿DAiT^IDB?Bi=iTfiSENDS05時EDA1ASSEGHENT07|DESrDB■AECDF'|此處輸入堆棧股代碼?809EDATASENDS1011SIACKSSEEMEhir1213S7SCKSENDSlit15CODESSEGMEHT16ASSUMECS^ODES.DS^ATAS.SS^TACKS17START:18HOUfiJ4BDflTnS19HUUDS.AX2BHOUftN,EDftTft£;lt處輸入代?%段代碼21HOUESsati2223LEASIaSRC2ULEADlnDESTT25HOVCKa526CLD27REPECNPSB28JZEQJL29HUUUH川SBJMPDUNE31EQUL:MUIVBHP6FFH32DUNE:MUUDATA1.BH333UHOUAHali£H35UNT21H36CODESENDS37EHDSTART血 丨分別設(shè)源串為ABCDF,目的串為ABCDEdatal顯示為0['iOSBoy0.74,Cpu占pwd: 2000cydtSjFramE-skip0Program'DEBUGT0770>!?013??7?:?0W770^@?ZJ0?7O:00M7時矽時?70:00&07T0770>!?013??7?:?0W770^@?ZJ0?7O:00M7時矽時?70:00&07陽:?0&??70:MTOHllZpi42bs700300SS3E0306腑OT?&06的B4的Mi09-06妙00C7-BEfifi-7421-0006^0008-00G&-00?^翹)2^)@@!?0O0口ouoJfttfflf.FI_IJtfatf1^51B?m?0t??t0se?D??)@0^@?sB?0??FBtKIcnLHfKIyclfKIycl0681B?跑oe跑oeABCDE MCDF??」■……J…4…啟…串掃描指令。在附加數(shù)據(jù)段中存放一段目的字符串,查看字符'C'是否在該目的串中。若存在顯示字符Y;不存在顯示字符N。STACKSSEGLEHTFr?:s日mjykeylocentiwne串裝入指令。將源串中的第三個字節(jié)的數(shù)據(jù)裝入AL中。STACKSSEGLEHTFr?:s日mjykeylocentiwne串裝入指令。將源串中的第三個字節(jié)的數(shù)據(jù)裝入AL中。STACKSENDSCODESSEGMENTASSUMECS:C0DES,DS:DArAS.SS:S7flCKSSTART;MOUAX,DATASMOUDSrAKMOUftK,EOftTflS;此處輸入代碼段代碼MDUES,rtKLEADI,DESTMDUCXr6OLDIIDUfiL/GaREPHESCflSDJZFOUNDnunOL/NJMPDUH匚FOUND:b1OUDL/VDOHEzMDUAH.2INT21HMOUIIHP4CHINI21HCODESENDSENDSTART01DhTHSSEGI1EK02 SRCDBiWCDE'酣 毗處輸入數(shù)據(jù)段代碼04DhTHSENDS05DCEDATASSEGHEKT07 DE生TDB5DUP(?)DSEDATASENDSmSTACKSSEGHEKT01DhTHSSEGI1EK02 SRCDBiWCDE'酣 毗處輸入數(shù)據(jù)段代碼04DhTHSENDS05DCEDATASSEGHEKT07 DE生TDB5DUP(?)DSEDATASENDSmSTACKSSEGHEKT;此處輸入堆棧段代碼STACKS:EHUS132CODiESSEGMENTASSUMECS::CODiESPDSzDflTASPSS:STACKSSTART:MOV R^pDiATASMOV D>£■歸MOV R^pEDiATASMOV ESPfl^21LEH SIbSRCHDD SIb3汕LODSB25加 汕說輸人代碼段代碼27 ITOU AH.aCH囲 IKT 2ilH四CODE怎ENDSEND START31Al被修改為44?4SAH^CBF=ee%si=^ee即啲笛[HUUPEIPLHZKINCck=?kisx-eeossp^eeeess=e?6Fcs=^72[p=eoii“兒W=O771BX=M0?us-euroes-wtiW7Z:W0E朋科03-TBp=m@s[=eeee訓(xùn)俠備NUUPEIPLIEfflftraNCBS:MB3=-Hc<=ei0ffi sp=ee06S3?€J7bFSCS-077Z[P-OflOErovfiLuist*^]HP-GOT?3[-?HOD3-0333wuureinrehftroncDS:0003^^1cwo,^"1-"肚cwcwt)I.-)"!..!■■)門wI■)wy卜""I""卜ftIJele^lelaBelaE鑒ftXW-0771EK-KOOCX■価巧DX-GmOSF■晦初W5=WTOES=@771SS=W6FC5=077Z[上190股977Z:的閉BD36@m@ LBASLC0090]-T=WHIIS嶠毆0ES=?7?1Er77Z;0011曲處-DW7?9f?TOg97T0-6&]a?w:ee0e@?TO;M0i&EJTTOJOCME??:0?0aTTOtee&e9?70i697e43e?”???ee_^..laro-OTw-w07-BE00-oe00-00ro-wGO00GO00WC1E….串存儲指令。將附加數(shù)據(jù)段中DEST單元的前十個字節(jié)的數(shù)據(jù)置為08H。ZJ|^~DiATASSEGHEHfTSRCDR0

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論