DSP 课件 第五章 TMS320LF240x汇编指令系统_第1页
DSP 课件 第五章 TMS320LF240x汇编指令系统_第2页
DSP 课件 第五章 TMS320LF240x汇编指令系统_第3页
DSP 课件 第五章 TMS320LF240x汇编指令系统_第4页
DSP 课件 第五章 TMS320LF240x汇编指令系统_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

第五章TMS320LF240x汇编指令系统DSP原理与应用·汇编语言指令集详解Contents本章目录TMS320LF240x汇编指令系统的核心知识框架,从基础概念到编程实践的完整学习路径。01汇编指令系统概述02存储器寻址方式03六大类汇编指令详解04指令语法与操作数规范05编程实践与课程总结CHAPTER01汇编指令系统概述从整体架构理解TMS320LF240x的87条汇编指令Chapter05·DSPArchitectureTMS320LF240xDSP处理器概况TMS320LF240x是TI公司C2000平台的定点DSP控制器,基于C2xx核心CPU设计,处理性能达40MIPS,专为数字电机控制应用优化,集成了PWM、ADC、CAN等丰富外设,是典型的单芯片DSP控制器方案。C2xx核心架构增强型Harvard架构,低成本、低功耗与高性能处理能力兼备,指令周期25ns40MIPSPWM控制通道支持三相逆变器控制、中心与边沿对齐模式,可编程死区时间防止功率管直通故障8路16bit片上外设集成10位ADC转换器、CAN2.0B控制器、SCI与SPI串行通信接口,外设集成度极高10bitADC外部存储接口程序、数据与I/O三段独立地址空间,可扩展外部存储器满足大型控制程序需求192K×16开发与调试支持实时JTAG边界扫描仿真,配合CCS集成开发环境与TIANSIC编译器高效开发CCSIDETMS320LF240x·InstructionSet汇编指令集六大分类总览TMS320LF240x汇编语言共包含87条指令,按功能划分为6大类,涵盖算术逻辑运算、地址管理、乘法累加、程序流控制、系统控制和数据搬运,构成了完整的DSP底层编程能力体系。运算与地址类累加器、算术和逻辑指令完成加减法、移位、逻辑与或非等基本运算,是日常编程使用最频繁的指令类别,支撑各类数值计算与位操作需求ALU·高频使用运算与地址类辅助寄存器与数据页指针指令管理辅助寄存器AR0-AR7和数据页指针DP,实现灵活的间接寻址与数据页切换,是高效内存访问的关键机制AR0–AR7·DP乘法与控制类TREG、PREG和乘法指令操作临时寄存器与乘积寄存器,执行乘法累加(MAC)等DSP核心运算,为数字信号处理提供硬件加速能力MAC·DSP核心乘法与控制类跳转指令包含条件跳转与无条件跳转,实现程序分支、循环和子程序调用等流程控制功能,构建程序执行的基本控制结构条件/无条件系统与I/O类控制指令管理中断使能/禁止、堆栈操作、低功耗模式切换等系统级功能,保障系统稳定运行与资源高效管理中断·堆栈·低功耗系统与I/O类I/O和存储器操作指令负责数据在存储器与I/O端口之间的搬移,包括IN、OUT及数据块传送等,实现外设与内存的数据交换IN·OUT·块传送CHAPTER05·REGISTERARCHITECTURE核心寄存器结构TMS320LF240x内部包含32位累加器ACC、ALU单元、8个辅助寄存器AR0-AR7、数据页指针DP、乘积寄存器PREG和临时寄存器TREG等核心寄存器,理解它们的功能与相互关系是掌握汇编编程的前提。DSP处理器寄存器结构·实验室教学场景01ACC—32位累加器由ACH(高16位)和ACL(低16位)组成,是所有算术运算的核心目标寄存器,支持溢出保护02AR0–AR7—8个辅助寄存器配合ARAU工作,提供灵活的间接寻址能力,可自动增减和偏移03DP—数据页指针占ST0低9位(0–511),与7位偏移地址组合形成16位数据存储器直接寻址地址04PREG/TREG—乘积寄存器存放乘法32位结果,临时寄存器保存乘数或移位操作中的移位计数值05ST0/ST1—状态寄存器包含进位位C、溢出位OV、符号扩展位SXM等标志位,直接影响条件跳转和运算行为CHAPTER02存储器寻址方式立即寻址、直接寻址与间接寻址的原理与应用ImmediateAddressing立即寻址方式立即寻址是指令中直接包含操作数的寻址方式,用#号标识,分为短立即数和长立即数两种形式,无需额外访存周期。01操作数内嵌指令指令本身包含操作数,数值或符号前加#标识为立即数,CPU在取指阶段即可获得操作数,无需额外访存,执行效率最高02短立即数格式支持8/9/13位格式,如RPT#99表示将下一条指令重复100次,8位最大值为255,适合小范围循环控制03长立即数格式完整16位数据,如ADD#65534,2将数据左移2位后加至累加器,适合大范围常数操作和地址计算04格式选择策略短与长立即数的选择取决于数据范围和指令支持情况,使用不当会导致数值截断或编译错误,需根据实际数据范围合理选择寻址方式直接寻址方式直接寻址通过数据页指针DP(9位基地址)与指令中的7位偏移量组合形成16位数据存储器地址,将64K字空间分为512页×128字,是TMS320系列特有的高效分页寻址机制。地址拼接结构:16位地址由高9位DP值和低7位偏移量拼接而成,数据页指针DP存储于ST0低9位,取值范围0-511分页体系:64K字数据存储器被划分为512个数据页,每页128字;使用LDP指令设置数据页面后,后续指令仅需指定偏移量指令寄存器编码:位7为直接/间接指示符(0=直接,1=间接),位6-0为7位偏移地址,位15-8包含操作码和移位信息编程技巧:同一段代码若访问同一数据页,只需在代码块前加载一次DP,避免重复设置,提升执行效率典型示例:LDP#4将数据页设为4,ADD9h,5表示将地址0209h(第4页第9个字)的内容左移5位后与累加器相加TMS320LF240x汇编指令系统·第五章间接寻址方式间接寻址通过辅助寄存器AR0-AR7间接指向数据存储器地址,支持6种变址模式,是TMS320系列最灵活的寻址方式,特别适合数组和缓冲区操作。01指令中用ind变量表示间接寻址,当指令寄存器位7为1时启用;通过ARP字段(0-7)指定当前使用的辅助寄存器编号IND·ARP02六种变址模式:*(不修改AR)、*+(AR自增)、*-(AR自减)、*0+(加AR0)、*0-(减AR0)、*BR0+/BR0-(反向进位加减AR0)6MODES03*BR0+和*BR0-模式支持反向进位算术运算,在实现FFT蝶形运算等信号处理算法时具有独特优势FFT04辅助寄存器算术单元ARAU在ALU执行操作的同时并行修改AR值,实现零开销的地址更新,提升循环访问效率ARAU05典型应用:数字滤波器延迟线操作、FIR滤波器系数遍历、ADC采样数据缓冲区连续读取等场景均依赖间接寻址FIR·ADCCHAPTER05·ADDRESSINGMODES三种寻址方式对比总结立即寻址、直接寻址和间接寻址各有适用场景,在实际DSP编程中通常混合使用——立即数用于常数加载,直接寻址用于固定变量访问,间接寻址用于数组和缓冲区遍历,三者配合构成完整的数据访问能力。三种寻址方式核心对比对比维度立即寻址直接寻址间接寻址操作数来源指令内嵌常数数据存储器数据存储器地址生成无需地址DP(9位)+偏移(7位)AR0-AR7寄存器值标识符号#号前缀7位地址(位7=0)ind变量(位7=1)数据宽度8/9/13/16位16位(一页128字)16位(全64K可达)适用场景常数赋值/初始化固定变量/寄存器访问数组遍历/缓冲区操作典型指令RPT#99,ADD#65534LDP#4,ADD9hLACC*+,MACD*总结:三种寻址方式各有优势,编程时应根据数据访问模式灵活选择并组合使用CHAPTER03六大类汇编指令详解从算术逻辑到I/O操作,逐条解析87条核心指令Chapter5·TMS320LF240xAssembly第一类:累加器操作指令累加器操作指令负责数据在存储器与32位累加器ACC之间的加载和存储,支持移位操作,是DSP汇编编程中最基础、使用频率最高的指令子集,直接影响数据通路效率。01LACL—将操作数加载到ACL(低16位)并同时清零ACH(高16位),适用于只需16位精度的数据加载场景16bit02LACC—支持将操作数按指定移位量移位后装入完整32位ACC,如LACCdma,shift可实现带移位的全字加载32bit03SACL/SACH—分别将ACL和ACH的内容存储到数据存储器,常用于分别提取运算结果的高低位部分STORE04LACT—以TREG中的值作为动态移位量加载数据到ACC,实现运行时可变移位,在自适应算法中非常实用DYNAMIC05所有加载指令均可配合立即寻址、直接寻址或间接寻址使用,移位范围0-15位,溢出受OVM位控制0–15ARITHMETICOPERATIONS第一类:算术运算指令算术运算指令涵盖加减法与乘法累加操作,其中MAC和MACD是DSP区别于通用MCU的标志性指令,单周期乘加是实现高效数字滤波和FFT运算的关键。01ADD加法指令支持存储器加ACC、带移位加、加立即数、ACC间加四种格式02SUB减法指令与ADD对称,支持存储器减、立即数减和带移位减法,影响进位位C03MPY乘法指令数据存储器操作数与TREG相乘,32位结果存入PREG,乘法运算基础04MAC乘法累加单周期完成乘法并将旧乘积累加到ACC,同时启动下一次乘法操作05MACD乘法累加带延迟在MAC基础上增加数据延迟,每次向高地址移动一字,FIR滤波器核心LOGICINSTRUCTIONS第一类:逻辑运算指令逻辑运算指令(AND/OR/XOR/NOT)在DSP编程中主要用于寄存器位操作、数据掩码提取和标志位设置,虽然运算简单,但在外设配置、通信协议处理和中断标志清除等场景中不可或缺。AND按位与对ACC与操作数执行按位与运算,常用于位屏蔽操作,如AND#0FFh提取ACL低8位数据•屏蔽高位保留低位•数据过滤与提取•配置寄存器位清除BITMASKOR按位或执行按位或运算,适合将特定位设置为1,如OR#8000h将ACL最高位置位而不影响其他位•标志位强制置1•配置寄存器位使能•中断使能控制BITSETXOR按位异或执行按位异或运算,常用于位翻转和数据校验,如CRC计算和通信协议奇偶校验处理•特定位状态翻转•CRC校验码生成•数据加密与解密BITFLIPNOT按位取反将ACC各位取反(0变1,1变0),在求补码运算和信号取反操作中发挥关键作用•快速生成补码•波形极性反转•逻辑状态取反INVERT标志位影响所有逻辑指令均不影响进位位C,但会影响ACC的零标志和符号标志,可用于条件判断•Z标志:结果为零置位•N标志:结果为负置位•C标志:保持不变FLAGSSHIFTINSTRUCTIONS第一类:移位指令移位指令通过对ACC进行逻辑移位或循环移位实现数据位操作,在定点DSP中移位等效于2的幂次乘除法,是替代高开销乘除运算的核心优化手段,同时也是数据对齐和位字段操作的基础工具。SFL·逻辑左移对32位ACC逻辑左移1位,最低位补0;等效乘以2,定点数缩放广泛使用×2SFR·逻辑右移对ACC逻辑右移1位,最高位补0;等效无符号除以2,用于数据归一化÷2RLKM·循环左移ACC循环左移指定位数,最高位移入最低位,适合位字段循环重排BITROTATEROL/ROR通过进位位C带进位循环移位,多精度运算(32位以上)必不可少CARRYBIT溢出与精度左移可能OV位置位溢出,右移可能末位移出丢失精度,需审慎处理OV/LSBASSEMBLY·CLASSII第二类:辅助寄存器与数据页指针指令辅助寄存器与数据页指针指令负责管理AR0-AR7和DP等关键寻址资源,是间接寻址和直接寻址正常工作的前提,虽然不直接参与运算,但对程序的数据访问效率和正确性起决定性作用。LAR将操作数加载到辅助寄存器AR0-AR7,如LARAR1,#100h使AR1指向地址100h。该指令用于初始化辅助寄存器值,建立数据访问的基地址,是间接寻址模式的基础配置步骤。支持立即数/直接寻址单周期执行AR0–AR7SAR将辅助寄存器当前值存储到数据存储器,可用于中断处理中保护AR现场。在中断服务程序中配合LAR使用,实现寄存器上下文的安全保存与恢复。中断现场保护与LAR配对使用PROTECTLDP加载操作数到数据页指针DP(ST0低9位),切换当前数据页面,直接寻址前提。DP与指令中的7位偏移量组合形成16位数据地址,决定直接寻址的访问范围。9位页指针512页×128字空间ST0·9-BITLARP单独设置辅助寄存器指针ARP值(0-7),指定下一条间接寻址指令操作的AR。ARP位于状态寄存器ST0中,与ARB配合实现AR的灵活切换。快速切换当前AR影响后续间接指令ARP0–7MAR仅修改AR的值而不执行数据操作,配合变址模式实现指针的独立调整。支持*+、*-、*0+、*0-等七种间接寻址方式,用于循环缓冲区和表格访问的地址计算。纯地址运算支持7种变址模式*+/*-CHAPTER05·INSTRUCTIONSET第三类:TREG、PREG与乘法指令TREG、PREG与乘法指令构成了DSP执行乘法累加运算的完整工具链,通过LTA/LTP/LTD等指令协调乘数加载与乘积累加流程,是FIR滤波、FFT等信号处理算法高效执行的核心支撑。Load&AccumulateLTA指令将操作数加载到TREG作为乘数,同时将PREG中原有的乘积结果累加到ACC,实现加载与累加的流水线操作。TREG→ACCDirectAccumulateLTP指令功能类似LTA,但累加PREG结果到ACC时不进行移位,适用于不需要缩放的乘积累加场景。无移位Load&DelayLTD指令在加载TREG的同时执行数据延迟操作(数据向高地址搬移一个字),与MACD配合实现FIR滤波器延迟线。延迟线ProductAccumulatePAC指令在乘法操作序列末尾将PREG中最后的乘积直接加到ACC,确保所有乘积都被正确累加。末次累加StoreHalvesSPH/SPL分别将PREG的高16位和低16位存储到数据存储器,用于提取32位乘法结果的各半部分。32bit拆分CHAPTER05·INSTRUCTIONSET第四类:跳转指令跳转指令实现程序流控制,包括无条件跳转、条件跳转和循环控制,BANZ(AR非零跳转)是DSP循环编程的标志性指令,配合CALL/RET可实现完整的程序分支、循环和子程序调用能力。BB指令执行无条件跳转到指定的16位程序存储器地址Pma,类似于C语言的goto语句,用于程序流程的强制转移BANZBANZ指令在辅助寄存器AR值不为零时跳转,如BANZloop,AR2-表示AR2减1后非零则跳到loop,实现高效递减循环CONDCOND指令根据累加器状态条件跳转,支持TC=1(测试位)、C=1(进位)、OV=1(溢出)、EQ(等于零)等多种判断条件CALL/RETCALL指令将返回地址压入硬件堆栈后跳转到子程序入口,RET指令从堆栈弹出返回地址恢复执行,构成子程序调用机制延迟槽跳转指令的延迟槽需注意:TMS320LF240x部分跳转指令存在流水线延迟,紧随跳转后的1-2条指令可能仍被执行CHAPTER05·CONTROLINSTRUCTIONS第五类:控制指令控制指令管理系统级操作,涵盖中断使能/禁止、低功耗模式、堆栈操作和状态标志控制,是DSP实时系统可靠运行的基础设施。中断使能/禁止EINT/DINT分别使能和禁止可屏蔽中断,进入临界区前用DINT保护,离开后用EINT恢复,防止中断嵌套引发数据竞争EINT/DINT低功耗空闲IDLE指令使DSP进入低功耗空闲模式,CPU停止执行但外设继续工作,等待外部中断唤醒,适合电池供电场景IDLE堆栈操作POP/PUSH指令操作硬件堆栈,用于保存和恢复寄存器状态,在中断处理和子程序调用中保护现场和恢复现场POP/PUSH空操作延时NOP空操作指令不改变任何寄存器和标志位,常用于精确延时、流水线填充或为调试预留断点位置NOP状态标志控制CLRC/SETC指令分别清除和设置进位位C、测试位TC等状态标志,在多精度运算和条件判断前初始化标志状态CLRC/SETCTMS320LF240x·汇编指令系统第六类:I/O与存储器操作指令I/O与存储器操作指令负责数据在I/O端口、数据存储器和程序存储器之间的搬移,IN/OUT实现外设通信,BLKD/BLKP实现块传送,TBLRD支持查表操作,是数据采集、参数管理和外设驱动的底层工具。IN/OUT从16位I/O端口读写数据到累加器ACC,实现DSP与外设的基本数据通信,支持独立端口地址空间访问端口读写BLKD数据存储器内块传送指令,将连续数据从源地址批量复制到目的地址,高效完成内存数据迁移块传送BLKP程序存储器向数据存储器传送数据块,用于加载ROM中的常数表或配置参数到RAM工作区ROM→RAMTBLRD以ACC值为索引从查找表读取数据,适合实现非线性函数近似计算和快速数据转换查表索引I/O寻址独立64K端口地址空间,与数据存储器地址互不干扰,支持PA寄存器间接访问外设端口64K端口CHAPTER05·INSTRUCTIONSET六大类核心指令速查表87条指令按六大类组织,每类各有标志性指令——MACD代表DSP乘加能力、BANZ代表高效循环控制、BLKD代表批量数据搬运,掌握各类核心指令即可覆盖绝大多数DSP编程需求。六大类指令核心速查指令类别核心指令主要用途累加器/算术/逻辑LACC,ADD,SUB,MPY,MAC,MACD基本运算、乘法累加、FIR滤波辅助寄存器/DPLAR,SAR,LDP,LARP,MAR指针管理、数据页切换、间接寻址TREG/PREG/乘法LTA,LTP,LTD,PAC,SPH,SPL乘数加载、乘积累加、延迟线跳转指令B,BANZ,COND,CALL,RET程序分支、循环、子程序调用控制指令EINT,DINT,IDLE,NOP,PUSH中断管理、低功耗、堆栈操作I/O/存储器操作IN,OUT,BLKD,BLKP,TBLRD外设通信、块传送、查表六大类87条指令中,每类均有2-6条核心指令覆盖主要编程场景,MACD和BANZ是DSP编程中最具特色的标志性指令TMS320LF240x·汇编指令MACD指令与FIR滤波器实现MACD指令在单周期内同时完成乘法、累加和数据延迟三项操作,是实现FIR数字滤波器的核心指令。8阶FIR仅需8条MACD加1条PAC即可完成全部乘加运算。01FIR滤波器本质为系数数组与延迟数据数组的逐点乘加运算,天然适合MACD流水线执行02MACD单周期完成三项任务:操作数×TREG、PREG旧值累加至ACC、数据向高地址延迟038阶FIR流程:LDP设页→LAR初始化AR→循环8次MACD→PAC收尾完成乘加04数据延迟自动维护缓冲区,无需手动搬移,相比通用MCU节省约70%执行周期05扩展仅需增加循环次数或配合RPT指令实现硬件循环,无额外指令开销DSP数字滤波器硬件实现·实验室电路板LOOPCONTROL·第五章BANZ指令与高效循环编程BANZ(AR非零跳转)是DSP汇编循环编程的标志性指令,通过辅助寄存器自动递减并判断是否为零来控制循环,ARAU并行修改AR值不占用ALU资源,实现零开销循环控制。BANZ语法BANZpma,ARn-先对ARn减1,非零则跳转到pma地址,为零则顺序执行下一条指令。JUMPARAU并行ARAU在ALU执行当前指令的同时并行修改AR值,递减操作零开销,不消耗额外CPU周期。0COST128点求和LARAR2,#128设循环次数,LARAR3,#data设数据指针,循环体ADD*+累加并移指针,BANZ跳回循环。128PTS嵌套循环外层AR4计数、内层AR2计数,各自BANZ独立控制,互不干扰,实现多层循环嵌套。AR4×AR2RPT指令RPT#N使下一条指令自动重复N+1次,无跳转开销,适合短循环硬件级优化。N+1CHAPTER04指令语法与操作数规范操作数符号体系、移位规则与指令编码格式详解OPERANDSYMBOLS操作数符号定义TMS320LF240x汇编语言定义了一套完整的操作数符号体系,涵盖数据地址、立即数、移位量、间接寻址和地址空间标识,是编写汇编指令的基础语言。地址与数值类dma数据存储器地址的低7位(LSB),在直接寻址中与DP拼接为完整16位地址k·lkk:8位短立即数(-128至255);lk:16位长立即数,支持-32768至65535PA16位I/O端口或I/O映射寄存器地址,用于IN/OUT指令的外设通信Pma16位程序存储器地址,用于跳转指令(B/CALL)和程序存储器操作指令移位与控制类shift左移位数,取值0-15,在加载和算术指令中用于对操作数进行预移位处理ind间接寻址变量,支持7种模式——*、*+、*-、*0+、*0-、*BR0+、*BR0-,控制AR变址方式n指定下一次的辅助寄存器ARP值,取值0-7,决定下一条间接寻址指令使用哪个ARm重复计数器值,取值0-255,用于RPT/RPTZ指令实现单指令多次执行,优化循环效率Chapter05·InstructionEncoding指令编码格式解析TMS320LF240x指令采用16位字编码,位15-8为操作码与移位信息,位7为寻址模式指示符(0=直接/1=间接),位6-0根据寻址模式分别承载偏移地址或间接变址参数,理解编码结构是调试和优化程序的基础。每条指令基本格式为16位字,位15-8编码操作码类型和操作数移位信息,决定CPU执行何种操作15–8OPCode+Shift位7是寻址模式分界标志:0表示直接寻址(后续位6-0为7位dma偏移地址),1表示间接寻址(后续位包含ind和ARP)Bit7Direct/Indirect含长立即数(16位lk)的指令需要2个字:第一个字是操作码和寻址信息,第二个字存放16位立即数本身2WordsLongImmediate间接寻址时位6-4编码ind变址模式(*/*+/*-/*0+/*0-/*BR0+/*BR0-),位2-0编码下一次ARP值n6–4·2–0IND+ARP理解编码格式有助于估算代码体积:单字指令占1个程序存储字,双字指令(含长立即数)占2个,影响程序存储器容量规划1/2WCodeSizeDSP·直接寻址数据页管理实践要点数据页管理是TMS320LF240x直接寻址的核心难点,512页×128字的分页结构要求在跨页访问时正确切换DP值,子程序调用和中断服务中的DP保护/恢复是程序稳定运行的关键保障。LDP指令优化:加载数据页指针只需提供页号(0-511),同一页内多条指令仅在开头设置一次DP,不必逐条调用跨页DP切换:主程序在页4、变量在页7时,访问前必须执行LDP#7,否则读取页4中的错误地址子程序DP保护:入口保存DP现场(SAR/PUSH保存ST0),返回前恢复(LAR/POP),防止子程序数据页影响调用者ISR现场恢复:中断服务程序若切换DP而未恢复,返回主程序后所有直接寻址将访问错误数据间接寻址替代:AR可直接指向64K全空间,频繁跨页场景中用间接寻址替代直接寻址,避免DP管理复杂性CHAPTER05编程实践与课程总结从代码实例到工程实践,巩固汇编指令应用能力TMS320LF240x·ASSEMBLY编程实例:ADC数据采集与求平均ADC数据采集求平均实例综合运用了间接寻址(*+自动递增)、BANZ循环控制、ADD累加和SFR移位除法,展示了如何将寻址方式、算术指令和流程控制指令组合为完整的DSP数据处理流程。初始化阶段LARAR1LARAR2,#16LACC#0LARAR1指向ADC结果寄存器,LARAR2,#16设置循环计数,LACC#0清零累加器LAR循环采集LACC*+,AR1ADD*+,AR1LACC*+,AR1读取采样值并自动递增指针,ADD*+,AR1累加后续采样值LACC循环控制BANZloop,AR2-BANZloop,AR2-使AR2减

温馨提示

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

评论

0/150

提交评论