第07章 循環(huán)結(jié)構(gòu)程序_第1頁
第07章 循環(huán)結(jié)構(gòu)程序_第2頁
第07章 循環(huán)結(jié)構(gòu)程序_第3頁
第07章 循環(huán)結(jié)構(gòu)程序_第4頁
第07章 循環(huán)結(jié)構(gòu)程序_第5頁
已閱讀5頁,還剩79頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第七章 循環(huán)結(jié)構(gòu)程序7.1 循環(huán)結(jié)構(gòu)程序的提出7.2 循環(huán)結(jié)構(gòu)程序的組成7.3 循環(huán)控制指令7.4 數(shù)據(jù)串操作指令7.5 循環(huán)程序的控制方法7.6 單重循環(huán)程序舉例7.7 多重循環(huán)程序設(shè)計(jì)7.8 循環(huán)程序的效率7.1 循環(huán)結(jié)構(gòu)程序的提出 在許多實(shí)際應(yīng)用問題中,經(jīng)常遇到某一段操作需反復(fù)進(jìn)行的情況。 例例7.17.1 設(shè)內(nèi)存DATA1和DATA2開始分別存放50個(gè)無符號(hào)字?jǐn)?shù)據(jù),編制程序?qū)蓚€(gè)存儲(chǔ)區(qū)對應(yīng)字?jǐn)?shù)據(jù)求和并存入SUM開始的單元。 利用順序結(jié)構(gòu)編寫求和程序,首先設(shè)置源操作數(shù)和目的操作數(shù)指針,設(shè)置存放結(jié)果指針,接著從源指針指出的字單元取出數(shù)據(jù),與目的指針指出的字單元的數(shù)據(jù)相加,和存入結(jié)果的字單元

2、,然后,修改各地址指針,使之指向下一個(gè)字?jǐn)?shù)據(jù),求和,保存結(jié)果,.直至50對字?jǐn)?shù)據(jù)全部求和后,程序結(jié)束。7.1 循環(huán)結(jié)構(gòu)程序的提出1:;*EXAM7.1.1* 2:SSEG SEGMENT STACK3:STACK DB 50 DUP(0)4:SSEG ENDS5:DATA SEGMENT6:DATA1 DW 15H,36H,45H,27BH,.7:DATA2 DW 174H,03H,5BCH,390H,26H,.8:SUM DW 50 DUP(0)9:DATA ENDS10:CSEG SEGMENT11: ASSUME CS:CSEG,DS:DATA12: ASSUME SS:SSEG13:S

3、TART: MOV AX,DATA14: MOV DS,AX15: MOV AX,SSEG16: MOV SS,AX17: MOV SP,SIZE STACK18: LEA BX,DATA119: LEA SI,DATA2 20: LEA DI,SUM21: MOV AX,SI 22: ADD AX,BX 23: MOV DI,AX 24: ADD BX,2 25: ADD SI,2 26: ADD DI,227: MOV AX,SI28: ADD AX,BX29: MOV DI,AX30: ADD BX,231: ADD SI,232: ADDDI,2 :315: MOV AX,SI316:

4、 ADD AX,BX317: MOV DI,AX318: MOV AH,4CH319: INT 21H320:CSEG ENDS321: END START7.1 循環(huán)結(jié)構(gòu)程序的提出 1:*EXAM7.1.2* : . ;第220行與EXAM7.1.1相同 21: MOV CX,50 22:AGAIN: MOV AX,SI 23: ADD AX,BX 24: MOV DI,AX 25: ADD BX,2 26: ADD SI,2 27: ADD DI,2 28: DEC CX 29: JNZ AGAIN 30: MOV AH,4CH 31: INT 21H 7.2 循環(huán)結(jié)構(gòu)程序的組成.初始化部

5、分初始化部分 初始化部分是為循環(huán)程序做好準(zhǔn)備、以保證循環(huán)程序能夠正常運(yùn)行的部分。這一部分往往在循環(huán)程序的開頭,邏輯上先從這部分開始執(zhí)行。這一部分一般設(shè)置地址指針的初值、計(jì)數(shù)器的初值及程序中用到的某些寄存器和某些內(nèi)存單元的初值,初始化部分只執(zhí)行一遍。.工作部分工作部分 工作部分是循環(huán)程序的主體,它從初始化部分設(shè)置的初值開始,動(dòng)態(tài)地反復(fù)執(zhí)行相同的操作。這一部分完成循環(huán)程序所要實(shí)現(xiàn)的功能,即需要重復(fù)進(jìn)行的工作。 3.修改部分修改部分 這一部分與工作部分協(xié)調(diào)配合,對參加運(yùn)算的數(shù)據(jù)或地址指針以及結(jié)果單元的地址指針進(jìn)行恰當(dāng)?shù)男薷?,以保證循環(huán)程序在循環(huán)的過程中,每次循環(huán)都能正確地得到參加運(yùn)算的數(shù)據(jù),并正確地

6、存放運(yùn)算結(jié)果。.控制部分控制部分 控制部分是保證循環(huán)程序按預(yù)定的循環(huán)次數(shù)或某種預(yù)定的條件正常循環(huán),且能控制循環(huán)程序正常退出循環(huán)的部分。7.3 循環(huán)控制指令1. LOOP 重復(fù)控制重復(fù)控制2. LOOPE/LOOPZ 條件重復(fù)控制條件重復(fù)控制3. LOOPNE/LOOPNZ 條件重復(fù)控制條件重復(fù)控制4. JCXZ CX為0轉(zhuǎn)1. LOOP 重復(fù)控制指令匯編格式指令匯編格式:LOOP shortlabel操作操作:計(jì)數(shù)寄存器CX減1,如果新的CX值不為0,則轉(zhuǎn)向shortlabel 指定的循環(huán)入口執(zhí)行;若CX=0,則退出循環(huán),執(zhí)行后續(xù)指令。受影響的狀態(tài)標(biāo)志位受影響的狀態(tài)標(biāo)志位:沒有。 舉例舉例:1

7、. LOOP 重復(fù)控制 21: MOV CX,50 22:AGAIN: MOV AX,SI 23: ADD AX,BX 24: MOV DI,AX 25: ADD BX,2 26: ADD SI,2 27: ADD DI,2 28: DEC CX 29: JNZ AGAIN 30: MOV AH,4CH 31: INT 21HLOOP AGAIN2. LOOPE/LOOPZ 條件重復(fù)控制指令匯編格式指令匯編格式: LOOPE/LOOPZ shortlabel操作:計(jì)數(shù)寄存器CX減1,如果零標(biāo)志位ZF=1且CX0時(shí),轉(zhuǎn)向shortlabel 指定的循環(huán)入口執(zhí)行, 如果 ZF=0 或 CX=0 則

8、執(zhí)行后續(xù)指令。 受影響的狀態(tài)標(biāo)志位受影響的狀態(tài)標(biāo)志位:沒有。例子例子:比較兩個(gè)數(shù)據(jù)串是否相等時(shí)。由第一個(gè)數(shù)據(jù)開始,依次比較,若發(fā)現(xiàn)比較過程中某兩個(gè)數(shù)據(jù)已不相等,不必再反復(fù)比較下去而需中途退出循環(huán)。 2. LOOPE/LOOPZ 條件重復(fù)控制DSEGSEGMENTSTR1:DBCOMPUTER STR2:DBCOMPRESSDSEGSEGMENTASSUME S:CSEG,DS:DSEGSTART: MOVAX,DSEGMOVDS,AXLEASI,STR1LEADI,STR2MOVCX,8AGAIN: MOVAL,SIMOVAH,DIINCSIINCDICMPAL,AHJNESTOPLOOPAG

9、AIN . . .CSEGENDSENDSTARTLOOPE AGAINJNE STOPSTR1:C O M P U T E RSTR2:C O M P R E S S 3.LOOPNE/LOOPNZ條件重復(fù)控制指令匯編格式指令匯編格式: LOOPNE/LOOPNZ shortlabel操作操作:計(jì)數(shù)寄存器CX減1,如果零狀態(tài)標(biāo)志位ZF=0 且 CX0時(shí),轉(zhuǎn)向 shortlabel指定循環(huán)入口執(zhí)行,如果ZF=1 或 CX=0 則執(zhí)行后續(xù)指令。受影響的狀態(tài)標(biāo)志位受影響的狀態(tài)標(biāo)志位:沒有。例子例子:在若干個(gè)數(shù)據(jù)中查找一個(gè)等于給定值的數(shù)據(jù),并不一定要查找完所有數(shù)據(jù)才能結(jié)束,當(dāng)在中間找到這個(gè)數(shù)據(jù)時(shí),就

10、可以中途退出。此時(shí)可用此指令控制循環(huán)結(jié)構(gòu)。3.LOOPNE/LOOPNZ條件重復(fù)控制DSEGSEGMENTSTR1:DBCOMPUTER CHR:DBMDSEGSEGMENTASSUME CS:CSEG,DS:DSEGSTART: MOVAX,DSEGMOVDS,AXLEASI,STR1-1MOVCX,8MOVAL,CHRAGAIN: INCSICMPAL,SIJEFOUNDLOOPAGAIN .FOUND: . .CSEGENDSENDSTARTLOOPNE AGAINJE FOUNDSTR1:C O M P U T E RCHR:M4. JCXZ CX為0轉(zhuǎn)指令匯編格式指令匯編格式:JCX

11、Z shortlabel操作操作:如果計(jì)數(shù)寄存器CX為0,轉(zhuǎn)向shortlabel指出的程序入口執(zhí)行,如果CX0,則執(zhí)行后續(xù)指令。受影響的狀態(tài)位受影響的狀態(tài)位:沒有JCXZ OKANDCX,CXJZOK7.4 數(shù)據(jù)串操作指令1. MOVS/MOVSB/MOVSW2. LODS/LODSB/LODSW3. STOS/STOSB/STOSW4. CMPS/CMPSB/CMPSW5. SCAS/SCASB/SCASW1. MOVS/MOVSB/MOVSW指令匯編格式指令匯編格式:MOVS/MOVSB/MOVSW dstr,sstr操作操作:將DS段SI指出的字節(jié)(或字)數(shù)據(jù)傳送到ES段DI指出的單元

12、,然后根據(jù)標(biāo)志位DF的情況和操作數(shù)的類型(字節(jié)或字)修改SI,DI的地址指針。 (ES:DI)(DS:SI) SISI DIDI受影響的標(biāo)志位受影響的標(biāo)志位:沒有。 說明:1)MOVSB,MOVSW明確指出串的類型是字節(jié)串還是字串。 2)使用MOVS指令時(shí),其后可以寫目標(biāo)地址和源地址,目標(biāo)地址一定為ES:DI, 而源地址可以是DS:SI, CS:SI,ES:SI和SS:SI,即源地址可在非隱含段。12121. MOVS/MOVSB/MOVSW 01H02H03H04H1000:0000H2000:0100H1. MOVS/MOVSB/MOVSW MOV AX,1000HMOV DS,AXMOV

13、 SI,0000HMOV AX,2000HMOV ES,AXMOV DI,0100HMOV CX,0100HAG:MOV AL,SIMOV ES:DI,ALINCSIINCDILOOP AG . . .01H02H03H04H1000:0000H2000:0100H1. MOVS/MOVSB/MOVSW MOV AX,1000HMOV DS,AXMOV SI,0000HMOV AX,2000HMOV ES,AXMOV DI,0100HMOV CX,0100HAG:MOV AL,SIMOV ES:DI,ALINCSIINCDILOOP AG . . .01H02H03H04H1000:0000H

14、2000:0100H1. MOVS/MOVSB/MOVSW MOV AX,1000HMOV DS,AXMOV SI,0000HMOV AX,2000HMOV ES,AXMOV DI,0100HMOV CX,0100HAG:MOV AL,SIMOV ES:DI,ALINCSIINCDILOOP AG . . .CLDAG:MOVSB01H02H03H04H1000:0000H2000:0100H1. MOVS/MOVSB/MOVSW MOV AX,1000HMOV DS,AXMOV SI,0000HMOV AX,2000HMOV ES,AXMOV DI,0100HMOV CX,0080HAG:M

15、OV AX,SIMOV ES:DI,AXADDSI,2ADDDI,2LOOP AG . . .CLDAG:MOVSW01H02H03H04H1000:0000H2000:0100HREP 重復(fù)前綴使用方法及格式使用方法及格式:REP 基本串操作指令操作操作:基本串操作指令使用REP前綴時(shí),則根據(jù)CX 值的情況重復(fù)執(zhí)行后面的基本串操作指令,每執(zhí)行一次CX減1,直到CX=0為止, 意思是“當(dāng)CX0時(shí)重復(fù)”。受影響的狀態(tài)標(biāo)志位受影響的狀態(tài)標(biāo)志位:由串操作基本指令的執(zhí)行情況決定。MOV AX,1000HMOV DS,AXMOV SI,0000HMOV AX,2000HMOV ES,AXMOV DI,0

16、100HMOV CX,0100HCLDAG:MOVSBLOOP AG . . .REP 重復(fù)前綴01H02H03H04H1000:0000H2000:0100HMOV AX,1000HMOV DS,AXMOV SI,0000HMOV AX,2000HMOV ES,AXMOV DI,0100HMOV CX,0100HCLDAG:MOVSBLOOP AG . . .REP 重復(fù)前綴 REP MOVSB01H02H03H04H1000:0000H2000:0100HMOV AX,1000HMOV DS,AXMOV SI,0000HMOV AX,2000HMOV ES,AXMOV DI,0100HMO

17、V CX,0100HCLDAG:MOVSBLOOP AG . . .REP 重復(fù)前綴 REP MOVSW0080HW01H02H03H04H1000:0000H2000:0100H舉例舉例: : 將1000:0000H開始的100H個(gè)數(shù)據(jù)順序下移一個(gè)位置.REP 重復(fù)前綴1000:0000H01H02H03H04H05H1000:0100H1000:00FFH舉例舉例: : 將1000:0000H開始的100H個(gè)數(shù)據(jù)順序下移一個(gè)位置.MOV AX,1000HMOV DS,AXMOV ES,AXMOV SI,0000HMOV DI,0001HMOV CX,0100HCLDREPMOVSBREP

18、重復(fù)前綴1000:0000H01H02H03H04H05H1000:0100H1000:00FFH舉例舉例: : 將1000:0000H開始的100H個(gè)數(shù)據(jù)順序下移一個(gè)位置.MOV AX,1000HMOV DS,AXMOV ES,AXMOV SI,0000HMOV DI,0001HMOV CX,0100HCLDREPMOVSBREP 重復(fù)前綴1000:0000H01H01H03H04H05H1000:0100H1000:00FFH舉例舉例: : 將1000:0000H開始的100H個(gè)數(shù)據(jù)順序下移一個(gè)位置.MOV AX,1000HMOV DS,AXMOV ES,AXMOV SI,0000HMOV

19、 DI,0001HMOV CX,0100HCLDREPMOVSBREP 重復(fù)前綴1000:0000H01H01H01H04H05H1000:0100H1000:00FFH舉例舉例: : 將1000:0000H開始的100H個(gè)數(shù)據(jù)順序下移一個(gè)位置.MOV AX,1000HMOV DS,AXMOV ES,AXMOV SI,0000HMOV DI,0001HMOV CX,0100HCLDREPMOVSBREP 重復(fù)前綴1000:0000H01H01H01H01H05H1000:0100H1000:00FFH舉例舉例: : 將1000:0000H開始的100H個(gè)數(shù)據(jù)順序下移一個(gè)位置.MOV AX,10

20、00HMOV DS,AXMOV ES,AXMOV SI,0000HMOV DI,0001HMOV CX,0100HCLDREPMOVSBREP 重復(fù)前綴1000:0000H01H01H01H01H01H1000:0100H1000:00FFH舉例舉例: : 將1000:0000H開始的100H個(gè)數(shù)據(jù)順序下移一個(gè)位置.MOV AX,1000HMOV DS,AXMOV ES,AXMOV SI,0000HMOV DI,0001HMOV CX,0100HCLDREPMOVSBREP 重復(fù)前綴1000:0000H01H02H03H04H05H1000:0100H1000:00FFHMOV SI,00FF

21、HMOV DI,0100HMOV CX,0100HSTDREPMOVSB2. LODS/LODSB/LODSW 取數(shù)據(jù)串指令匯編格式指令匯編格式:LODS/LODSB/LODSW sstr操作操作:將DS段SI指出的字節(jié)(或字)數(shù)據(jù)加載到累加器AL(或AX)中,然后修改SI的地址指針。 AL(或AX)(DS:SI) SISI受影響的狀態(tài)標(biāo)志位受影響的狀態(tài)標(biāo)志位: 沒有。說明說明:此條指令一般不加重復(fù)前綴,因?yàn)榧尤胫貜?fù)前綴之后累加器中新加載的內(nèi)容不斷取代原來的結(jié)果,將只留下最后一個(gè)加載的元素。123. STOS/STOSB/STOSW 存數(shù)據(jù)串指令匯編格式指令匯編格式:STOS/STOSB/ST

22、OSW dstr操作操作:將AL(目標(biāo)串為字節(jié)串時(shí))或AX(目標(biāo)串為字串時(shí))的內(nèi)容存儲(chǔ)到ES段DI指出的地址單元中,然后修改DI的地址指針。 (ES:DI)AL(或AX) DIDI受影響狀態(tài)標(biāo)志位受影響狀態(tài)標(biāo)志位:沒有。說明說明:借助STOS 指令使用重復(fù)前綴可以方便地用一個(gè)常數(shù)對一塊存儲(chǔ)區(qū)初始化。12用0720H填滿B800:0000開始的2000個(gè)字.3. STOS/STOSB/STOSW 存數(shù)據(jù)串用0720H填滿B800:0000開始的2000個(gè)字.MOV AX,0B800HMOV ES,AXMOV DI,0000HMOV CX,07D0H ;2000MOV AX,0720HCLDAG:

23、STOSWLOOP AG . .3. STOS/STOSB/STOSW 存數(shù)據(jù)串用0720H填滿B800:0000開始的2000個(gè)字.MOV AX,0B800HMOV ES,AXMOV DI,0000HMOV CX,07D0H ;2000MOV AX,0720HCLDAG:STOSWLOOP AG . .3. STOS/STOSB/STOSW 存數(shù)據(jù)串REP STOSW 將1000:0000H開始的100H個(gè)字節(jié)的字符串移動(dòng)到2000H:0100H開始的單元,要求在移動(dòng)的過程中將所有小寫字符改變?yōu)榇髮懽址?. STOS/STOSB/STOSW 存數(shù)據(jù)串01H02H03H04H1000:000

24、0H2000:0100H 將1000:0000H開始的100H個(gè)字節(jié)的字符串移動(dòng)到2000H:0100H開始的單元,要求在移動(dòng)的過程中將所有小寫字符改變?yōu)榇髮懽址?. STOS/STOSB/STOSW 存數(shù)據(jù)串01H02H03H04H1000:0000H2000:0100HA: 41H a: 61HZ: 5AH z: 7AH 將1000:0000H開始的100H個(gè)字節(jié)的字符串移動(dòng)到2000H:0100H開始的單元,要求在移動(dòng)的過程中將所有小寫字符改變?yōu)榇髮懽址?. STOS/STOSB/STOSW 存數(shù)據(jù)串MOVAX,1000HMOVDS,AXMOVSI,0000HMOVAX,2000HM

25、OVES,AXMOVDI,0100HMOVCX,0100HAG:MOVAL,SICMPAL,aJBOKCMPAL,zJAOKSUBAL,20HOK:MOVES:DI,ALINCSIINCDILOOPAG .01H02H03H04H1000:0000H2000:0100H 將1000:0000H開始的100H個(gè)字節(jié)的字符串移動(dòng)到2000H:0100H開始的單元,要求在移動(dòng)的過程中將所有小寫字符改變?yōu)榇髮懽址?. STOS/STOSB/STOSW 存數(shù)據(jù)串MOVAX,1000HMOVDS,AXMOVSI,0000HMOVAX,2000HMOVES,AXMOVDI,0100HMOVCX,0010H

26、AG:MOVAL,SICMPAL,aJBOKCMPAL,zJAOKSUBAL,20HOK:MOVES:DI,ALINCSIINCDILOOPAG .01H02H03H04H1000:0000H2000:0100HCLDAG:LODSBCMPAL,aJBOKCMPAL,zJAOKSUBAL,20HOK:STOSBLOOPAG 4.CMPS/CMPSB/CMPSW 串比較指令匯編格式指令匯編格式:CMPS/CMPSB/CMPSW dstr,sstr操作操作:將DS段SI指出的數(shù)據(jù)與ES段DI指出的數(shù)據(jù)相減比較,產(chǎn)生標(biāo)志位的變化,然后修改SI,DI的地址指針。 (DS:SI)-(ES:DI) SIS

27、I , DIDI受影響的狀態(tài)標(biāo)志位受影響的狀態(tài)標(biāo)志位:OF,SF,ZF,AF,PF,CF 說明說明:此指令只改變標(biāo)志,并不回送結(jié)果, 因而不改變數(shù)的原始值。12124.CMPS/CMPSB/CMPSW 串比較舉例:比較兩個(gè)數(shù)據(jù)塊是否相同。01H02H03H04H1000:0000H01H02H2000:0100H4.CMPS/CMPSB/CMPSW 串比較舉例:比較兩個(gè)數(shù)據(jù)塊是否相同。MOVAX,1000HMOVDS,AXMOVSI,0000HMOVAX,2000HMOVES,AXMOVDI,0100HMOVCX,0100HAG:MOVAL,SICMPAL,DIJNEEXIT1INCSIINC

28、DILOOPAG . .EXIT1: .01H02H03H04H1000:0000H01H02H2000:0100H4.CMPS/CMPSB/CMPSW 串比較舉例:比較兩個(gè)數(shù)據(jù)塊是否相同。MOVAX,1000HMOVDS,AXMOVSI,0000HMOVAX,2000HMOVES,AXMOVDI,0100HMOVCX,0100HAG:MOVAL,SICMPAL,DIJNEEXIT1INCSIINCDILOOPAG . .EXIT1: .CLDAG:CMPSBJNEEXIT1LOOPAG . .EXIT1: .01H02H03H04H1000:0000H01H02H2000:0100H條件重復(fù)

29、前綴REPZ/REPE和REPNZ/REPNE使用方法及格式:使用方法及格式:這兩條條件重復(fù)前綴的使用方法和格式與REP相同。 操作操作:加有這兩條前綴的串操作指令,在循環(huán)時(shí)不僅檢查CX的值是否為0,還檢查ZF標(biāo)志位是否是1,以CX和ZF的情況共同決定是否重復(fù)執(zhí)行后面的基本串操作指令。 REPZ/REPE為CX0且ZF=1時(shí)重復(fù)執(zhí)行基本操作, CX=0或ZF=0時(shí)停止重復(fù)。 REPNZ/REPNE為CX0且ZF=0時(shí)重復(fù)執(zhí)行基本操作, CX=0或ZF=1時(shí)停止重復(fù)。受影響狀態(tài)標(biāo)志位受影響狀態(tài)標(biāo)志位:由基本串操作指令的執(zhí)行情況決定。條件重復(fù)前綴REPZ/REPE和REPNZ/REPNE舉例:比較

30、兩個(gè)數(shù)據(jù)塊是否相同。MOVAX,1000HMOVDS,AXMOVSI,0000HMOVAX,2000HMOVES,AXMOVDI,0100HMOVCX,0100HCLDAG:CMPSBJNEEXIT1LOOPAG . .EXIT1: .01H02H03H04H1000:0000H01H02H2000:0100H條件重復(fù)前綴REPZ/REPE和REPNZ/REPNE舉例:比較兩個(gè)數(shù)據(jù)塊是否相同。MOVAX,1000HMOVDS,AXMOVSI,0000HMOVAX,2000HMOVES,AXMOVDI,0100HMOVCX,0100HCLDAG:CMPSBJNEEXIT1LOOPAG . .EX

31、IT1: .REPE CMPSBJNEEXIT1 .EXIT1: .01H02H03H04H1000:0000H01H02H2000:0100H5.SCAS/SCASB/SCASW 串搜索指令匯編格式指令匯編格式:SCAS/SCASB/SCASW dstr 操作操作: 將累加器AL(或AX)的值與ES段DI指出的元素相減比較,然后修改DI 的地址指針。 AL(或AX)-(ES:DI) DIDI受影響的狀態(tài)標(biāo)志位受影響的狀態(tài)標(biāo)志位:OF,SF,ZF,AF,PF,CF說明說明:1) 此指令隱含指定AX或AL的值作為一個(gè)操作數(shù),將其與 ES:DI 指出的數(shù)據(jù)串元素相比較,用以實(shí)現(xiàn)在一個(gè)串中對給定值的

32、搜索或查找。當(dāng)給定串為字節(jié)串時(shí)與AL中的內(nèi)容相比較;當(dāng)給定串為字串時(shí),AX中的內(nèi)容相比較。 2)此指令只改變標(biāo)志,不回送結(jié)果。125.SCAS/SCASB/SCASW 串搜索例:例: 從一組數(shù)據(jù)中尋找一個(gè)指定的數(shù)據(jù)。從一組數(shù)據(jù)中尋找一個(gè)指定的數(shù)據(jù)。STR1:COMPUTERMCHR:5.SCAS/SCASB/SCASW 串搜索DSEGSEGMENTSTR1 DBCOMPUTER CHR DBMDSEGSEGMENTASSUME CS:CSEG,DS:DSEGSTART: MOVAX,DSEGMOVDS,AXLEASI,STR1-1MOVCX,8MOVAL,CHRAGAIN: INCSICMPA

33、L,SIJEFOUNDLOOPAGAIN .FOUND: . .CSEGENDSENDSTARTSTR1:COMPUTERMCHR:5.SCAS/SCASB/SCASW 串搜索DSEGSEGMENTSTR1 DBCOMPUTER CHR DBMDSEGSEGMENTASSUME CS:CSEG,DS:DSEGSTART: MOVAX,DSEGMOVDS,AXLEASI,STR1-1MOVCX,8MOVAL,CHRAGAIN: INCSICMPAL,SIJEFOUNDLOOPAGAIN .FOUND: . .CSEGENDSENDSTARTSTART: MOVAX,DSEGMOVES,AXLEA

34、DI,STR1MOVCX,8MOVAL,CHRCLDAGAIN: SCASBJEFOUNDLOOPAGAIN .FOUND: . .STR1:COMPUTERMCHR:5.SCAS/SCASB/SCASW 串搜索DSEGSEGMENTSTR1DBCOMPUTER CHRDBMDSEGSEGMENTASSUME CS:CSEG,DS:DSEGSTART: MOVAX,DSEGMOVES,AXLEADI,STR1MOVCX,8MOVAL,CHRCLDAGAIN: CMPSBJEFOUNDLOOPAGAIN .FOUND: . .CSEGENDSENDSTARTREPNECMPSBJEFOUND .

35、FOUND: . .STR1:COMPUTERMCHR: 7.5 循環(huán)程序的控制方法7.5.1 計(jì)數(shù)法7.5.2 寄存器終值法7.5.3 條件控制法7.5.1 計(jì)數(shù)法 此方法適用于循環(huán)次數(shù)已知的循環(huán)程序,其特點(diǎn)是簡單方便。計(jì)數(shù)法又分為正計(jì)數(shù)法和倒計(jì)數(shù)法兩種。 (1)正計(jì)數(shù) (2)倒計(jì)數(shù)(1)正計(jì)數(shù) 將計(jì)數(shù)器的初值設(shè)置為0,每執(zhí)行一遍工作部分,計(jì)數(shù)器值增1,然后與規(guī)定的已知循環(huán)次數(shù)比較,若相等,則退出循環(huán),否則, 繼續(xù)執(zhí)行循環(huán)體。舉例:計(jì)算S=ii=0100(1)正計(jì)數(shù) 將計(jì)數(shù)器的初值設(shè)置為0,每執(zhí)行一遍工作部分,計(jì)數(shù)器值增1,然后與規(guī)定的已知循環(huán)次數(shù)比較,若相等,則退出循環(huán),否則, 繼續(xù)執(zhí)行循

36、環(huán)體。舉例:計(jì)算S=ii=0100MOV AX,0MOV BX,0AG:ADDAX,BXINCBXCMPBX,100JBEAG2.倒計(jì)數(shù) 將計(jì)數(shù)器的初值設(shè)置為規(guī)定的循環(huán)次數(shù),每執(zhí)行一遍工作部分,計(jì)數(shù)器值減1,測試是否為0,若為0則退出循環(huán),否則繼續(xù)執(zhí)行循環(huán)體。由于正計(jì)數(shù)法與倒計(jì)數(shù)法邏輯上沒有任何區(qū)別,又由于倒計(jì)數(shù)法有專門指令,因此用得較多。例例7.27.2 統(tǒng)計(jì)由DATA開始的字節(jié)數(shù)據(jù)塊中負(fù)元素的個(gè)數(shù),數(shù)據(jù)個(gè)數(shù)在COUNT單元,統(tǒng)計(jì)結(jié)果存入RLT單元。2.倒計(jì)數(shù)-例7.2-13-5.32H00H00H00HDATA:COUNT:RLT:2.倒計(jì)數(shù)-例7.21:;*EXAM7.2*2:DSEG

37、SEGMENT3:DATADB-1,3,-5,.4:COUNTDW505:RLTDW06:DSEG ENDS7:CSEG SEGMENT8:ASSUMECS:CSEG,DS:DSEG9:START:MOVAX,DSEG10:MOVDS,AX11:MOVBX,OFFSET DATA12:MOVCX,COUNT13:MOVDX,014:AG1: MOVAL,BX15:ANDAL,AL16:JNSPLUS17:INCDX18:PLUS:INCBX19:DECCX20:JNZAG121:MOVRLT,DX22:MOVAH,4CH23:INT21H24:CSEG ENDS25:ENDSTART-13-5

38、.32H00H00H00HDATA:COUNT:RLT:7.5.2 寄存器終值控制法 此方法類似于計(jì)數(shù)法,用一個(gè)寄存器存放初始值,每執(zhí)行一次循環(huán)體該寄存器的值都按某種規(guī)律而有所變化,直到該寄存器值達(dá)到某一終值退出循環(huán)。與計(jì)數(shù)法不同之處是:1)寄存器的值本質(zhì)上不一定是循環(huán)的次數(shù),可能是一個(gè)操作數(shù)的地址,也可能是時(shí)間的一種表示或程序中要使用的其他數(shù)據(jù)。顯然,這種控制方法比計(jì)數(shù)法適用問題更為廣泛。2)控制寄存器的初值或終值也不一定是0或循環(huán)計(jì)數(shù)值;所使用的寄存器也不一定限于CX。例例7.37.3 內(nèi)存DATA開始存放若干個(gè)單字節(jié)無符號(hào)數(shù),數(shù)據(jù)末地址為DTEND,編制程序?qū)⑵渲凶畲髷?shù)送入MAX單元。7

39、.5.2 寄存器終值控制法-例例7.37.3 2:DSEGSEGMENT3:DATADB15H,26H,03H,8AH,11H,.4:DTENDDB62H5:MAXDB06:DSEGENDS7:SSEGSEGMENT STACK8:STACKDB50 DUP(0)9:SSEGENDS10:CSEGSEGMENT11:ASSUMECS:CSEG,DS:DSEG12:ASSUMESS:SSEG13:SMAX: MOVAX,DSEG14:MOVDS,AX15:MOVAX,SSEG16:MOVSS,AX17:MOVSP,SIZE STACK18:LEASI,DATA19:MOVAL,SI;取第一個(gè)數(shù)據(jù)

40、取第一個(gè)數(shù)據(jù)20:AG:INCSI;指向下一個(gè)數(shù)據(jù)指向下一個(gè)數(shù)據(jù)21:CMPSI,OFFSET DTEND22:JALOAD;指針大于末址指針大于末址23:CMPAL,SI;兩數(shù)比較兩數(shù)比較24:JAAG;AL中數(shù)大,轉(zhuǎn)中數(shù)大,轉(zhuǎn)25:MOVAL,SI;大數(shù)大數(shù)AL26:JMPAG;轉(zhuǎn),繼續(xù)執(zhí)行轉(zhuǎn),繼續(xù)執(zhí)行27:LOAD: MOVMAX,AL;保存最大值保存最大值28:MOVAH,4CH29:INT21H30:CSEGENDS31:ENDSMAX15H26H03H8AH11H.62HDATA:DTEND:7.5.3 條件控制法 在應(yīng)用問題中常有循環(huán)次數(shù)未知的情況。在循環(huán)次數(shù)未知的程序中,雖然有

41、時(shí)循環(huán)次數(shù)可以通過某種方法求得,但比較麻煩;而有時(shí)循環(huán)程序的循環(huán)次數(shù)根本無法求得。如有些用有限次計(jì)算代替無限計(jì)算過程的問題,用循環(huán)程序求解時(shí)就屬于循環(huán)次數(shù)未知的程序,其控制方法大多是用所給的精度允許誤差來控制,把允許誤差作為控制條件,將前后兩次計(jì)算結(jié)果的誤差與允許誤差相比較,如果滿足要求則退出循環(huán),否則繼續(xù)循環(huán)。這種利用問題本身的結(jié)束條件來控制循環(huán)結(jié)束的方法叫條件控制法。此方法適用于循環(huán)次數(shù)未知的情形,比前兩種方法更具一般性,因而也稍復(fù)雜。LOOP指令對完成此控制方法無能為力,需要用條件轉(zhuǎn)移指令來實(shí)現(xiàn)此控制方法。例例7.47.4 內(nèi)存DATA字單元存放一個(gè)完全平方數(shù),編制程序求其平方根并存入R

42、OOT字單元。7.5.3 條件控制法-例例7.47.4 算法算法:1=1=121+3=4=221+3+5=9=321+3+5+7=16=421+3+5+7+9=25=52 現(xiàn)在已知N,求N的平方根i,則可以從N中依次減去從1開始的連續(xù)奇數(shù),直到N為0時(shí),減去奇數(shù)的個(gè)數(shù)i即為N的平方根。7.5.3 條件控制法-例例7.47.42:DSEGSEGMENT3:DATADW139244:ROOTDW05:DSEGENDS6:SSEGSEGMENT PARA STACK SSEG7:STACKDB50 DUP(0)8:SSEGENDS9:CSEGSEGMENT10:ASSUMECS:CSEG,DS:DS

43、EG11:ASSUMESS:SSEG12:SQRT: MOVAX,DSEG;設(shè)置數(shù)據(jù)段地址設(shè)置數(shù)據(jù)段地址13:MOVDS,AX14:MOVAX,SSEG;設(shè)置堆棧段地址設(shè)置堆棧段地址15:MOVSS,AX16:MOVSP,SIZE STACK17:XORCX,CX;計(jì)數(shù)器清零計(jì)數(shù)器清零18:XORAX,AX;設(shè)設(shè)i的初值為的初值為019:MOVDX,DATA;被開方數(shù)送被開方數(shù)送DX20:AG:ANDDX,DX;被開方數(shù)為零嗎被開方數(shù)為零嗎21:JZLRT;被開方數(shù)為零被開方數(shù)為零,轉(zhuǎn)轉(zhuǎn)22:MOVBX,AX;i值送值送BX23:SHLBX,1;乘乘224:INCBX;形成奇數(shù)形成奇數(shù)25:S

44、UBDX,BX;被開方數(shù)減去奇數(shù)被開方數(shù)減去奇數(shù)26:INCCX;計(jì)數(shù)器值增計(jì)數(shù)器值增127:INCAX;i值增值增128:JMPAG;繼續(xù)工作繼續(xù)工作29:LRT:MOVROOT,CX;保存結(jié)果保存結(jié)果30:MOVAH,4CH31:INT21H32:CSEGENDS33:ENDSQRT7.5.3 條件控制法-例例7.47.41:;*EXAM7.4*2:DSEGSEGMENT3:DATADW139244:ROOTDW05:DSEGENDS6:SSEGSEGMENT PARA STACK SSEG7:STACKDB50 DUP(0)8:SSEGENDS9:CSEGSEGMENT10:ASSUME

45、CS:CSEG,DS:DSEG11:ASSUMESS:SSEG12:SQRT: MOVAX,DSEG;設(shè)置數(shù)據(jù)段地址設(shè)置數(shù)據(jù)段地址13:MOVDS,AX14:MOVAX,SSEG;設(shè)置堆棧段地址設(shè)置堆棧段地址15:MOVSS,AX16:MOVSP,SIZE STACK17:XORCX,CX;計(jì)數(shù)器清零計(jì)數(shù)器清零18:XORAX,AX;設(shè)設(shè)i的初值為的初值為019:MOVDX,DATA;被開方數(shù)送被開方數(shù)送DX20:AG:ANDDX,DX;被開方數(shù)為零嗎被開方數(shù)為零嗎21:JZLRT;被開方數(shù)為零被開方數(shù)為零,轉(zhuǎn)轉(zhuǎn)22:MOVBX,AX;i值送值送BX23:SHLBX,1;乘乘224:INCBX

46、;形成奇數(shù)形成奇數(shù)25:SUBDX,BX;被開方數(shù)減去奇數(shù)被開方數(shù)減去奇數(shù)26:INCCX;計(jì)數(shù)器值增計(jì)數(shù)器值增127:INCAX;i值增值增128:JMPAG;繼續(xù)工作繼續(xù)工作29:LRT:MOVROOT,CX;保存結(jié)果保存結(jié)果30:MOVAH,4CH31:INT21H32:CSEGENDS33:ENDSQRTAX7.6 單重循環(huán)程序舉例例例7.57.5 自內(nèi)存 DATA 單元開始存放若干個(gè)無符號(hào)字節(jié)數(shù)據(jù),數(shù)據(jù)個(gè)數(shù)在COUNT 單元存放。編制程序分別計(jì)算其中奇數(shù)奇數(shù)、偶數(shù)偶數(shù)及及被被4 整除的數(shù)整除的數(shù)的和,并分別存入 ODDSUM ,EVENSM和FORSUM單元。設(shè)各類和不超過16位二進(jìn)

47、制數(shù),可用一個(gè)字表示或存放。算法算法:奇數(shù):數(shù)據(jù)的最低位為1偶數(shù):數(shù)據(jù)的最低位為0被4整除的數(shù):數(shù)據(jù)的最低位和次低位均07.6 單重循環(huán)程序舉例-例例7.57.5 1:;*EXAM7.5*2:DSEGSEGMENT3:DATA DB15H,26H,03H,64H4: DB8AH,0AAH,24H,48H5:COUNTDW086:ODDSUM DW07:EVENSM DW08:FORSUM DW09:DSEG ENDS10:SSEGSEGMENT STACK11:STACK DB 20 DUP(0)12:SSEGENDS13:CSEGSEGMENT14:ASSUME CS:CSEG,DS:DSE

48、G15:ASSUME SS:SSEG16:FSUM: MOVAX,DSEG;設(shè)置數(shù)據(jù)段地址設(shè)置數(shù)據(jù)段地址17:MOV DS,AX 18:MOV AX,SSEG;設(shè)置堆棧段地址設(shè)置堆棧段地址19:MOVSS,AX20:MOV SP,SIZE STACK 15H26H03H64H8AH0AAH24H48H08H00H00H00H00H00H00H00HDATA:COUNT:ODDSUM:EVENSUM:FORSUM:7.6 單重循環(huán)程序舉例-例例7.57.521:LEA SI,DATA;設(shè)置地址指針設(shè)置地址指針22:MOV CX,COUNT;計(jì)數(shù)值送計(jì)數(shù)值送CX23:XORAX,AX;AX清清02

49、4:XOR BX,BX;清存和寄存器清存和寄存器25:XOR DX,DX26:XOR DI,DI27:AG:MOV AL,SI;取數(shù)據(jù)取數(shù)據(jù)28:TESTAL,01;測試最低位測試最低位29:JZEVNS;偶數(shù)偶數(shù),轉(zhuǎn)轉(zhuǎn)30:ADDBX,AX;奇數(shù)奇數(shù),累計(jì)和累計(jì)和 31:JMPCHNT32:EVNS:ADDDX,AX;偶數(shù)偶數(shù),累計(jì)和累計(jì)和33:TEST AL,03;能否被能否被4整除整除34:JNZ CHNT;不能被不能被4整除整除35:ADD DI,AX ;能能,累計(jì)和累計(jì)和36:CHNT:INCSI ;指向下個(gè)數(shù)據(jù)指向下個(gè)數(shù)據(jù)37:LOOP AG;計(jì)算完計(jì)算完?未完繼續(xù)未完繼續(xù)38:M

50、OVODDSUM,BX;保存結(jié)果保存結(jié)果 39:MOV EVENSM,DX40:MOV FORSUM,DI41:MOV AH,4CH42:INT21H43:CSEG ENDS44:ENDFSUM15H26H03H64H8AH0AAH24H48H08H00H00H00H00H00H00H00HDATA:COUNT:ODDSUM:EVENSUM:FORSUM:例例7.67.6 已知某件密碼由英文字母A,B,C,D,Z組成,最后以美元符號(hào)結(jié)束,且以ASCII碼形式存在內(nèi)存CIPHER開始的單元。 統(tǒng)計(jì)各字母在此件密碼中出現(xiàn)的次數(shù),并依次存入CHRFQ開始的內(nèi)存單元。 為了統(tǒng)計(jì)各字母出現(xiàn)的次數(shù),先把C

51、HRFQ開始的26個(gè)單元清0,每當(dāng)出現(xiàn)某一字母,則在相應(yīng)的內(nèi)存單元加1,所有密碼全部測試后,CHRFQ開始的單元依次存放了A,B,C,Z在密碼文件中出現(xiàn)的次數(shù)。 如何判斷一個(gè)密碼文字是哪個(gè)字母,首先想到的一定是從密碼中取出一個(gè)字母與字母AZ逐個(gè)比較,那么每個(gè)字母平均比較次數(shù)為26/2次,顯然是比較麻煩,程序冗長,執(zhí)行時(shí)間長。7.6 單重循環(huán)程序舉例-例例7.67.67.6 單重循環(huán)程序舉例-例例7.67.6 由于字母相鄰的差都是1, 因此可以通過簡單的計(jì)算找到該字母對應(yīng)的內(nèi)存單元的地址,對該單元的內(nèi)容加1即可。例如取得字母B,其ASCII碼為42H,將42H-A,結(jié)果為1,與CHRFQ的地址相

52、加,即得到CHRFQ+1,就是對該單元操作。BVDCJKJKLHTVU.$CIPHER+0+1+2+3+4+5+6+7+8+9+10+11+12.00H00H00H00H00H00H00H00H00H00H00H00H00H.CHRFQ+0+1+2+3+4+5+6+7+8+9+10+11+12.+257.6 單重循環(huán)程序舉例-例例7.67.61:;*EXAM7.6*2:SSEG SEGMENT STACK3:STACK DB 50 DUP(0)4:SSEG ENDS5:DSEG SEGMENT6:CIPHER DB BVDCJKJKLHTVUIPRERTZEQ7: DBHKAXUERTJKLH

53、FSDSAPAWBEQ8: DBDHFSBNMHMVRTUDPOIHFXJMO$9:CHRFQ DB 26 DUP(?)10:DSEG ENDS11:CSEG SEGMENT12: ASSUME CS:CSEG,DS:DSEG13: ASSUME SS:SSEG,ES:DSEG14:DECPHR: MOV AX,DSEG;設(shè)置數(shù)據(jù)段15: MOV DS,AX16: MOV ES,AX17: MOV AX,SSEG ;設(shè)置堆棧段地址18: MOV SS,AX19: MOV SP,SIZE STACK ;設(shè)堆棧指針BVDCJKJKLHTVU.$CIPHER+0+1+2+3+4+5+6+7+8+9+

54、10+11+12.00H00H00H00H00H00H00H00H00H00H00H00H00H.CHRFQ+0+1+2+3+4+5+6+7+8+9+10+11+12.+257.6 單重循環(huán)程序舉例-例例7.67.620: LEA DI,CHRFQ ;將結(jié)果單元清021: MOV CX,2622: CLD23: XOR AL,AL24: REP STOSB25: LEA SI,CIPHER ;密碼首址送SI26:AG: LEA DI,CHRFQ ;結(jié)果單元首址送DI27: MOVAL,SI ;取一密碼字符28: CMP AL,$ ;是結(jié)束符嗎?29: JZ STOP ;是,轉(zhuǎn)停機(jī)30: SUB

55、 AL,41H ;代碼減41H31: XOR AH,AH ;高位部分清零.32: ADD DI,AX ;形成結(jié)果單元地址33: INC BYTE PTRDI;出現(xiàn)次數(shù)增134: INC SI ;SI指向下一個(gè)代碼35: JMP AG ;繼續(xù)工作36:STOP: MOV AH,4CH37: INT 21H38:CSEG ENDS 39: END DECPHRBVDCJKJKLHTVU.$CIPHER+0+1+2+3+4+5+6+7+8+9+10+11+12.00H00H00H00H00H00H00H00H00H00H00H00H00H.CHRFQ+0+1+2+3+4+5+6+7+8+9+10+1

56、1+12.+257.6 單重循環(huán)程序舉例-例例7.67.620: LEA DI,CHRFQ 21: MOV CX,2622: CLD23: XOR AL,AL24: REP STOSB25: LEA SI,CIPHER 26:AG: LEA DI,CHRFQ 27: MOVAL,SI 28: CMP AL,$ 29: JZ STOP 30: SUB AL,41H 31: XOR AH,AH 32: ADD DI,AX 33: INC BYTE PTRDI34: INC SI 35: JMP AG 36:STOP: MOV AH,4CH37: INT 21H38:CSEG ENDS 39: EN

57、D DECPHRAG:MOVBL,SICMP BL,$ JZ STOP SUB BL,A XOR BH,BH INC CHRFQBX INC SIBVDCJKJKLHTVU.$CIPHER+0+1+2+3+4+5+6+7+8+9+10+11+12.00H00H00H00H00H00H00H00H00H00H00H00H00H.CHRFQ+0+1+2+3+4+5+6+7+8+9+10+11+12.+257.7 多重循環(huán)程序設(shè)計(jì) 如果一個(gè)循環(huán)程序的循環(huán)體內(nèi)還包含有一個(gè)或多個(gè)循環(huán)結(jié)構(gòu)的程序,那么這個(gè)程序稱為雙重或多重循環(huán)結(jié)構(gòu)程序。我們先用軟件延時(shí)程序來說明多重循環(huán)程序的結(jié)構(gòu)。 SOFTDLY:MOV

58、 BL,10 DELAY: MOV CX,2801 WAIT0: LOOP WAIT0 ;內(nèi)循環(huán)延時(shí)10ms DEC BL JNZ DELAY此程序每次內(nèi)循環(huán)時(shí),CX由2801減至零,BL維持不變。外循環(huán)進(jìn)行10遍。 此程序雖然簡單,但是其結(jié)構(gòu)是雙重循環(huán)。7.7 多重循環(huán)程序設(shè)計(jì) 例例7.77.7 內(nèi)存DATA開始存放100個(gè)單字節(jié)數(shù)據(jù)。編寫程序統(tǒng)計(jì)這些數(shù)據(jù)內(nèi)“0”和“1”個(gè)數(shù)相等的數(shù)據(jù)有多少,將結(jié)果存入NUMB單元。完成此例需要一個(gè)數(shù)據(jù)一個(gè)數(shù)據(jù)地檢查0和1是否相等,相等時(shí)則計(jì)數(shù)加1,直到100個(gè)數(shù)據(jù)檢查完畢。15H27H94H11H3BH48H.DATA+0+1+2+3+4+5+6+7+8+

59、9+10+11+12.+997.7 多重循環(huán)程序設(shè)計(jì) 1:;*EXAM7.7*2:SSEG SEGMENTSTACK3:STACK DW 50 DUP(0)4:SSEG ENDS 5:DSEG SEGMENT6:DATA DB 15H,27H,94H ;共100個(gè)數(shù)7: DB 11H,3B,48H,. 8:NUMB DB 09:DSEG ENDS10:CSEG SEGMENT11: ASSUME CS:CSEG,DS:DSEG12: ASSUME SS:SSEG 13:START: MOV AX,DSEG 14: MOV DS,AX15: MOVAX,SSEG16: MOVSS,AX17: M

60、OVSP,SIZE STACK15H27H94H11H3BH48H.DATA+0+1+2+3+4+5+6+7+8+9+10+11+12.+997.7 多重循環(huán)程序設(shè)計(jì) 18:MOVSI,OFFSET DATA19:MOVCL,10020:XORAL,AL21:RPT2:MOVCH,08H22:XORBH,BH23:MOVAH,SI24:RPT1:RORAH,125:JNCCHT126:INCBH27:CHT1:DECCH28:JNZRPT129:CMPBH,0430:JNZCHT231:INCAL32:CHT2:INCSI33:DECCL34:JNZRPT235:MOVDNUMB,AL36:M

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論