




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、實驗三 字符串操作實驗(設(shè)計性實驗)一、實驗要求和目的1了解匯編語言字符串處理基本流程;2熟悉匯編語言字符串處理基本指令的使用方法;3掌握利用匯編語言實現(xiàn)字符串處理的程序設(shè)計方法。二、軟硬件環(huán)境1、硬件環(huán)境:計算機(jī)系統(tǒng) windows;2、軟件環(huán)境:裝有MASM、DEBUG、LINK、等應(yīng)用程序。三、實驗涉及的主要知識1、字符串處理基本操作流程(1)利用SI 寄存器保存源串首地址;(2)利用DI 寄存器保存目的串首地址;(3)利用CX 寄存器保存字符串長度;(4)利用CLD 或STD 指令設(shè)置字符串處理方向;(5)利用字符串處理指令實現(xiàn)相關(guān)處理。其中,CLD 指令使DF=0,在執(zhí)行串處理指令時
2、可使地址自動增量;STD 使DF=1,在執(zhí)行串處理指令時可使地址自動減量。提示:字符串處理一般都涉及到源串和目的串,匯編語言規(guī)定源串在數(shù)據(jù)段中定義,目的串在附加段中定義。2、重復(fù)前綴指令:重復(fù)次數(shù)由計數(shù)寄存器CX 中存放的值決定,指令每重復(fù)執(zhí)行一次,計數(shù)器CX 中值減1,當(dāng)CX 中值減至0 時,停止重復(fù)執(zhí)行,繼續(xù)執(zhí)行下一條指令REP 無條件重復(fù)前綴,重復(fù)串操作直到計數(shù)寄存器的內(nèi)容CX 為0 為止。經(jīng)常與REP配合工作的字符串處理指令有MOVS、STOS 和LODS。REPE/REPZ 判斷計數(shù)寄存器的內(nèi)容CX 是否為0 或ZF=0(即比較的兩個操作數(shù)不等),只要滿足一個則重復(fù)執(zhí)行結(jié)束,否則繼續(xù)
3、執(zhí)行??梢耘cREPE/REPZ 配合工作的串指令有CMPS 和SCAS。REPNE/REPNZ 判斷計數(shù)寄存器的內(nèi)容是否為0 或ZF=1(即比較的兩個操作數(shù)相等),只要滿足一個則重復(fù)執(zhí)行結(jié)束,否則繼續(xù)執(zhí)行??梢耘cREPE/REPZ 配合工作的串指令有CMPS 和SCAS。3、字符串處理基本指令(1)MOVS 傳送指令格式:MOVS DST,SRC 或MOVSB(傳送字節(jié))或MOVSW(傳送字)。后面兩種形式需要與REP 指令結(jié)合使用。該指令把由源變址寄存器(SRC)指向的數(shù)據(jù)段中的一個字(或字節(jié))數(shù)據(jù)傳送到由目的變址寄存器(DST)指向的附加段中的一個字(或字節(jié))中去,同時,根據(jù)方向標(biāo)志及數(shù)據(jù)
4、格式(字或字節(jié))對源變址寄存器和目的變址寄存器進(jìn)行修改。(2)STOS 存入串指令格式:STOS DST 或STOSB(存入字節(jié))或STOSW(存入字)。該指令把 AL 或AX 的內(nèi)容存入由目的變址寄存器指向的附加段的某單元中,并根據(jù)方向標(biāo)志(DF)和數(shù)據(jù)類型修改目的變址寄存器的內(nèi)容。(3)LODS 從串取指令格式:LODS SRC 或LODSB(取字節(jié))或LODSW(取字)。該指令把由源變址寄存器指向的數(shù)據(jù)段中某單元的內(nèi)容傳送到 AL 或AX 中,并根據(jù)方向標(biāo)志和數(shù)據(jù)類型修改源變址寄存器的內(nèi)容。(4)CMPS 串比較指令格式:CMPS SRC,DST 或CMPSB 或CMPSW。該指令把由源
5、變址寄存器指向的數(shù)據(jù)段中的一個字節(jié)或字與由目的變址寄存器所指向的附加段中的一個字節(jié)或字相減,但不保存結(jié)果,只根據(jù)結(jié)果設(shè)置條件標(biāo)志。該指令與 REPE/REPZ 或REPNE/REPNZ 結(jié)合,可以比較兩個數(shù)據(jù)串。(5)SCAS 串掃描指令格式:SCAS DST 或SCASB 或SCASW。該指令把 AL 或AX 的內(nèi)容與由目的變址寄存器所指向的附加段中的一個字節(jié)或字進(jìn)行比較,并不保存結(jié)果,只根據(jù)結(jié)果設(shè)置條件碼。該指令與 REPE/REPZ 或REPNE/REPNZ 結(jié)合,可以從一個字符串中查找一個指定的字符??偟膩碚f,字符串處理可以將緩沖區(qū)中一個數(shù)據(jù)塊搬至存儲器的另一處,比較兩個字符串是否相等
6、,從緩沖區(qū)中一個數(shù)據(jù)塊尋找某一個特定的關(guān)鍵字,順次從一個緩沖區(qū)取字符或順次向一個緩沖區(qū)存字符等。四、實驗內(nèi)容與步驟1、比較緩沖區(qū)中兩字符串是否相同,相同則AL 返回0,不同AL 返回1。為了使程序的通用性比較好,字符串長度要求自動獲取。(要求用字符串處理方法)SI串1的首地址DI串2的首地址Count1 串1長度Count2 串2長度流程圖:比較串1和串2長度是否相等REPE CMPSB程序代碼:DATAS SEGMENT BUF1 DB ABCDEFGH COUNT1 EQU $-BUF1 DATAS ENDSEXTRA SEGMENT BUF2 DB ABCDEFGH COUNT2 EQU
7、 $-BUF2EXTRA ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,ES:EXTRASTART: MOV AX,DATAS MOV DS,AX MOV AX,EXTRA MOV ES,AX LEA SI,BUF1 LEA DI,BUF2 MOV CX,COUNT1 CMP CX,COUNT2 JNZ EXIT1 CLD REPE CMPSB JNZ EXIT1 MOV AL,0 JMP EXIT2 EXIT1: MOV AL,1 EXIT2: MOV AH,4CH INT 21HCODES ENDS END STARTT實驗結(jié)果:BUF1 ABCDE
8、FGH BUF2 ABCDEFGHBUF1 ABCDEFGH BUF2 ABCDHGIJ2、編寫程序,將內(nèi)存中某一區(qū)域的數(shù)據(jù)傳送到另一區(qū)域。(要求用字符串處理方法)SI源串的首地址DI目的串的首地址DF=0或1CX串長度流程圖:(CX)=0YNMOVS結(jié)束串操作CX=CX-1程序代碼:DATAS SEGMENT BUF1 DB ABCDEFGH COUNT EQU ($-BUF1)/DATAS ENDSextra segment BUF2 DB COUNT dup(?)extra endsCODES SEGMENT ASSUME CS:CODES,DS:DATAS,ES:EXTRASTART:
9、 MOV AX,DATAS MOV DS,AX MOV AX,EXTRA MOV ES,AX LEA SI,BUF1 ;置源串指針 LEA DI,BUF2 ;置目的串指針 MOV CX,COUNT ;數(shù)據(jù)個數(shù)存入CX CLD ;置正方向 REP MOVSB ;串傳送 MOV AH,4CH INT 21HCODES ENDS END START實驗結(jié)果:3、編寫程序,在已知字符串中搜索特定字符!,若找到則AL 返回0,找不到AL 返回1。(要求用字符串處理方法)流程圖:程序代碼:DATAS SEGMENT STRING DB WONDERFUL DAY! IT IS A COUNT EQU $-
10、STRINGDATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATAS,ES:DATASSTART: MOV AX,DATAS MOV DS,AX MOV ES,AX LEA DI,STRING MOV AL,! MOV CX,COUNT CLD REPNE SCASB JZ FOUND MOV AL,1 JMP EXIT FOUND:MOV AL,0 EXIT: MOV AH,4CH INT 21HCODES ENDS END START實驗結(jié)果:案例一:字符串為:WONDERFUL DAY! IT IS A 尋找!案例二:字符串為:WONDERFUL
11、DAY IT IS A4、編寫程序,統(tǒng)計一串字符串中字符.出現(xiàn)的次數(shù)。(要求用字符串處理方法);流程圖:程序代碼:DATAS SEGMENT STRING DB WO.DA.Y.I.T COUNT EQU $-STRING N DW 0 DATAS ENDSCODES SEGMENT ASSUME CS:CODES,DS:DATASSTART: MOV AX,DATAS MOV DS,AX MOV BX,N LEA SI,STRING MOV CX,COUNT CLD L1:LODSB CMP AL,. JNZ L2 INC BX L2: LOOP L1 MOV AH,4CH INT 21HCODES ENDSEND START運行結(jié)果:字符串: WO.DA.Y.I.T 匹配字符:.五、思考題如果不用字符串處理方法,而用其他方法如何實現(xiàn)題目2 的程序設(shè)計,比較兩種方法效果?答:可用loop指令方式實現(xiàn),比較時采用cmp比較字符的ASCII值的方式實現(xiàn),并通過跳轉(zhuǎn)對不同的結(jié)果進(jìn)行處理。采用循環(huán)方式需要更多的指令才能完成相應(yīng)的功能,而采用MOVSB指令則程序更加簡潔,處理更加
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 軟考網(wǎng)絡(luò)管理員考試過程中應(yīng)注意事項試題及答案
- 數(shù)據(jù)庫管理試題及答案匯編
- 前臺文員的工作激勵機(jī)制計劃
- 依賴數(shù)據(jù)的生產(chǎn)階段評價計劃
- 利用協(xié)作工具增強工作效率計劃
- 2025年法學(xué)概論考試的結(jié)構(gòu)性學(xué)習(xí)方法及試題及答案
- 班級環(huán)境美化活動的開展與分享計劃
- 2024年漳州市交發(fā)地產(chǎn)集團(tuán)有限公司招聘真題
- 課堂作業(yè)與反饋管理方案計劃
- 探索品牌文化與員工參與度計劃
- 隴南2025年隴南市事業(yè)單位高層次人才和急需緊缺專業(yè)技術(shù)人才引進(jìn)(第一批)筆試歷年參考題庫附帶答案詳解
- 2025-2030年中國羥基磷灰石(HAp)行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 貴州中考英語復(fù)習(xí)重點單選題100道及答案
- 藥物動力學(xué)與臨床相關(guān)考點試題及答案
- 幼兒園畢業(yè)典禮流程安排
- 施工現(xiàn)場人員的安全意識提升試題及答案
- 課程售賣合同協(xié)議書
- 線上陪玩店合同協(xié)議
- 蓉城小史官考試試題及答案
- 中美關(guān)稅貿(mào)易戰(zhàn)
- 中華人民共和國農(nóng)村集體經(jīng)濟(jì)組織法
評論
0/150
提交評論