語言程序設(shè)計_第1頁
語言程序設(shè)計_第2頁
語言程序設(shè)計_第3頁
語言程序設(shè)計_第4頁
語言程序設(shè)計_第5頁
已閱讀5頁,還剩66頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第五章 匯編語言程序設(shè)計主要內(nèi)容 第五章 匯編語言程序設(shè)計匯編語言的結(jié)構(gòu)常用的偽指令各種匯編語言程序的基本結(jié)構(gòu)的設(shè)計方法及實現(xiàn)常用的DOS功能調(diào)用 主要內(nèi)容:難點:常用的DOS功能調(diào)用計算機(jī)程序設(shè)計語言的演變計算機(jī)程序設(shè)計語言的演變 1.機(jī)器語言機(jī)器語言(Machine Language) 2.匯編語言匯編語言(Assembly Language) 匯編程序的“翻譯”作用 機(jī)器語言、匯編語言和高級語言 第五章 匯編語言程序設(shè)計3.高級語言高級語言(High-levellanguage) C/C+ +4. 混合語言(混合語言(Hybrid Language) 一、匯編語言語法一、匯編語言語法 匯

2、編語言源程序書寫格式 第五章 匯編語言程序設(shè)計匯編語言源程序是匯編語言語句的有序集合。1字符集8086/8088宏匯編語言的單詞是由下列字符構(gòu)成的。1)英文字母:az,AZ;2)數(shù)字:09;3)算術(shù)運算符:+ - * /;4)分隔符: , : ; ( ) = SP(空格) TAB(制表符);5)控制符:CR(回車) LF(換行) FF(換頁);6)專用字符:$ & _(下劃線) ? . %。用匯編語言編寫的程序中,指令的助記符、各種操作符等都是由上述字符組成。一、匯編語言語法一、匯編語言語法 匯編語言源程序書寫格式 第五章 匯編語言程序設(shè)計2標(biāo)識符標(biāo)識符是給程序中的標(biāo)號、變量、記錄、結(jié)

3、構(gòu)、段、過程等起的名字,它應(yīng)符合下列規(guī)定:1)標(biāo)識符的第一個字符必須是字母、“?”、“”或“_”;2)從第二個字符開始可以是字母、數(shù)字、“?”、“”或“_”;3)一個標(biāo)識符的最大長度為31個字符;4)不能為保留字。3保留字8086/8088中的寄存器名、指令助記符、各種操作符等都是系統(tǒng)專用的保留字。這些保留字用戶不能用作標(biāo)識符,編寫程序時必須注意。一、匯編語言語法一、匯編語言語法 匯編語言源程序書寫格式 第五章 匯編語言程序設(shè)計4、三種基本語句 指令語句偽指令語句宏指令語句 5、四種邏輯段代碼段(必須)數(shù)據(jù)段(可選)堆棧段(可選)附加段(可選)STACK_SEG SEGMENT;定義作為堆棧段

4、的邏輯段,段名為STACK_SEGDW 256 DUP(?) ;分配堆棧段的大小,設(shè)置為256個字TOP LABEL WORD ;定義堆棧棧底位置STACK_SEG ENDSDATA_SEG SEGMENT ;定義作為數(shù)據(jù)段的邏輯段,段名為DATA_SEG STRING DB Let us have a try !,$;定義字符串?dāng)?shù)據(jù)DATA_SEG ENDSCODE_SEG SEGMENT;定義作為代碼段的邏輯段,段名為CODE_SEG ASSUME CS:CODE_SEG, DS:DATA_SEG, SS:STACK_SEGSTART: MOVAX, DATA_SEG ;程序執(zhí)行起始點MO

5、V DS, AX ;將段寄存器指向用戶數(shù)據(jù)段MOV AX, STACK_SEGMOV SS, AX ;將堆棧指針指向用戶定義堆棧MOV SP, OFFSET TOPLEA DX,STRINGMOV AH,9 ;系統(tǒng)功能調(diào)用,在CRT顯示字符串INT 21HMOV AH, 4CH;系統(tǒng)功能調(diào)用,程序結(jié)束返回操作系統(tǒng)INT 21HCODE_SEG ENDSEND START ;匯編結(jié)束,程序起始點為START堆棧段數(shù)據(jù)段代碼段匯編語言源程序書寫格式 第五章 匯編語言程序設(shè)計匯編語言源程序書寫格式 第五章 匯編語言程序設(shè)計一、匯編語言語句一、匯編語言語句 匯編語言源程序書寫格式 第五章 匯編語言程序

6、設(shè)計1匯編語言語句的種類匯編語言有三種基本語句:指令語句、偽指令語句和宏指令語句。指令語句:產(chǎn)生一個目標(biāo)代碼偽指令語句:為匯編程序和連接程序提供一些必要控制信息的管理性語句,不產(chǎn)生目標(biāo)代碼。宏指令語句的宏指令是編程者根據(jù)宏指令定義規(guī)則,將一組指令或偽指令集中定義的一條“宏大”的指令。 宏指令只節(jié)省源程序篇幅,不節(jié)省匯編后的目標(biāo)代碼。偽指令語句在匯編時不產(chǎn)生目標(biāo)代碼,而指令語句必產(chǎn)生相對應(yīng)的機(jī)器代碼,這一點是兩者的本質(zhì)區(qū)別。此外,偽指令語句的偽操作是在匯編過程或連接過程中完成的,而指令語句的操作是在運行用戶程序時完成的。 匯編語言源程序書寫格式 第五章 匯編語言程序設(shè)計2匯編語言語句的格式匯編語

7、言的三種語句格式是類似的:指令語句的格式: 標(biāo)號: 操作符 參數(shù),參數(shù);注釋偽指令語句的格式:名字 操作符 參數(shù) ,參數(shù) ;注釋宏指令語句的格式:標(biāo)號: 操作符 實參數(shù)表 ;注釋匯編語言源程序書寫格式 第五章 匯編語言程序設(shè)計3匯編語言語句的格式三種語句都由四部分組成:第一部分是標(biāo)號或名字,符合標(biāo)識符定義的要求標(biāo)號后面有冒號,表示此語句為指令語句,在匯編時產(chǎn)生與之對應(yīng)的機(jī)器碼,名字后沒有冒號,表示此語句為偽指令語句,在匯編時不產(chǎn)生機(jī)器碼,所以,匯編語言語句中有無冒號是在匯編時是否產(chǎn)生機(jī)器碼的一個標(biāo)志,也是指令語句和偽指令語句的最大區(qū)別。 LAB:MOV AX,BX ;指令語句,LAB后跟冒號Y

8、 DB 30H ;偽指令語句,Y后不跟冒號匯編語言源程序書寫格式 第五章 匯編語言程序設(shè)計匯編語言源程序書寫格式 第五章 匯編語言程序設(shè)計4.匯編語句的操作數(shù)(匯編語句的操作數(shù)(Operands) 寄存器(Registers) 常量(Constants) 匯編語言源程序書寫格式 第五章 匯編語言程序設(shè)計匯編語言源程序書寫格式 第五章 匯編語言程序設(shè)計匯編語言源程序書寫格式 第五章 匯編語言程序設(shè)計匯編語言源程序書寫格式 第五章 匯編語言程序設(shè)計匯編語言源程序書寫格式 第五章 匯編語言程序設(shè)計匯編語言源程序書寫格式 第五章 匯編語言程序設(shè)計存儲器操作數(shù) 標(biāo)識符 LENGTH = * LENGTH

9、 特定數(shù)據(jù)類型的元素個數(shù) 等 匯編語言源程序書寫格式 第五章 匯編語言程序設(shè)計匯編語言源程序書寫格式 第五章 匯編語言程序設(shè)計匯編語言源程序書寫格式 第五章 匯編語言程序設(shè)計例: 假設(shè)數(shù)據(jù)段的首地址50000H A1 DB 24H,47H,0F3H A2 DW 4567H,0A00H A3 DD 0B1234098H,98765432H A4 DW 40H DUP(1) SEGOFFSETTYPELENGTH SIZEA1A2A3A4匯編語言源程序書寫格式 第五章 匯編語言程序設(shè)計例: 假設(shè)數(shù)據(jù)段的首地址50000H A1 DB 24H,47H,0F3H A2 DW 4567H,0A00H A

10、3 DD 0B1234098H,98765432H A4 DW 40H DUP(1) SEGOFFSETTYPELENGTH SIZEA150000111A250003212A350007414A4500015240H80H匯編語言源程序書寫格式 第五章 匯編語言程序設(shè)計2、屬性操作符 這類運算符為存儲器操作數(shù)臨時指定一個新的屬性,而忽略當(dāng)前屬性,因此又稱為屬性修改運算符。 PTR 格式:類型 PTR 存儲器地址表達(dá)式例: INC WORD PTR BXTHIS格式:THIS 類型作用:THIS運算符功能與PTR類似,由它所生成的新的存儲器操作數(shù)的段和偏移量兩屬性與下一個存儲單元的段和偏移量相

11、同,但類型由THIS指定,例如:Z11 EQU THIS WORDZ1 DB 20H,40H則變量Z11和Z1具有相同的段和偏移量屬性,但Z11的類型為WORD,而Z1是屬性為BYTE。匯編語言源程序書寫格式 第五章 匯編語言程序設(shè)計一、數(shù)據(jù)定義及存儲分配偽指令一、數(shù)據(jù)定義及存儲分配偽指令格式:變量名 DB/DW/DD/DQ/DT ;注釋重復(fù)操作符DUP:常用在數(shù)據(jù)定義偽指令中,其使用的格式為:變量名 DB/DW/DD/DQ/DT DUP(表達(dá)式2);注釋例: A1 DB 10,10H ;定義兩個字節(jié) A2 DW 10,10H ;定義兩個字 A3 DB AB ;定義兩個字節(jié) = A4 DW A

12、B ;定義一個字 A5 DB 3 DUP(1,2,3)見L1.ASM0A100A00100041424241010203010203010203ARRAY DB 20 DUP (0,1,4 DUP(2),5)共占有多少字節(jié)?140個個偽指令及其應(yīng)用 第五章 匯編語言程序設(shè)計表達(dá)式1表示重復(fù)次數(shù);表達(dá)式2表示要重復(fù)的內(nèi)容,可以是一個問號“?”,或一個數(shù)據(jù)表項,將相應(yīng)單元初始化二、等值(賦值)語句二、等值(賦值)語句EQU格式:符號名 EQU 表達(dá)式等號語句等號語句=格式:符號名 = 表達(dá)式注意:用EQU和= 定義的符號不占存儲單元。例: 假設(shè)數(shù)據(jù)段的首地址50000H A1 DB 24H,47H

13、,0F3H A2 DW 4567H,0A00H A3 DD 0B1234098H,98765432H L1 EQU 40H A4 DW L1 DUP(1) 三、標(biāo)號定義偽指令三、標(biāo)號定義偽指令LABEL格式: 變量名或標(biāo)號名 LABEL 類型偽指令及其應(yīng)用 第五章 匯編語言程序設(shè)計格式: 變量名或標(biāo)號名變量名或標(biāo)號名 LABEL 類型類型例:VAR1 LABLE WORD VAR2 DB 20 DUP(1)變量VAR1和VAR2具有相同的段基址和偏移量,但類型不同:VAR1是字型,VAR2是字節(jié)型。四、段定義偽指令四、段定義偽指令SEGMENT/ENDS格式:段名 SEGMENT 定位類型 組

14、合類型 類別 ;段內(nèi)語句序列段名 ENDS 定位類型定位類型規(guī)定了對該段的起始地址的要求,可以有以下四種選擇:PAGE(頁):其16進(jìn)制地址最低2位為00H。PARA(節(jié)):其16進(jìn)制地址最低1位為0H。該類型為系統(tǒng)的缺省值。WORD(字):該段從偶地址開始。BYTE(字節(jié)):組合類型組合類型表示該段與其它段之間的連接和定位關(guān)系,是在連接時起作用的。可以有以下六種選擇:NONE:該類型為系統(tǒng)的缺省值。PUBLIC、STACK、COMMON、AT表達(dá)式、MEMORY。類別類別是由編程者賦予該段的與段名不同的另一個名字信息,必須用單引號括起來。在連接時由連接程序?qū)⒊绦蛑兴蓄悇e相同的段組成一個段組

15、。偽指令及其應(yīng)用 第五章 匯編語言程序設(shè)計六、過程定義偽指令六、過程定義偽指令 定義子程序的格式為: 過程名 PROC NEAR/FAR默認(rèn)為NEAR RET過程名 ENDPNear:表示主程序與子過程在同一個代碼段FAR:表示主程序與子過程不在同一個代碼段七、程序開始偽指令七、程序開始偽指令ORG和當(dāng)前位置指針和當(dāng)前位置指針$告訴匯編程序在它以后的程序段或數(shù)據(jù)塊存放起點的偏移地址。其格式為:ORG 表達(dá)式(065535)$:當(dāng)前地址指針,告訴匯編程序使用當(dāng)前地址五、段尋址偽指令五、段尋址偽指令A(yù)SSUME該偽指令用來告訴匯編程序某個段是使用哪一個段寄存器。格式: ASSUME 段寄存器名:段

16、名,段寄存器名:段名,偽指令及其應(yīng)用 第五章 匯編語言程序設(shè)計八、程序結(jié)束偽指令八、程序結(jié)束偽指令END該語句為匯編語言源程序的最后一個語句,用以標(biāo)志整個程序的結(jié)束,即告訴匯編程序,匯編到此結(jié)束,停止匯編工作。 其中表達(dá)式的值必須是一個存儲器地址,即程序中第一條可執(zhí)行指令的地址。其格式為:END 標(biāo)號偽指令及其應(yīng)用 第五章 匯編語言程序設(shè)計指令或語句指令或語句就是告訴計算機(jī)為完成某一計算步驟需要執(zhí)行的操作。程序程序是為了求解某個問題所必須的完整的指令序列或語句串加上必要的數(shù)據(jù)。程序設(shè)計程序設(shè)計是編寫程序的過程。當(dāng)在設(shè)計一個程序時,應(yīng)該考慮滿足以下目標(biāo)目標(biāo):1)程序的正確性。2)增強(qiáng)程序的可讀性

17、。3)所寫程序應(yīng)該是結(jié)構(gòu)化的,易修改,易調(diào)試,即程序的可維護(hù)性。程序設(shè)計的基本步驟基本步驟1. 分析問題,建立模型例:Y=|X|Y= -X開始X=0Y= X結(jié)束Y= -X4分配存儲空間和工作單元5編寫程序 6上機(jī)調(diào)試、運行程序2確定算法3根據(jù)算法畫出程序流程圖程序設(shè)計步驟 第五章 匯編語言程序設(shè)計程序的基本結(jié)構(gòu)程序程序是指令(語句)的有序集合,是對系統(tǒng)任務(wù)處理步驟的描述。程序的執(zhí)行是有一定順序的,依據(jù)執(zhí)行順序執(zhí)行順序可將程序分為如下基本結(jié)構(gòu):順序結(jié)構(gòu)、分支(選擇)結(jié)構(gòu)、循環(huán)結(jié)構(gòu)和子程序結(jié)構(gòu)順序結(jié)構(gòu)、分支(選擇)結(jié)構(gòu)、循環(huán)結(jié)構(gòu)和子程序結(jié)構(gòu)。順序結(jié)構(gòu)順序結(jié)構(gòu):是一種線性結(jié)構(gòu),這種結(jié)構(gòu)的程序每執(zhí)行一

18、次,其中的語句或程序段依次被執(zhí)行一次程序的順序結(jié)構(gòu)如圖所示:S1S2S3其中S1、S2、S3表示順序執(zhí)行的語句或程序段。例例5-4 假設(shè)由下列數(shù)學(xué)公式:Y=X3+8X2+8X+6試編寫當(dāng)X=10時,計算Y值的程序。(X)AX(AX)+8AX (AX)*(X)AX(AX)+6AX(AX)+8AX (AX)*(X)AXAX (Y) Y=(X+8)X+8)X+6程序的基本結(jié)構(gòu) 第五章 匯編語言程序設(shè)計START: MOV AX,STACK_SEG MOV SS,AX MOV SP,OFFSET TOP PUSH DS SUB AX,AX PUSH AX MOV AX,DATA_SEG MOV DS,

19、AX MOV AX,X ADD AX,8 MUL X ADD AX,8 MUL X ADD AX,5 MOV Y,AX RET MAIN ENDPCODE_SEG ENDS END STARTDATA_SEG SEGMENT X DW 10 Y DW 0 DATA_SEG ENDSSTACK_SEG SEGMENT STACK STACK DW 100 DUP (?) TOP LABEL WORDSTACK_SEG ENDSCODE_SEG SEGMENTMAIN PROC FAR ASSUME CS:CODE_SEG,DS:DATA_SEG ASSUME SS:STACK_SEG例例5-4

20、假設(shè)由下列數(shù)學(xué)公式:Y=X3+8X2+8X+6試編寫當(dāng)X=10時,計算Y值的程序。程序的基本結(jié)構(gòu) 第五章 匯編語言程序設(shè)計2查表程序 查表的關(guān)鍵在于組織表格,表格中應(yīng)包含題目所有可能的值,且按順序排列。這樣查表操作的思路是:先利用表格首址加偏移地址形成結(jié)果所在地址,再用MOV數(shù)據(jù)傳送指令得到結(jié)果;或直接利用XLAT查表指令得到結(jié)果。 例5-5 內(nèi)存中自TABLE開始的16個單元連續(xù)存放著自然數(shù)015的平方值(稱作平方表)。任給一數(shù)X(0X15)在XX單元,查表求X的平方值,并把結(jié)果存入YY單元。 014916253649程序的基本結(jié)構(gòu) 第五章 匯編語言程序設(shè)計DATASEGMENTTABLED

21、B0,1,4,9,16,25,36,49,64,81;預(yù)置平方表DB100,121,144,169,196,225XXDB5;變量XYYDB?;定義結(jié)果存放單元DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTARTPROCFARPUSHDS;保存返回地址MOVAX,0PUSHAXMOVAX,DATA;初始化DSMOVDS,AXLEABX,TABLE;BX指向表首址MOVAL,XX;被查數(shù)作索引值XLAT;查表MOVYY,AL;存結(jié)果RET;返回DOSSTARTENDPCODEENDSENDSTART例5-5 內(nèi)存中自TABLE開始的16個單

22、元連續(xù)存放著自然數(shù)015的平方值(稱作平方表)。任給一數(shù)X(0X15)在XX單元,查表求X的平方值,并把結(jié)果存入YY單元。 程序的基本結(jié)構(gòu) 第五章 匯編語言程序設(shè)計二、分支程序結(jié)構(gòu) 滿足 判斷條件 不滿足 判斷條件 不滿足 滿足 條件 n 條件 1 條件 2 P1 P2 P1 P2 Pn 入口 入口 圖 5-7 分支程序的結(jié)構(gòu)形式 (a) (b) 匯編語言中實現(xiàn)分支的要素有二:(1)使用能影響狀態(tài)標(biāo)志的指令,如算術(shù)運算指令、邏輯運算指令和移位指令等,利用狀態(tài)標(biāo)志來反映條件成立與否。(2)使用條件轉(zhuǎn)移指令,對狀態(tài)位進(jìn)行測試判斷,確定程序如何轉(zhuǎn)移,形成分支。程序的基本結(jié)構(gòu) 第五章 匯編語言程序設(shè)計

23、2分支程序設(shè)計的方法 (1)利用比較(或測試)、轉(zhuǎn)移指令實現(xiàn)分支 例5-6 編寫程序計算Y=X,X,Y為字變量。 DATASEGMENTXDW10HYDW?DATAENDSCODESEGMENTMAINPROCFARASSUME CS:CODE,DS:DATASTART: PUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXMOVAX,X ;取數(shù)TESTAX,8000H ;測試數(shù)據(jù)正負(fù)JZPOS;為正轉(zhuǎn)移至POSNEGAX;為負(fù),求補(bǔ)POS:MOVY,AX;送結(jié)果至Y單元RET;返回DOSMAINENDPCODEENDSENDSTART程序的基本結(jié)構(gòu) 第五章 匯編語言程

24、序設(shè)計(2)利用跳轉(zhuǎn)表實現(xiàn)分支跳轉(zhuǎn)表是存放一系列跳轉(zhuǎn)地址、跳轉(zhuǎn)指令或關(guān)鍵字等的表,可以放在內(nèi)存中的一段地址連續(xù)的存儲單元中。這種方法常用于多分支的情況。例5-7 某工廠8種產(chǎn)品的加工程序R0、R1、R7,分別存放在以L0、L1、L7為首址的內(nèi)存區(qū)域中,這8個首址偏移量連續(xù)存放在BASE為首址的跳轉(zhuǎn)表內(nèi),如圖5-8所示。從鍵盤上鍵入產(chǎn)品號(實際上是一個07數(shù)字的ASCII碼,先去掉高位,將它轉(zhuǎn)換成真正產(chǎn)品號),存于AL中,然后利用這個跳轉(zhuǎn)表可以求出表地址=表首址+產(chǎn)品號2,再通過寄存器間接尋址方法,由無條件轉(zhuǎn)移指令轉(zhuǎn)到不同的程序段去執(zhí)行相應(yīng)的加工程序。 程序的基本結(jié)構(gòu) 第五章 匯編語言程序設(shè)計(

25、2)利用跳轉(zhuǎn)表實現(xiàn)分支跳轉(zhuǎn)表是存放一系列跳轉(zhuǎn)地址、跳轉(zhuǎn)指令或關(guān)鍵字等的表,可以放在內(nèi)存中的一段地址連續(xù)的存儲單元中。這種方法常用于多分支的情況。例5-7 某工廠8種產(chǎn)品的加工程序R0、R1、R7,分別存放在以L0、L1、L7為首址的內(nèi)存區(qū)域中,這8個首址偏移量連續(xù)存放在BASE為首址的跳轉(zhuǎn)表內(nèi),如圖5-8所示。從鍵盤上鍵入產(chǎn)品號(實際上是一個07數(shù)字的ASCII碼,先去掉高位,將它轉(zhuǎn)換成真正產(chǎn)品號),存于AL中,然后利用這個跳轉(zhuǎn)表可以求出表地址=表首址+產(chǎn)品號2,再通過寄存器間接尋址方法,由無條件轉(zhuǎn)移指令轉(zhuǎn)到不同的程序段去執(zhí)行相應(yīng)的加工程序。 程序的基本結(jié)構(gòu) 第五章 匯編語言程序設(shè)計DATAS

26、EGMENTBASEDW L0,L1,L2,L3,L4,L5,L6,L7DATAENDSCODESEGMENT ASSUME CS:CODE,DS:DATAMAINPROCFARSTART: MOVAX,DATAMOVDS,AXMOVAH,01HINT21HCMPAL,30HJBEXITCMPAL,38HJAEEXITANDAL,0FHADDAL,ALMOVAH,0LEABX,BASEADDBX,AXJMPWORD PTRBX L0:MOVDL,AJMPLL1:MOVDL,BJMPLL2:MOVDL,CJMPLL3:MOVDL,DJMPLL4:MOVDL,EJMPLL5:MOVDL,FJMPL

27、L6:MOVDL,GJMPLL7:MOVDL,HL:MOVAH,02HINT21HEXIT:MOVAH,4CH ;返回返回DOSINT21HMAINENDPCODEENDSEND START程序的基本結(jié)構(gòu) 第五章 匯編語言程序設(shè)計循環(huán)程序:當(dāng)每次執(zhí)行這個程序結(jié)構(gòu)時,有部分程序可能被執(zhí)行若干次。循環(huán)程序一般由五部分組成:(1)初始化部分 也稱循環(huán)的準(zhǔn)備部分。(2)工作部分 也稱循環(huán)體,是循環(huán)程序的核心部分。(3)修改部分 (4)控制部分 (5)結(jié)束處理部分 對循環(huán)結(jié)果進(jìn)行分析或保存。循環(huán)程序從執(zhí)行循環(huán)的控制結(jié)構(gòu)上分可有兩種基本結(jié)構(gòu)形式:(1 ) “先執(zhí)行,后判斷”控制結(jié)構(gòu)(2 ) “先判斷,后執(zhí)

28、行”控制結(jié)構(gòu) 初始化部分 初始化部分 工作部分 循環(huán)結(jié)束? Y N 修改部分 工作部分 N 循環(huán)結(jié)束? 修改部分 Y 結(jié)束處理部分 結(jié)束處理部分程序的基本結(jié)構(gòu) 第五章 匯編語言程序設(shè)計循環(huán)程序的控制方法 常用的循環(huán)程序的控制方法有計數(shù)法、寄存器終值法、條件控制法、開關(guān)控制法和邏輯控制法等(主要敘述前三種方法)。單循環(huán)程序的設(shè)計方法單循環(huán)程序的設(shè)計方法 1.計數(shù)控制型計數(shù)控制型 這種程序設(shè)計方法直觀,方便,但必須在循環(huán)次數(shù)已知的的條件下才能采用。例1: 在以BLOCK為首址的存區(qū)中存有一組帶符號的字節(jié)數(shù),編制從中找出最大數(shù)并送入MAX單元的程序。程序的基本結(jié)構(gòu) 第五章 匯編語言程序設(shè)計 DATA

29、 SEGMENTBLOCK DB 5,15,10,38,-6,72,120,-64 COUNT DB $-BLOCKMAX DB ?DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATAMAIN PROC FAR PUSH DS SUB AX,AX PUSH AX MOV AX,DATA MOV DS,AXSTART: MOV CX,COUNT-1 MOV BX,OFFSET MOV AL,BXLOP: INC BX CMP AL,BX JGE NEXT MOV AL,BXNEXT: LOOP LOP MOV MAX,ALRET MAIN ENDP CODE

30、 ENDS END MAIN例1: 在以BLOCK為首址的存區(qū)中存有一組帶符號的字節(jié)數(shù),編制從中找出最大數(shù)并送入MAX單元的程序。程序的基本結(jié)構(gòu) 第五章 匯編語言程序設(shè)計例例: :編寫一程序,從數(shù)據(jù)段中一未排序的字?jǐn)?shù)組ARRAY中,找出最大值和最小值分別存放到AX和BX 寄存器中。開始N-1CX取數(shù)組第一個數(shù) AX和BX數(shù)組中數(shù)與(AX)和(BX)比較大數(shù) AX小數(shù) BX比較完?結(jié)束NY程序的基本結(jié)構(gòu) 第五章 匯編語言程序設(shè)計DATA SEGMENTN EQU 6ARRAY DW 98H,04H,76H,12H,09H,0F8HDATA ENDSCODE SEGMENTMAIN PROC FA

31、R ASSUME CS:CODE,DS:DATASTART: PUSH DS XOR AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV CX,N-1 LEA SI,ARRAY MOV AX,SI MOV BX,AXAGAIN: ADD SI,2 CMP BX,SI JLE FMAX MOV BX,SI JMP SHORT NEXTFMAX: CMP AX,SI JGE NEXT MOV AX,SINEXT: LOOP AGAIN RETMAIN ENDPCODE ENDS END START例例: :編寫一程序,從數(shù)據(jù)段中一未排序的字?jǐn)?shù)組ARRAY中,找出最大值和

32、最小值分別存放到AX和BX 寄存器中。程序的基本結(jié)構(gòu) 第五章 匯編語言程序設(shè)計(2)寄存器終值控制法 該方法與計數(shù)法不同,控制寄存器初值或終值不是循環(huán)次數(shù),它可能是一個操作數(shù)地址、時間的一種表示或程序中要使用的其他內(nèi)容等。每執(zhí)行一次循環(huán)體,該寄存器的值都要按某種規(guī)律進(jìn)行處理,直到該寄存器的值達(dá)到某種條件就退出循環(huán)。 例:求平方根程序:內(nèi)存SQU單元存放一個完全平方數(shù),編一個求平方根程序。分析:從1開始連續(xù)I個奇數(shù)之和是I的平方數(shù)N,如:1+3+5+7+9+11+13=49,其中I=7(7個連續(xù)的奇數(shù)),N=49(連續(xù)奇數(shù)之和),所以N=I2;程序的基本結(jié)構(gòu) 第五章 匯編語言程序設(shè)計開始初始化平

33、方值=0?平方數(shù)減奇數(shù)計數(shù)器加1形成下一個奇數(shù)保存結(jié)果結(jié)束DATA SEGMENTSQU DW 13924 ROOT DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA SQROOT: MOV AX,DATA MOV DS,AX XOR CX,CX ;計數(shù)器清0 MOV BX,1 ;置奇數(shù) MOV DX,SQU ;把平方數(shù)送DXL1: AND DX,DX ;判斷平方數(shù)是否為0 JZ L2 ;為0,退出 SUB DX,BX ;平方數(shù)減奇數(shù) INC CX ;減奇數(shù)的次數(shù)加1 ADD BX,2 ;形成下一個奇數(shù) JMP L1L2: MOV ROOT,

34、CX ;保存結(jié)果 MOV AH,4CH ;返回DOS INT 21HCODE ENDS END SQROOT程序的基本結(jié)構(gòu) 第五章 匯編語言程序設(shè)計3.3.條件控制型條件控制型 在實際工作中,有時循環(huán)次數(shù)無法事先確定,但循環(huán)次數(shù)與問題中的某些條件有關(guān),這時就應(yīng)根據(jù)給定的條件滿足與否來判斷是否結(jié)束循環(huán)。例424 計算以ARRAY1和ARRAY2為首地址的兩個長度都為100個的字?jǐn)?shù)組對應(yīng)項之和,并把結(jié)果送至首地址為SUM的數(shù)據(jù)區(qū)中,且當(dāng)兩個數(shù)組中間對應(yīng)項的和為0時,停止求和。其程序如下: MOV AX,0MOV SI,0FFFFHMOV CX,64H NOZERO:INC SIINC SIMOV

35、AX,ARRAY1 SIADD AX,ARRAY2 SIMOV SUM SI,AXLOOPNZ NOZEROHLT程序的基本結(jié)構(gòu) 第五章 匯編語言程序設(shè)計源程序:DATA SEGMENT STRING DB ME$ LENGTH1 DW ? DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATAMAIN PROC FAR PUSH DS SUB AX,AX PUSH AX MOV AX,DATA MOV DS,AX START: LEA SI,STRING MOV CX,0 MOV AL,$ LOP: CMP AL,SI JE MOVE1 INC CX INC

36、 SI JMP LOPMOVE1: MOV LENGTH,CX RET MAIN ENDP CODE ENDS END MAIN例2 在字符串變量STRING中存有一個以$為結(jié)尾的ASCII碼字符串,現(xiàn)要求出字符串的長度,并把它存入LENGTH單元中。程序的基本結(jié)構(gòu) 第五章 匯編語言程序設(shè)計5多重循環(huán)程序 一個循環(huán)程序中的循環(huán)體內(nèi)還包含一個或多個循環(huán)結(jié)構(gòu),稱為雙重循環(huán)或多重循環(huán)程序。例5-10 軟件延時程序,延時時間為1s(設(shè)CPU的時鐘為4.77MHz)。SOFTDLY PROC MOV BL,100 ;4T DELAY: MOV CX,2801 ;4TWAIT: LOOP WAIT ;(1

37、7/5)T DEC BL ;2T JNZ DELAY ;(16/4)T RETSOFTDLY ENDP在CPU時鐘為4.77MHz時,T=1/4.77 210ns,內(nèi)、外循環(huán)的延時時間:T內(nèi)= 4 +17*(n -1)+ 5*T 10ms,n =2801的取值是以T內(nèi)的要求和T確定的。T外= 4T + 100 * T內(nèi) + 100 *(2 + 16)* T - 12T 1s程序的基本結(jié)構(gòu) 第五章 匯編語言程序設(shè)計在實際使用的程序中,大多數(shù)程序是由一個主程序和若干個子程序組成的。所謂子程序是指人們將那些重復(fù)使用的程序段從程序中分離出來,編寫成相對獨立的、具有特定功能的程序。子程序的特點:通用性重

38、入性子程序嵌套參數(shù)傳遞方式:寄存器堆棧專用存儲區(qū)子程序的說明文件一般應(yīng)包括以下幾項內(nèi)容:(1)子程序名:一般取具有象征意義的標(biāo)識符;(2)子程序的功能:說明子程序完成的具體任務(wù);(3)子程序的輸入?yún)?shù):說明子程序運行時所需的參數(shù)以及存放位置;(4)子程序的輸出參數(shù):說明子程序運行完畢的結(jié)果參數(shù)及存放位置;(5)子程序占用寄存器、存儲單元情況(未保護(hù)部分);(6)子程序嵌套情況;(7)調(diào)用示例?,F(xiàn)場保護(hù):SUM PROC FARPUSH AXPUSH BXPUSH BPPOP BPPOP BXPOP AXRETSUM ENDP程序的基本結(jié)構(gòu) 第五章 匯編語言程序設(shè)計DATA SEGMENTD0

39、DB 0DH,0AHD1 DB AHhyKYVdghYhVFiK,$DATA ENDSSTAC SEGMENTSTA1 DW 50 DUP(?)STAC ENDSCODE SEGMENTASSUME CS:CODE,DS:DATAASSUME SS:STAC,ES:DATASTAR PROC FAR PUSH DS SUB AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOV ES,AX CALL TT LEA DI,D1 CALL TT1 CALL TT LEA DI,D1 CALL TT2 CALL TT RETSTAR ENDP例:例:內(nèi)存數(shù)據(jù)區(qū)有大小寫混合英文

40、ASCII碼字母(以“$”為結(jié)束符)。將其轉(zhuǎn)換程全部大寫和全部小寫,并在屏幕顯示這三種字母。程序的基本結(jié)構(gòu) 第五章 匯編語言程序設(shè)計TT2 PROCGQ: MOV AL,DI CMP AL,$ JZ GQ2 CMP AL,a JB GQ1 CMP AL,z JA GQ1 SUB BYTE PTR DI,20HGQ1: INC DI JMP GQGQ2: RETTT2 ENDPCODE ENDS END STARTT PROC LEA DX,D0 MOV AH,09H INT 21H RETTT ENDPTT1 PROCGO: MOV AL,DI CMP AL,$ JZ GO2 CMP AL,A

41、 JB GO1 CMP AL,Z JA GO1 ADD BYTE PTR DI,20HGO1: INC DI JMP GOGO2: RETTT1 ENDP程序的基本結(jié)構(gòu) 第五章 匯編語言程序設(shè)計常用常用DOSDOS功能調(diào)用功能調(diào)用: :DOS 規(guī)定用中斷命令I(lǐng)NT 21H 進(jìn)入各功能調(diào)用子程序的總?cè)肟冢贋槊總€功能調(diào)用規(guī)定一個功能號,以便進(jìn)入相應(yīng)的子程序入口。DOS DOS 功能調(diào)用方法功能調(diào)用方法1)將要調(diào)用的功能的功能號送入AH寄存器;2)根據(jù)所調(diào)用功能的規(guī)定設(shè)置輸入?yún)?shù);3)用INT 21H 指令轉(zhuǎn)入子程序;4)相應(yīng)子程序執(zhí)行完后,可按規(guī)定取得輸出參數(shù)。注意:第二步和第四步并不是每個功能

42、的調(diào)用都需要的;若需要輸入?yún)?shù)時,第一步和第二步順序可換。5.6 常用DOS功能調(diào)用 DOS 不僅為用戶提供了許多可以直接使用的命令,而且也提供了80多個可供匯編程序員直接調(diào)用的子程序。這80多個功能調(diào)用子程序,大致分為基本輸入輸出管理、文件管理、目錄管理、內(nèi)存管理、日期和時間設(shè)置及其它多種功能。 常用DOS功能調(diào)用 第五章 匯編語言程序設(shè)計從鍵盤輸入一個字符從鍵盤輸入一個字符:1號功能調(diào)用:無輸入?yún)?shù)格式:MOV AH,1 INT 21H功能:執(zhí)行1號系統(tǒng)功能調(diào)用時,系統(tǒng)等待鍵盤輸入,一旦有鍵按下,系統(tǒng)先檢查是否是Ctrl-Break鍵,如果是則退出,否則將鍵入的字符的ASCII碼值存入AL

43、寄存器中,并在屏幕上顯示該字符。7號功能調(diào)用功能:執(zhí)行7號系統(tǒng)功能調(diào)用時,系統(tǒng)等待鍵盤輸入,一旦有鍵按下,將鍵入的字符的ASCII碼值存入AL寄存器中。8號功能調(diào)用功能與1號功能調(diào)用類似,檢查Ctrl-Break鍵,但不回顯。從鍵盤輸入一個字符串從鍵盤輸入一個字符串:0AH號功能功能:是將鍵盤輸入的字符串寫入指定內(nèi)存緩沖區(qū)中。因此必須事先定義一個輸入緩沖區(qū):第一個單元存放能輸入字符串的最大長度(不能為零);第二個單元保留,以用作填寫實際輸入的字符個數(shù),從第三個單元開始存放從鍵盤輸入的字符串(以回車鍵表示字符串的結(jié)束)。調(diào)用前,要求DS:DX指向輸入緩沖區(qū)。常用DOS功能調(diào)用 第五章 匯編語言程

44、序設(shè)計DATA SEGMENT DATA SEGMENT BUFFER DB 50BUFFER DB 50;緩沖區(qū)長度;緩沖區(qū)長度 DB DB ?;由;由0AH0AH號功能填入實際字符個數(shù)號功能填入實際字符個數(shù) DB 50 DUP DB 50 DUP (?);定義(?);定義5050個字節(jié)空間個字節(jié)空間DATA ENDSDATA ENDSCODE SEGMENT CODE SEGMENT ASSUME CSASSUME CS:CODECODE,DSDS:DATADATAKEY_IN PROC FARKEY_IN PROC FARPUSH DSPUSH DSMOV AXMOV AX,0 0PUS

45、H AXPUSH AXMOV AXMOV AX,DATADATAMOV DSMOV DS,AXAXLEA DXLEA DX,BUFFERBUFFER ;確定緩沖區(qū)起始地址;確定緩沖區(qū)起始地址MOV AHMOV AH,0AH0AHINT 21HINT 21H ;調(diào)用;調(diào)用0AH0AH號功能號功能MOV CHMOV CH,0 0MOV CLMOV CL,BUFFER+1 BUFFER+1 ;輸入字符的實際個數(shù)存入;輸入字符的實際個數(shù)存入CXCXINC DXINC DXINC DXINC DX ;指針指向字符串的第一個字符;指針指向字符串的第一個字符RETRETKEY_IN ENDPKEY_IN E

46、NDPCODE ENDSCODE ENDSEND KEY_INEND KEY_IN例:用0AH號功能輸入字符串,要求把實際輸入字符個數(shù)送入CX寄存器,并把指針(DS:DX)指令字符串的第一個字符。常用DOS功能調(diào)用 第五章 匯編語言程序設(shè)計在顯示器上顯示一個字符在顯示器上顯示一個字符:2號功能調(diào)用功能:將存于DL寄存器中的字符在屏幕上顯示出來。例如:當(dāng)執(zhí)行完下面程序段后,就在屏幕上顯示一個字母“A”。 MOV DL,A MOV AH,2 INT 21H在顯示器上顯示一個字符串:在顯示器上顯示一個字符串:9號功能調(diào)用功能:將指定內(nèi)存緩沖區(qū)中的字符串(必須以“$”字符作為結(jié)束符)在屏幕上顯示出來。

47、調(diào)用時,要求(DS:DX)指向顯示緩沖區(qū)的首地址。 LEA DX,BUFFER MOV AH,9 INT 21H常用DOS功能調(diào)用 第五章 匯編語言程序設(shè)計DATA SEGMENT ;數(shù)據(jù)段 MSG DB 0DH,0AH,07H,HELLO$ DATA ENDSSS_SEG SEGMENT ;堆棧段 DB 256 DUP(?)SS_SEG ENDSCODE SEGMENT ;代碼段 ASSUME CS:CODE,DS:DATA,SS:SS_SEGMAIN PROC FAR PUSH DS MOV AX,0 PUSH AX 執(zhí)行后顯示HELLOMOV AX,DATA ;設(shè)置數(shù)據(jù)段MOV DS,A

48、XLEA DX,MSG ;取字符串地址MOV AH,09H ;顯示字符串INT 21HRET ;返回操作系統(tǒng)MAIN ENDPCODE ENDSEND MAIN常用DOS功能調(diào)用 第五章 匯編語言程序設(shè)計DATA SEGMENT PARA VAR DB 100DATA ENDSSTA_SEG SEGMENT STACK DB 256 DUP(?)STA_SEG ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATAMAIN PROC FAR PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV AL,VARuMOV DH,

49、ALuMOV CL,4uSHR AL,CLuCALL UBASCuCALL PCHARuMOV AL,DHuCALL UBASCuCALL PCHARuRETuMAIN ENDPuPCHAR PROCuMOV AH,02HuMOV DL,ALuINT 21HuRETuPCHAR ENDPUBASC PROCAND AL,0FHADD AL,90HDAAADC AL,40HDAARETUBASC ENDPCODE ENDSEND MAIN說明:1、內(nèi)存中變量以二進(jìn)制形式存放,顯示程序使用ASCII碼。2、UBASC是AL中的低四位二進(jìn)制數(shù)轉(zhuǎn)化為ASCII碼結(jié)果存于AL中。3、顯示程序由PCHAR

50、完成,用02H系統(tǒng)功能調(diào)用,將AL中的ASCII顯示輸出。顯示存儲單元內(nèi)容在數(shù)據(jù)段中有一個字節(jié)變量,試編程顯示該變量內(nèi)容。常用DOS功能調(diào)用 第五章 匯編語言程序設(shè)計例5-14 計算12340+79560,并顯示計算結(jié)果DATASEGMENTSTRING1DB6,5,4,3,0STRING2DB9,8,7,6,0DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATASTART: MOVAX,DATAMOVDS,AXCLCMOVSI,OFFSET STRING1MOVDI,OFFSET STRING2MOVCX,05HL1:MOVAL,SIADCAL,DIAAAMOV

51、DI,ALINCSIINCDILOOPL1 MOVAH,02H MOVCX,05HL2:MOVDL,DI-1ORDL,30H ;BCDASCII INT21HDECDILOOPL2MOVAH,4CH ;返回DOSINT21HCODEENDSENDSTART 程序設(shè)計舉例 第五章 匯編語言程序設(shè)計DASEG SEGMENT STRING DB THIS IS ASTRING COUNT EQU $ -STRING CHAR EQU SDASEG ENDSCOSEG SEGMENTASSUME CS:COSEG,DS:DASEGASSUME ES:DASEGGO: MOV AX,DASEG MOV

52、 DS,AX MOV ES,AX MOV DI,OFFSET STRING MOV CX,COUNT CLD MOV AL,CHAR REPNE SCASB JZ FOUND MOV DL,N JMP DISPLAYFOUND: DEC DI MOV DX,DI OR DL,30HDISPLAY: MOV AH,02H INT 21H MOV AH,4CH INT 21HCOSEG ENDS END GO5-15 在一個字符串中搜索一個特定字符“S”。如果找到,則顯示出這個字符在串中的位置(距離串起始地址的相對位移量字節(jié)數(shù));否則,顯示字符“N”表示未找到。程序設(shè)計舉例 第五章 匯編語言程序設(shè)

53、計5-16 計算S=1+2+3+.+100CODE SEGMENT ASSUME CS:CODESTART: MOV BX,1 MOV AX,0 MOV CX,100L: ADD AX,BX INC BX LOOP L MOV CX,AX MOV DL,0L1: CMP CX,03E8H JB L2 INC DL SUB CX,03E8H JMP L1L2: OR DL,30H MOV AH,02H INT 21H MOV DL,0L3: CMP CX,64H JNAE L4 INC DL SUB CX,64H JMP L3L4: OR DL,30H MOV AH,02H INT 21H MO

54、V DL,0L5: CMP CX,0AH JNAE L6 INC DL SUB CX,0AH JMP L5L6: OR DL,30H MOV AH,02H INT 21H MOV DL,CL OR DL,30H MOV AH,02H INT 21H MOV AH,4CH INT 21HCODE ENDS END START程序設(shè)計舉例 第五章 匯編語言程序設(shè)計LOOP2: MOV AX,ABX CMP AX,ABX+SI+2 JNA L1 MOV DI,ABX MOV AX,ABX+SI+2 MOV ABX,AX MOV ABX+SI+2,DIL1: ADD SI,2 LOOP LOOP2 A

55、DD BX,2 MOV CX,DX LOOP LOOP1 MOV AH,4CH INT 21HCODE ENDS END START DATA SEGMENTA DW 8907, 43, 56, 24 DW 65, 23, 54, 2, 34,24N EQU($-A)/2DATA ENDSCODE SEGMENT ASSUME CS: CODE, DS:DATASTART: MOV AX,DATA MOV DS,AX MOV CX,N-1 MOV BX,0LOOP1: MOV DX,CX MOV SI,05-17 將N個不同的無符號數(shù)a1,a2,a3,aN由小到大排序.程序設(shè)計舉例 第五章 匯

56、編語言程序設(shè)計DATA SEGMENTTABLE1 DB 18H,34H,05H,06H,09H DB 0AH,0CH,11H,12H,14HTABLE2 DB 30H,31H,32H,33H,34H DB 35H,36H,37H,38H,39H DB 41H,42H,43H,44H,45H,46HBUF DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATAGO: MOV AX,DATA MOV DS,AX MOV DH,0H MOV CX,10L1: MOV BX,OFFSET TABLE1 MOV AL,DH XLAT TABLE1 MOV BU

57、F,AL MOV BX ,OFFSET TABLE2 SHR AL,1 SHR AL,1 SHR AL,1 SHR AL,1 XLAT TABLE2 MOV DL,AL MOV AH,02H INT 21H MOV AL,BUF AND AL,0FH XLAT TABLE2 MOV DL,AL MOV AH,02H INT 21H MOV DL,H INT 21H MOV DL, INT 21H INC DH LOOP L1 MOV AH,4CH INT 21HCODE ENDS END GO5-18 編程將編程將09數(shù)字轉(zhuǎn)換成格雷碼數(shù)字轉(zhuǎn)換成格雷碼,并顯示輸出并顯示輸出程序設(shè)計舉例 第五章

58、匯編語言程序設(shè)計MOV CX,NUM1CLCMOV SI,0LOOP1: MOV AL,DS:BPSIADC AL, BXSIDAAMOV BXSI,ALINC SILOOP LOOP1MOV CX,NUM2LOOP2: JNB DONEMOV AL,0ADC AL, BXSIDAAMOV BXSI,ALINC SILOOP LOOP2DONE: MOV AH, 4CHINT 21HMULT1 ENDSEND STARTMULT1 SEGMENTASSUME CS:MULT1,DS:ADD_DATASTART: MOV AX,ADD_DATAMOV DS,AXLEA BX,SECONDLEA

59、BP, FIRSTMOV AX, NUM2CMP AX, NUM1JAE NUM2_BIGGERXCHG AX,NUM1XCHG AX,NUM2XCHG BX,BPNUM2_BIGGER:MOV CX,NUM2SUB CX,NUM1MOV NUM2,CXADD_DATA SEGMENTFIRST DB 11H,22H,33HNUM1 DW $-FIRSTSECOND DB 99H,88H,77H,66H,55HNUM2 DW $-SECONDADD_DATA ENDS5-13 兩個數(shù)值長度(所占字節(jié)數(shù))不一樣的壓縮型BCD碼的加法程序。比如說一個數(shù)占五個字節(jié),另一個數(shù)占3個字節(jié)。MOV CX, NUM1ADD CX, NUM2MOV SI, CXLOOP3: DEC SIMOV DL, BXSIAND DL, 0F0HSHR DL,1SHR DL,1SHR DL,1SHR DL,1OR DL, 30HMOV AH, 02HINT 21HMOV DL,BXSIAND DL, 0FHOR DL, 30HMOV AH, 02HINT 21HLOOP LOOP3例;編一數(shù)據(jù)塊傳送子程序。根據(jù)題意,該子程序有三個輸入?yún)?shù):(1)源數(shù)據(jù)塊首地址(2)目的數(shù)據(jù)塊首地址(3)傳送的數(shù)據(jù)塊的長度現(xiàn)在我們采用寄存器傳遞參數(shù)的方法設(shè)計該子程序DATA SEGMENT

溫馨提示

  • 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

提交評論