《循环与分支程序》PPT课件.ppt_第1页
《循环与分支程序》PPT课件.ppt_第2页
《循环与分支程序》PPT课件.ppt_第3页
《循环与分支程序》PPT课件.ppt_第4页
《循环与分支程序》PPT课件.ppt_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

5/14/2019,1,第六章 循环与分支程序设计,6.1 分支程序设计 6.2 循环程序设计 6.3 多重循环程序设计 6.4 子程序,5/14/2019,2,6.1 分支程序设计,6.1.1 标号,标号: 用来说明可执行指令在汇编语言程序中的位置。 和变量类似,实质上是一个地址值。可以作为 转移指令(或CALL)的操作数。 属性: 段属性、位移量属性和距离属性。,注意: 如果一个标号只在标号定义的段中用JMP或条件 转移指令(或CALL)来访问,需要将标号的距离属 性定义为NEAR; 如果一个标号能被其他段中的JMP指令(或CALL) 来访问,那么需要将这个标号的距离定义为FAR。,5/14/2019,3,1、定义距离属性为NEAR的标号,1)隐式说明:即在标号后面加上冒号,放在指令的前面。 例如:L1: MOV AX,SI NEXT: MOC AX,BX L1和NEXT都是标号名,它们的距离属性均为NEAR。,2)显式说明:即用LABEL伪指令或在EQU指令中 用THIS操作符明显的说明。 例如:L2 LABEL NEAR MOV DX,CX L3 EQU THIS NEAR OR DL,30H 标号L2和L3的距离属性均为NEAR。,5/14/2019,4,2、定义距离属性为FAR的标号,例如: L4 LABEL FAR MOV AX,CX L5 EQU THIS FAR OR DL,30H,3、同时定义距离属性为FAR和NEAR的标号,例如: L6 LABEL FAR L7: AND AL,0FH 或者: L6 EQU THIS FAR L7: AND AL,0FH,5/14/2019,5,6.1.2 无条件转移指令,JMP指令(无条件转移) 格式:JMP目的操作数 功能:JMP指令无条件地控制转移至目标单元 (目的操作数).,JMP指令具体格式有以下五种:,1、段内直接转移 格式:JMP 标号名 ; 标号为NEAR属性 这个标号是在本段内某一指令的前面,后面 缀以冒号来定义其位置的(位移量)。,5/14/2019,6,例如: JMP L2 L1: ADD AX,100 L2: MOV CX,30 JMP L1,2、段内直接短转移 格式:JMP SHORT 标号名 例如: JMP SHORT L1 L2: MOV DX,CX L1: OR DL,30H ,5/14/2019,7,3、段内间接转移 格式: JMP 地址表达式 例如: JMP BX ;把控制转向CS:BX JMP VAR_WORD ;把控制转向VAR_WORD 存储单元中存放的地址处,4、 段间间接转移 格式: JMP 双字存储变量 功能:将控制转移到双字存储变量指定的地址, 即 将双字存储变量第二个字作为段地址, 第一个字为偏移地址处继续执行。,5/14/2019,8,5、 段间直接转移 格式: JMP 标号 ;标号为FAR属性 例如: CODE1 SEGMENT JMP CODE2_NEXT CODE1 ENDS CODE2 SEGMENT CODE2_NEXT LABEL FAR CODE2 ENDS,5/14/2019,9,6.3.3比较指令,CMP 指令(比较指令) 格式:CMP 目的操作数,源操作数 功能:CMP指令与SUB指令一样执行减法操作, 即目的操作数减去源操作数,但其结果不送 回目的操作数。执行指令后,两个操作数保 持原值不变。只是影响标志位: OF,CF,PF,SF,ZF,AF. 注意:CMP指令后面往往会跟着一条条件转移 指令,根据比较结果产生不同的程序分支。,5/14/2019,10,6.1.4条件转移指令,8086/8088提供了很多条件转移指令,而且往往一条指令 有好几种助记符表示形式,归纳主要分成两大类: 判断两数大小的条件转移指令。 测试单个标志位的条件转移相令。,1、比较两个无符号数,判断无符号数大小的条件转移指令,1)JAJNBE(jump if not blow or equal , or above) JA 指令(高于转移) JNBE 指令(不低于等于转移) 这是一条条件转移指令的两种助记符。 当两个无符号数进行比较时,如果AB成立则转移。,5/14/2019,11,2)JBEJNA(jump if blow or equal , or not above) JBE指令(低于或等于转移) JNA指令(不高于转移) 当两个无符号数进行比较时,如果AB成立,则转移,3)JAEJNB(jump if not blow, or above or equal) JAE指令(高于等于转移) JNB指令(不低于转移) 当两个无符号数相比较时,如果AB成立,则转移。,4)JB/JNAE(jump if blow, or not above or equal) JB指令(低于转移) JNAE指令(不高于等于转移) 当两个无符号数相比较时,如果AB成立则转移。,5/14/2019,12,2、判断带符号数的大小的条件转移指令,1)JGJNLE(jump if greater, or not less or equal) JG指令(大于转移) JNLE措令(不小于等于转移) 当两个带符号数相比较时,如果AB,则转移 到目标地址。,2)JGEJNL(jump if greater or equal, or not less) JGE指令(大于等于转移) JNL指令(不小于转移) 两个带符号数相比较时,若AB,转移到目标地址,5/14/2019,13,3)JLJNGE(jump if less, or not greater or equal ) JL指令(小于转移) JNGE指令(不大于等于转移) 当两个带符号数相比较时,当AB时,转移到目标地址。,4)JLEJNG(jump if less or equal, or not greater) JLE指令(小于等于转移) JNG指令(不大于转移) 当两个带符号数相比较时,当AB时,转移到目标地址。,2、判断带符号数的大小的条件转移指令,5/14/2019,14,3、测试单个标志的条件转移指令,1)测试ZF JEJZ(jump if zero, or equal) JE指令(相等则转移) JZ指令(等于0转移) 当ZF=l时转移到目标地址的条件转移指令的两种 助记符。它既适用于判断无符号数的相等,又适 用于判断带符号数的相等。,JNEJNZ(jump if not zero, or not equal) JNE指令(不相等则转移) JNZ指令(不等于0转移) 当ZF=0时转移到目标地址的条件转移指令的两种 助记符。既适用于判断有/无符号数的相等.,5/14/2019,15,2)测试CF JC(jump if carry) 当CF=1时,转移到目标地址。,JNC(jump if not carry) 当CF=0时,转移到目标地址。,3)测试SF JS(jump if sign)指令(为负转移) 当SF=1时,能转移到目标地址的条件转移指令。,JNS(jump if not sign)指令(为正转移) 当SF=0时能转移到目标地址的条件转移指令,4)测试PF JPJPE 指令(为偶转移) PF=1时,转移到目标地址的条件转移指令的两种助记符.,5/14/2019,16,JNP/JPO (为奇转移) 当PF=0时,转移到目标地址的条件转移指令,5)测试OF JO(jump if overflow)指令(溢出转移) 当满足OF=1时,转移到目标地址的条件转移指令。,JNO(jump if not overflow)指令(未溢出转移) 当OF=0时,转移到目标地址的条件转移指令。,5/14/2019,17,单路分支:,在C语言中,单分支语句 if (AL)(BL) AL=BL; 汇编语言实现方法: 比较指令后面紧跟上条件转移指令。 CMP AL,BL JAE L1 MOV AL,BL L1: ,反方向判断,5/14/2019,18,例6.6 求一组无符号数的最大值和最小值,分别放 在存储单元MAX和MIN中。,DATA SEGMENT A DW 349AH,567H,7802H,9031H,0002H,8671H MAX DW ? MIN DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX :;插入程序 MOV AH,4CH INT 21H CODE ENDS END START,5/14/2019,19,MOV AX,0 ;AX用于存放最大值 MOV BX,0FFFFH ;BX用于存放最小值 MOV SI,0 MOV CX,6 L1: CMP AX,ASI JA L2 MOV AX,ASI L2: CMP BX,ASI JB L3 MOV BX,ASI L3: INC SI INC SI LOOP L1 MOV MAX,AX MOV MIN,BX,5/14/2019,20,两路分支程序举例:,在C语言中,两路分支表示如下: if (ALBL)AL=BL; else BL=AL; 汇编语言实现两路分支程序如下: CMP AL,BL JAE L1 MOV AL,BL JMP L2 L1: MOV BL,AL L2: ,5/14/2019,21,两路分支程序举例: 例: 将存放在AL中的十六进制数字输出,方法: 利用0-30H- OR 30H 9-39H A-41H-ADD 37H B-42H F-47H,CMP AL,9 JA L1 OR AL,30H JMP L2 L1: ADD AL,37H L2: MOV DL,AL MOV AH,02H INT 21H,5/14/2019,22,程序举例: 例6.5 将0B4H-25H 的结果用十六进制输出,方法二、利用0-30H- OR 30H 9-39H A-41H-ADD 37H B-42H F-47H,5/14/2019,23,MOV AL,D SUB AL,E MOV F,AL AND AL,0F0H MOV CL,4 SHR AL,CL CMP AL,9 JA L1 OR AL,30H JMP L2 L1: ADD AL,37H,L2: MOV DL,AL MOV AH,02H INT 21H MOV AL,F AND AL,0FH CMP AL,9 JA L3 OR AL,30H JMP L4 L3: ADD AL,37H L4: MOV DL,AL MOV AH,02H INT 21H,5/14/2019,24,程序举例: 例6.5 将0B4H-25H 的结果用十六进制输出,方法三、利用0-30H- OR 30H 9-39H A-41H- OR 30H ADD 7H B-42H F-47H,5/14/2019,25,MOV AL,D SUB AL,E MOV F,AL AND AL,0F0H MOV CL,4 SHR AL,CL OR AL,30H CMP AL,39H JBE L1 ADD AL,7H,L1: MOV DL,AL MOV AH,02H INT 21H MOV AL,F AND AL,0FH OR AL,30H CMP AL,39H JBE L2 ADD AL,7H L2: MOV DL,AL MOV AH,02H INT 21H,5/14/2019,26,6.2 循环程序设计,JCXZ:当CX为0时跳转的条件转移指令; LOOP:使CX的值递减并且产生一个无 条件跳转的循环指令; LOOPE/LOOPZ,LOOPNE/LOOPNZ 条件循环迭代控制指令,根据零状态标志 位的状态, 决定是否继续进行循环操作。,循环控制指令可用来控制循环。它们用CX寄存器作为计数器,来控制循环次数。并且都是短距离转移指令。,5/14/2019,27,1、 LOOP 指令(执行循环直到计数为0) 格式:LOOP 短距离标号 例如:L1: LOOP L1 功能: CX-1=CX,若CX不为0,则将控制转移 到目标操作数(指定标号处);否则顺序执行LOOP指令之后的指令。,程序举例 例6l 一组数求和,假设有20个16位二进制数, 要对这20个数求和(假设和值65536) 程序如下:,5/14/2019,28,DATA SEGMENT ARRY DW 123CH, 3DH,100H,90H,345H,12H, DW 0A5H, 4BH,89H DW 87H,234H,64H,35H,20H,21H,50H, DW 88H,92H,11H,0FFH DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA START: MOV AX,DATA MOV DS,AX,5/14/2019,29,MOV CX,20 MOV SI,0 MOV AX, 0 NEXT: ADD AX,ARRYSI INC SI INC SI LOOP NEXT MOV AH,4CH INT 21H CODE ENDS END START,5/14/2019,30,2、LOOPELOOPZ(如果相等如果为0则循环) 格式:LOOPELOOPZ 短距离标号 功能:该指令将 CX减 1,若 CX不为 0且ZF置1 (即CX0且运算结果为0),则将控制转移到 目标操作数,否则: 顺序执行LOOPE/LOOPZ指令之后的指令。,5/14/2019,31,例6.2 在字节数组中找出第一个非零元素,并显示 输出第一个非零元素的下标 程序如下:,DATA SEGMENT ARRAY DB 0,0,0,0,0,0,84,0,9,10 COUNT EQU -OFFSET ARRAY DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA BEGIN: MOV AX,DATA MOV DS,AX MOV CX,COUNT MOV DI,-1,5/14/2019,32,NEXT: INC DI CMP ARRAYDI, 0 LOOPZ NEXT JNE OK MOV DL, N; 没找到非零元素,显示N JMP DISPLAY OK: MOV DX, DI OR DL,30H DISPLAY:MOV AH,02H INT 21H MOV AH,4CH INT 21H CODE ENDS END BEGIN,5/14/2019,33,3、LOOPNELOOPNZ(不等不为零,则循环) 格式:LOOPNELOOPNZ 短距离标号 功能:该指令将 CX减1,若 CX不为 0且 ZF为 0(即CX0且运算结果不为0),则将控制转移到指定标号;否则,顺序执行下一条指令。,例6.3 求两个一维字数组的和,数组元素个数为N, 当计算到两个数组对应元素之和为零时就停 止求和,(假设数组元素为无符号二进制数)。 其实现程序如下:,DATA SEGMENT ARR1 DW 23H, 34H, 0, 5H, 66H, 0, 345H, 567H ARR2 DW 34H, 24H, 0, 2H, 44H, 0, 345H, 56H NUM EQU $-OFFSET ARRAY2 SUM DW 15 DUP(?) DATA ENDS,5/14/2019,34,CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AX,0 MOV SI,0FFFEH ;-2=SI MOV CX,NUM SHR CX,1 ;NUM/2=CX NZERO:INC SI INC SI MOV AX,ARR1SI ADD AX,ARR2SI MOV SUMSI,AX LOOPNZ NZERO,DATA SEGMENT ARR1 DW 23H, 34H, 0, 5H, 66H, 0, 345H, 567H ARR2 DW 34H, 24H, 0, 2H, 44H, 0, 345H, 56H NUM EQU $-OFFSET ARRAY2 SUM DW 15 DUP(?) DATA ENDS,5/14/2019,35,JNZ L MOV DL,Y JMP Q L: MOV DL,N Q: MOV AH,02H INT 21H MOV AH,4CH INT 21H CODE ENDS END START,3、JCXZ(CX为 0转移) 格式:JCXZ 短矩离标号 功能:JCXZ指令在CX等于0时将控制转移到 目标操作数(目标标号处)。,5/14/2019,36,6.3 多重循环程序设计,二重循环的参考格式: MOV CX,COUNT1;外层循环计数值LOOPER1: . MOV BUF,CX ; 存外循环计数到BUF MOV CX,COUNT2;内层循环计数值LOOPER2: . LOOP LOOPER2;内层循环结束 MOV CX, BUF;恢复外层循环计数值 . LOOP LOOPER1;外层循环结束,5/14/2019,37,例题6.4:将N个不同的无符号数 A0,A1,A2, AN-1 由小到大排序。,DATA SEGMENT A DB 9,8,7,6,5,4,3,2,1,0 COUNT EQU $-offset A DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX,MOV AH,4CH INT 21H CODE ENDS END START,5/14/2019,38,MOV CX,COUNT-1 ;外循环循环COUNT-1次 MOV BX,0 LOOP1:MOV DX,CX ;把CX的值暂时保存在DX中 MOV SI,1 LOOP2:MOV AL,ABX CMP AL,ABX+SI JNA L1 XCHG AL,ABX+SI;交换ABX和ABX+SI值 MOV ABX,AL L1: INC SI LOOP LOOP2 INC BX MOV CX,DX;恢复CX的值 LOOP LOOP1,5/14/2019,39,6.4 子程序,6.4.1子程序定义,用一对伪指令PROCENDP定义一个子程序(过程), 其格式如下: 名称 PROC NEARFAR RET 名称 ENDP,6.4.2子程序调用与返回,调用子程序用CALL指令,CALL指令将其下条指令 的地址(返回地址)保存在堆栈里,将控制转移到 过程,执行。当执行到RET指令时,RET指令就会 到堆栈里找到由CALL指令保存的返回地址,将控 制返回调用(CALL)指令的下条指令继续运行。,5/14/2019,40,调用子程序用CALL指令 示意如下: 过程调用(主程序) 过程定义(子程序) 过程名 PROC NEAR CALL过程名 RET 过程名 ENDP,6.4.3调用和返回指令,1、CALL(调用)指令 格式:CALL 目的操作数 具体格式与JMP指令相似,有四种格式:,5/14/2019,41,1)段内直接调用 CALL过程名(NEAR类型) 2)段内间接调用 CALL WORD PTRBX 3)段间直接调用 CALL 过程名(FAR类型) 4)段间间接调用 CALL DWORD PTRBX,CALL指令的功能是去启动一个过程 .将其下条指令的偏移地址保存进栈,以供过程定义中的RET能将控制转回到CALL的下一条指令。,5/14/2019,42,2、RET指令 格式:RET RET 弹出值 功能:RET指令将控制从一个过程返回到调用该 过程的CALL指令之后的指令(返回断点处)。,5/14/2019,43,6.4.4子程序举例,1、段内子程序调用和子程序定义程序格式实例。 SEGX SEGMENT ASSUME START: CALL SUBT SUBT PROC NEAR RET SUBT ENDP SEGX ENDS END START,5/14/2019,44,例6.7 求0A5H与43H之和,用十六进制形式输出,要求 用子程序实现。,DATA SEGMENT A DB 0A5H B DB 43H C DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX,5/14/2019,45,MOV AL,A ADD AL,B MOV C,AL MOV CL,4 SHR AL,CL CALL BINIHEX;将AL中的十六进制数输出 MOV AL,C AND AL,0FH CALL BINIHEX MOV AH,4CH INT 21H,5/14/2019,46,BINIHEX PROC NEAR ;将AL中的一位十六进制数转 CMP AL,9 ;化为字符的ASCII码输出 JA L1 OR AL,30H JMP L2 L1: ADD AL,37H L2: MOV DL,AL MOV AH,02H INT 21H RET BINIHEX ENDP CODE ENDS END START,5/14/2019,47,例6.8 程序要求从键盘输入一个十进制数,然后把 该数以十六进制形式在屏幕上显示出来。,DECIHEX SEGMENT ASSUME CS:DECIHEX REPEAT: CALL DECIBIN ;键入十进制数 CMP BX,0 JE ENDL ;等于零转结束 CALL CRLF ; 显示回车换行 CALL BINIHEX ; 输出十六进制数 CALL CRLF ;显示回车换行 JMP REPEAT ;转去继续 ENDL: MOV AH, 4CH ;返回 DOS INT 21H,5/14/2019,48,DECIBIN PROC NEAR;从键盘键入一个十进制数(限定数字0-9 MOV BX, 0;如果输入非0-9之间的字符,退出),化为二进制数存入BX寄存器 NEXT: MOV AH, 01H INT 21H CMP AL, 30H JB EXIT CMP AL,39H JA EXIT AND AL,0FH XOR AH,AH ;AH清0 XCHG AX, BX MOV CX, 10 MUL CX XCHG AX,BX ADD BX, AX JMP NEXT,EXIT: RET DECIBIN ENDP,5/14/2019,49,BINIHEX PROC NEAR ;将保存在BX的二进制数用十六进制输出 MOV CX,4;需要输出4个十六进制位,用循环4次来实现 NEXT1: ROL BX,1;将BX循环左移4位,既是将BX的高四位移到了低四位 ROL BX,1 ROL BX,1 ROL BX,1 MOV DL,BL AND DL,0FH;截取低4位 CMP DL,9 JA L1 OR DL,30H JMP L2 L1: ADD DL,37H L2: MOV AH,02H INT 21H LOOP NEXT1,RET BINIHEX ENDP,5/14/2019,50,CRLF PROC NEAR MOV DL,0DH;“回车“ MOV AH,2 INT 21H MOV DL,0AH;“换行“ INT 21H RET CRLF ENDP DECIHEX ENDS END REPEAT,5/14/2019,51,2、段间子程序调用和子程序定义程序实例。 SEGX SEGMENT SUBT PROC FAR RET SUBT ENDP CALL SUBT SEGX ENDS SEGY SEGMENT CALL SUBT SEGY ENDS,5/14/2019,52,习题讲解1编写一个加密与解密09位字序列的程序,设0,1,2,3,4,5,6,7,8,9对应的密码表为9,0,8,2,7,4,63,1,5,键盘输入任意一个4位数要求程序能够马上输出这4位数对应的密码。例如:键盘输入4925,显示输出7584。,格式:XLAT 换码表 或 XLAT 功能:(BX)+(AL)=AL;即是用换码表中一 个字节的内容置换AL寄存器的内容。 要求:在此指令之前,BX寄存器中存放换码表的起 始地址,AL的内容为要换码的字节在换码表 中的下标。即是以BX为起点的换码表中, 以(AL)为相对位移,取一字节装入AL。,5/14/2019,53,DATA segment TAB_DA DB 9,0,8,2,7,4,6,3,1,5 NUM DB 4 DUP(?) DATA ends CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX : MOV AH,4CH INT 21H CODE ENDS END START,5/14/2019,54,MOV SI,0 MOV CX,4 MOV BX,OFFSET TAB_DA L1: MOV AH,01H INT 21H AND AL,0FH XLAT TAB_DA MOV NUMSI,AL INC SI LOOP L1,MOV CX,4 MOV SI,0 L2: MOV DL,NUMSI OR DL,30H MOV AH,02H INT 21H INC SI LOOP L2,5/14/2019,55,习题讲解1. 从键盘输入一个十进制数,以回车(0DH)结束,将其转换成它所代表的二进制数据,然后以十六进制形式输出。,DATA SEGMENT BUF DB ? PROMPT DB PLEASE ENTER A NUM128:$ DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX,5/14/2019,56,MOV DX,OFFSET PROMPT MOV AH,09H INT 21H MOV BUF,0 IN_L:MOV AH,01H INT 21H CMP AL,0DH JE OUT_L AND AL,0FH SAL BUF,1 MOV BL,BUF SAL BUF,1 SAL BUF,1 ADD BUF,BL,5/14/2019,57,ADD BUF,AL JMP IN_L OUT_L: MOV DL,0DH MOV AH,02H INT 21H MOV DL,0AH MOV AH,02H INT 21H MOV AL,BUF AND AL,0F0H MOV CL,4 SHR AL,CL,NEXT: CMP AL,9 JA L1 OR AL,30H JMP L2 L1: ADD AL ,37H L2: MOV DL,AL MOV AH,02H INT 21H,5/14/2019,58,MOV AL,BUF AND AL,0FH NEXT2:CMP AL,9 JA L3 OR AL,30H JMP L4 L3: ADD AL,37H L4: MOV DL,AL MOV AH,02H INT 21H,MOV AH,4CH INT 21H CODE ENDS END START,5/14/2019,59,习题讲解3. 键盘输入一个一位加法表达式。 1)按十进制输出其正确的结果。例如:7+8=15,2+3=05。 2)按十六进制输出其正确结果。例如:78=0FH,2+3=05H。,5/14/2019,60,DATA SEGMENT BUF DB 3 DUP(?) PROMPT DB PLEASE ENTER A equation,0dh,0ah,$ DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,OFFSET PROMPT MOV AH,09H INT 21H,5/14/2019,61,MOV CX,3 MOV SI,0 L1: MOV AH,01H INT 21H AND AL,0FH MOV BUFSI,AL INC SI LOOP L1 MOV DL,= MOV AH,02H INT 21H

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论