串與表的處理程序設計

上傳人:dfg****19 文檔編號:248178837 上傳時間:2024-10-22 格式:PPT 頁數(shù):31 大?。?02.50KB
收藏 版權申訴 舉報 下載
串與表的處理程序設計_第1頁
第1頁 / 共31頁
串與表的處理程序設計_第2頁
第2頁 / 共31頁
串與表的處理程序設計_第3頁
第3頁 / 共31頁

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《串與表的處理程序設計》由會員分享,可在線閱讀,更多相關《串與表的處理程序設計(31頁珍藏版)》請在裝配圖網上搜索。

1、單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,*,第七章 串與表的處理程序設計,7.1,串操作指令,“,串,”,是指存儲器中的一段連續(xù)的字或字節(jié)單元。這些單元中存放的內容可以是字符或數(shù)據(jù)。,“,串操作,”,就是對這些單元進行某種相同的操作。比如將一段數(shù)據(jù)從一個存儲區(qū)傳送到另一個存儲區(qū)。,1,(3,)當標志位,DF=0,時,,SI,和,DI,的修改為遞增,即加,2,(字操作)或加,1,(字節(jié)操作)。當,DF=1,時,,SI,和,DI,的修改為遞減,即減,2,或減,1,。,(2,)串操作指令每次只對串中的一個字或一個字節(jié)單元進行操作,并自動修改,SI,

2、和(或),DI,,使其指向下一個字或字節(jié)單元。,(1,)串操作指令使用專用的尋址方式:源操作數(shù)地址由,DS:SI,提供,目的操作數(shù)由,ES:DI,提供。,串,操作指令具有以下共有特點:,2,1.,取串指令,由于源串是由,SI,指定,如果程序中在執(zhí)行該指令時已經明確是字或字節(jié),則可以用無操作數(shù)指令,LODSB(,字節(jié)操作)或,LODSW(,字操作)替代。,該指令執(zhí)行后對標志無影響。,指令格式:,LODS,源串,將源串中的一個字或字節(jié)內容送入,AX,或,AL,中,并根據(jù),DF,修改,SI。,功能:,3,2.,存串指令,同樣,指令可以用無操作數(shù)指令,STOSB,或,STOSW,替代。,該指令對標志無

3、影響。,STOS,目的串,指令格式:,功能:,將,AX,或,AL,中的內容送入目的串中的一個字單元或字節(jié)單元,并根據(jù),DF,修改,DI。,4,3.,串傳送指令,MOVS,目的串,源串,同樣,指令可以用無操作數(shù)指令,MOVSB,或,MOVSW,替代。,指令對標志無影響,指令格式:,功能:,將由,SI,指向的源串的一個字或字節(jié)傳送到,DI,所指向的目的串中。并根據(jù),DF,修改,SI,和,DI。,5,4.,串比較指令,CMPS,源串,目的串,將源串中的一個字節(jié)或字減去目的串中的一個字或字節(jié),結果不回送。但將影響標志寄存器。同時,將根據(jù),DF,修改,SI,和,DI。,指令格式:,同樣,指令可以用無操作

4、數(shù)指令,CMPSB,或,CMPSW,替代。,功能:,6,5,、串搜索指令,SCAS,目的串,查找的方法:,用,AX,或,AL,的內容減去目的串中的一個字或字節(jié),相減的結果反映在標志寄存器中。每查找一次,將按照,DF,修改,DI。,指令格式:,功能:,在目的串中查找,AX,或,AL,指定的內容。,同樣,指令可以用無操作數(shù)指令,SCASB,或,SCASW,替代。,7,6,、重復前綴指令,REP,重復操作的次數(shù)由,CX,控制,每執(zhí)行一次串操作指令,,CX,內容減,1,,直到,CX,內容為,0。,指令格式:,為了方便對若干個字或字節(jié)進行多次同樣的操作,可在上述各種指令的前面加上,REP,指令。,8,例

5、如:,REP MOVSB,設在執(zhí)行該指令前,DF=0,(SI)=0020H,(DI)=100H,(CX)=0030H。,LOP:MOV AL,SI,MOV ES:DI,AL,INC SI,INC DI,LOOP LOP,執(zhí)行該指令將使數(shù)據(jù)段中從,0020,H,開始的,30,H,個字節(jié)傳送到附加段從,0100,H,開始的存儲區(qū)。,如果改用不使用串操作指令,則它相當于下面的程序段:,9,REPE/REPZ,重復執(zhí)行串操作指令的條件是:(,CX),0,和,ZF=1,由于這兩條指令的執(zhí)行要由標志位,ZF,來控制結束,而,LODS、STOS,和,MOVS,三條指令不影響標志,因此不適合與這些指令配合使用

6、。,另外還有兩條重復前綴指令:,REPNE/REPNZ,重復執(zhí)行串操作指令的條件是:(,CX),0,和,ZF=0,10,7.2,串操作指令應用舉例,例1:試編制一程序,在,TXTBUF,字符串中查找,STRING,變量指定的字符。若查到,則把該字符所在位置(,1,n),送入,INDEX,單元中。若未查到,則把,0,FFH,送,INDEX,單元中。,DATA SEGMENT,TXTBUF DB ABCDEFGHIJKLMNOP,CUNT EQU$-TXTBUF,STRING DB G,INDEX DB?,DATA ENDS,STACK1 SEGMENT PARA STACK,DW 20H DUP

7、(0),STACK1 ENDS,11,CODE SEGMENT,ASSUME CS:CODE,DS:DATA,SS:STACK1,START:MOV AX,DATA,MOV DS,AX MOV ES,AX,MOV DI,OFFSET TXTBUF;,取目的串首址,MOV CX,CUNT,MOV AL,STRING,;初始化,DI,CX,AL,CLD;DF=0,,遞增方式,REPNE SCASB ;,查找字符,MOV BL,0FFH,JNE END0 ;,條件判斷:未查到,,ZF=0,轉移,SUB DI,OFFSET TXTBUF,MOV BX,DI,END0:MOV INDEX,BL,MOV

8、AH,4CH,INT 21H,CODE ENDS,END START,12,例,2,試編寫一程序,確定某子字符串是否在另一字符串中存在。若在,則記錄其所在起始位置。若不在則設置標志,0,FFH。,該例是例,1,的更一般情況。,A B C D E F G H I J K L M N O P,E F,第,1,次比較:,A B C D E F G H I J K L M N O P,E F,第,2,次比較:,E F,A B C D E F G H I J K L M N O P,第,3,次比較:,13,DATA SEGMENT,TXTBUF DB ABCDEFGHIJKLMNOP,CUNT1 EQU

9、$-TXTBUF,STRING DB EF,CUNT2 EQU$-STRING;,子串長度,INDEX DB 0FFH,DATA ENDS,STACK1 SEGMENT PARA STACK,DW 20H DUP(0),STACK1 ENDS,14,開始,BX=,比較次數(shù),SI,AX=,源串首址,CX=,子串長度,DI=,子串首址,DF=0,源串與子串比較,相同?,AX=,子串位置,INDEX=(AL)+1,AX=(AX)+1,SI=,源串新起點,BX=(BX)-1,(BX)=0?,INDEX=0FFH,結束,Y,Y,N,N,比較次數(shù)=源串長度-子串長度+1,15,CODE SEGMENT,A

10、SSUME CS:CODE,DS:DATA,SS:STACK1,START:MOV AX,DATA,MOV DS,AX,MOV ES,AX,MOV BX,CUNT1-CUNT2+1;,比較次數(shù),MOV SI,OFFSET TXTBUF;,取源串首址,MOV AX,SI,LOP:,LEA DI,STRING;,取子串首址,MOV CX,CUNT2,CLD,REPZ CMPSB;,比較,JZ MATCH ;(CX)=0,且,ZF=1,相同,轉,INC AX ;,未匹配,比較位置往后移一位,MOV SI,AX,DEC BX ;,比較次數(shù)計數(shù),JNZ LOP,16,MOV INDEL,0FFH,JMP

11、 EXIT,MATCH:SUB AX,OFFSET TXTBUF;,位置為0,n,INC AL ;,位置為1,n,MOV INDEX,AL,EXIT:,MOV AH,4CH,INT 21H,CODE ENDS,END START,17,7.3,排序與查找,為了節(jié)省數(shù)據(jù)查找的時間,一般應先將無序表排列成有序表。,排序與查找是程序設計中經常遇到的問題。如統(tǒng)計學生的考試成績,了解部門工作人員的工作業(yè)績,總結實驗結果等等。,排序是指將一組沒有規(guī)律的無序數(shù)據(jù),排列成有序數(shù)據(jù)。查找是從一組數(shù)據(jù)中搜索指定的數(shù)據(jù)。,排序和查找一般都是在表中進行的。所謂數(shù)據(jù)表,是指一組連續(xù)存放在存儲器中的數(shù)據(jù)。數(shù)據(jù)表分為有序表

12、和無序表。,有序表,各數(shù)據(jù)項在存儲器中按順序(遞增或遞減)排列。否則稱為無序表。,18,一、氣泡排序算法,1,、將表中第一個數(shù),b,1,與第二數(shù),b,2,比較,若,b1b2,,則交換兩數(shù),否則不交換。然后將,b2,與,b3,比較,這樣重復比較,直至最后兩個數(shù)。,2,、重復執(zhí)行上述步驟,直至一次循環(huán)中沒有數(shù)據(jù)交換為止。,設有一組無序數(shù)據(jù)為,b,1,、b,2,、.b,n-1,、,b,n,,,要求以遞減順序排列,則氣泡排序法,、,為:,19,如果采用遞增方式進行排序,其處理方法與上述遞減排列方法類似,只需將交換條件變?yōu)榍懊娴臄?shù)大于后面的數(shù)。,在上述方法中,第一次執(zhí)行比較循環(huán),將使得最小一個數(shù)移動到最

13、后,就象一個氣泡上浮一樣。以后每次循環(huán)比較將使一個較小的數(shù)上浮。并且比較的次數(shù)將依次遞減。這樣直至整個表排列成一個有序表為止。,20,例如有,10,個數(shù),經過,5,次循環(huán)比較后,第,6,次循環(huán)比較時已沒有數(shù)據(jù)交換,為此,設置一個標識,以確定依次循環(huán)比較中是否有數(shù)據(jù)交換。,21,DATA SEGMENT,DA DB 80,3,-20,116,9,120,-6,62,-32,42,COUNT EUQ$-DA,DATA ENDS,STACK1 SEGMENT PARA STACK,DW 20H DUP(0),STACK1 ENDS,源程序的數(shù)據(jù)段和堆棧安排如下:,22,開始,置交換標志初值:,BL=

14、0,置比較次數(shù)計數(shù):,CX=(DX),SI(SI)+1)?,交換數(shù)據(jù):(,SI),(SI)+1),置,交換標志,:,BL=0FFH,修改指針:,SI=,(SI)+1,CX=(CX)-1,(CX)=0?,DX=(DX)-1,有交換?,DX=,比較次數(shù)(數(shù)據(jù)項數(shù)-1),結 束,Y,N,Y,N,N,Y,SORT1,SORT2,NOXCHG,MOV DX,COUNT-1,MOV BL,0,MOV CX,DX,MOV SI,0,MOV AL,DASI CMP AL,DASI+1,JGE NOXCHG,XCHG AL,DASI+1 MOV DASI,AL,MOV BL,0FFH,INC SI,LOOP S

15、ORT2,DEC DX,CMP BL,0,JNE SORT1,23,COSEG SEGMENT,ASSUME CS:COSEG,DS:DATA,SS:STACK1,SORT:,MOV AX,DATA,MOV DS,AX,MOV DX,COUNT-1 ;,置比較次數(shù)初值,SORT1:,MOV BL,0 ;,置交換標志初值,MOV CX,DX ;,置內循環(huán)比較次數(shù),MOV SI,0 ;,置數(shù)據(jù)指針初值,SORT2:MOV AL,DASI,CMP AL,DASI+1;,比較,JGE NOXCHG ;,大于等于則轉不交換,XCHG AL,DASI+1;,交換,MOV DASI,AL,MOV BL,0F

16、FH ;,置已交換標志,NOXCHG:INC SI ;,修改地址,LOOP SORT2,DEC DX ;,修改比較次數(shù),CMP BL,0 ;,檢查交換標志,JNE SORT1 ;,有交換,繼續(xù),MOV AH,4CH,INT 21H,COSEG,ENDS,END SORT,24,二.,二分法查找算法,二分法查找算法是對有序表進行的查找方法。如果是一個無序表,則必須先將其排列成一個有序表。,算法要點,:將整個數(shù)據(jù)表對分成兩個部分,判斷所查找的數(shù)據(jù)屬于哪個部分。然后再將所屬部分對分成兩個區(qū)域,并判斷所查找數(shù)據(jù)屬于哪個區(qū)域。如此重復操作,直至找到數(shù)據(jù)或區(qū)域長度,1。,二分法查找算法與順序查找算法相比,可以減少查找次數(shù),特別是對數(shù)據(jù)表很大的查找特別明顯。對于數(shù)據(jù)項為,N,的數(shù)據(jù)表,二分法查找算法的最多查找次數(shù)為:,Log,2,N。,例如當,N=1024,時,采用順序查找的平均查找次數(shù)為,1024/2=512,,而二分查找算法的最多查找次數(shù)為,Log,2,2,10,=10 。,25,為了達到對數(shù)據(jù)表的合理對分,數(shù)據(jù)表的長度應為,2,n,。,為此,對不滿足該長度要求的數(shù)據(jù)表,將其延長至,2,n,。,

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

相關資源

更多
正為您匹配相似的精品文檔

相關搜索

關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網版權所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對上載內容本身不做任何修改或編輯。若文檔所含內容侵犯了您的版權或隱私,請立即通知裝配圖網,我們立即給予刪除!