![06-第四章程序设计ppt课件_第1页](http://file4.renrendoc.com/view/5b0b756d984fee063804053b706acd23/5b0b756d984fee063804053b706acd231.gif)
![06-第四章程序设计ppt课件_第2页](http://file4.renrendoc.com/view/5b0b756d984fee063804053b706acd23/5b0b756d984fee063804053b706acd232.gif)
![06-第四章程序设计ppt课件_第3页](http://file4.renrendoc.com/view/5b0b756d984fee063804053b706acd23/5b0b756d984fee063804053b706acd233.gif)
![06-第四章程序设计ppt课件_第4页](http://file4.renrendoc.com/view/5b0b756d984fee063804053b706acd23/5b0b756d984fee063804053b706acd234.gif)
![06-第四章程序设计ppt课件_第5页](http://file4.renrendoc.com/view/5b0b756d984fee063804053b706acd23/5b0b756d984fee063804053b706acd235.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第四章:MCS-51程序设计计算机与通讯工程学院李耀明.一、汇编言语概述1、指令系统语句格式:;指令编码长短:单字节,双字节,三字节执行周期:一个机器周期占12个振荡周期,单周期指令,双周期,4周期寻址方式:指令中所规定的寻觅操作地址的方式立刻、直接、存放器、存放器间接寻址、基址加变址、相对寻址、位寻址指令分类:数据传送、算术、逻辑、位操作、控制转移2、程序设计的步骤1分析问题,编制阐明要处理问题的程序框图。2确定数据构造、算法、任务单元、变量设定(与高级言语不同)3根据所用的指令系统,按照已编制的程序框图用汇编言语编制出源程序。4将编制出的程序在计算机上调试,直至实现预定的功能。.二、程序设
2、计分类1、顺序程序:执行时按顺序一条条地执行指令2、分支程序:当程序不再顺序执行,而向一个方向或多个方向转移时,叫分支程序。3、循环程序:对于需求反复的程序段,常采用循环方法,以缩短程序。4、子程序及其调用程序主程序运用子程序时,用调用指令ACALL,子程序最后放一条RET指令。.三、程序设计准那么构造明晰:便于分析层次清楚:便于阅读言语简约:便于分析易于了解:便于阅读.4.1 简单程序设计简单程序又称顺序程序。计算机是按指令在存储器中存放的先后次序来顺序执行程序的。除非用特殊指令让它跳转,不然它会在PC控制下执行。.例4-1两个8位无符号数相加ORG 0000H AJMP BEGINORG
3、0030HBEGIN: MOV 40H,#01H MOV 41H,#02HLOOP: MOV R0,#40H MOV A,R0 INC R0 ADD A,R0 INC R0 MOV R0,A JMP LOOP END开场R040HAR0A送42H40H+41H和送A前往图4-1 例1流程图例:将加数和被加数分别送入40H、41H单元,加完后和送入42H单元.例4-2将两个半字节数合并成一个单字节数 程序ORG 0000H AJMP startORG 0030HSTART: MOV sp,#60H MOV 40h,#01h MOV 41h,#02hloop: MOV R1,#40H MOV A,
4、R1 ANL A,#0FH ;取第一个半字节 SWAP A INC R1 XCH A,R1 ;取第二字节 ANL A,#0FH ;取第二个半字节 ORL A,R1 ;拼字 INC R1 MOV R1,A ;存放结果 AJMP $ END执行完后如何不改动内存和存放器的值?开场40H内容送A,屏蔽高位,交换高低位AR0A与R1或后送42H取41H内容,屏蔽高位,送A前往图4-2 例2流程图.4.2 分支程序设计在处置实践事务中,只用简单程序设计的方法是不够的。由于大部分程序总包含有判别、比较等情况。根据判别、比较的结果转向不同的分支.例4-3:两个无符号数比较大小设两个延续外部RAM单元ST1和
5、ST2中存放不带符号的二进制数,找出其中的大数存入ST3单元中。ST1 EQU 8040HORG 0000H JMP STARTORG 0030HSTART: MOV DPTR,#ST1 MOV A,#12H MOVX DPTR,A INC DPTR MOV A,#34H MOVX DPTR,ALOOP: CLR C ;进位位清零 MOV DPTR,#ST1 ;设数据指针 MOVX A,DPTR ;取第一数 MOV R2,A ;暂存R2 INC DPTR MOVX A,DPTR ;取第二个数 SUBB A,R2 ; 两数比较 JNC BIG1 XCH A,R2 ;第一数大BIG0: INC D
6、PTR MOVX DPTR,A ;存大数 SJMP $BIG1: MOVX A,DPTR;第二数大 SJMP BIG0 END 开场设置指针DPTR初始值取第一个数存入R2取第二个数后者减前者进位标志能否为0?存后者终了存前者图5-3 例4流程.例4-4:编制计算符号函数y=SGN(x)的程序ARE EQU 8040HBUF EQU 8060HORG 0000H JMP STARTORG 0030HSTART: MOV DPTR,#ARE MOV A,#0F0H MOVX DPTR,ALOOP: MOV DPTR,#ARE ;进位位清零 MOVX A,DPTR ;取第一数 JZ SUL JB
7、ACC.7,NEG MOV A,#01HSUL: MOV DPTR,#BUF MOVX DPTR,A JMP LOOPNEG: MOV A,#0FFH SJMP SUL END .4.3 循环程序设计简单程序,每条指令只执行一次分支程序那么根据条件的不同,会跳过一些指令,执行另一些指令。它们的特点是,每一条指令至多执行一次。在处置实践事务时,有时会遇到多次反复处置的问题,用循环程序的方法来处理就比较适宜。循环程序中的某些指令可以反复执行多次。采用循环程序,使程序缩短,节省存储单元。反复次数越多,循环程序的优越性就越明显。程序的执行时间并不节省。由于要有循环预备、终了判别等指令,速度要比简单程序
8、稍慢些。 .循环程序组成循环程序普通由五部分组成:1、初始化部分:为循环程序做预备。如:设置循环次数计数器的初值,地址指针置初值,为循环变量赋初值等。2、处置部分:为反复执行的程序段,是循环程序的实体。3、修正部分:每执行一次循环体后,对指针作一次修正,使指针指向下一数据所在位置,为进入下一轮处置作预备。4、控制部分:根据循环次数计数器的形状或循环条件,检查循环能否能继续进展,假设循环次数到或循环条件不满足,应控制退出循环,否那么继续循环。通常2、3、4部分又称为循环体。5、终了部分:分析及存放执行结果。 .循环程序的构造循环程序的构造普通有两种方式:先进入处置部分,再控制循环。至少执行一次循
9、环体。先控制循环,后进入处置部分。即先根据判别结果,控制循环的执行与否,有时可以不进入循环体就退出循环程序。.主要语句寻址方式存放器间接寻址MOV A,RiMOVX A,DPTRMOVX A,Ri基址存放器+变址存放器间接寻址MOVC A,A+DPTRMOVC A,A+PC循环计数DJNZ Rn,relDJNE A,direct,relJZ(JNZ,JC,JNC,JB,JNB) rel.例4-5 任务单元清零将40H为起点的8个单元清“0ORG 0000HCLEAR:CLR A ;A清0 MOV R0,#40H ;确定清0单元起始地址 MOV R7,#08 ;确定要去除的单元个数LOOP: M
10、OV R0,A ;清单元 INC R0 ;指向下一个单元 DJNZ R7,LOOP ;控制循环 END.例4-5 任务单元清零例如:设有50个外部RAM单元要清“0,即为循环次数存放在R2存放器中,其首址存放在DPTR中,设为2000H ORG 0000H MOV DPTR,#2000H CLEAR: CLR A MOV R2,#32H ; 置计数值LOOP: MOVX DPTR,A INC DPTR ; 修正地址指针 DJNZ R2,LOOP ; 控制循环 END .例4-5 任务单元清零写成通用子程序方式:CLEAR: CLR ALOOP: MOVX DPTR,A INC DPTR ; 修
11、正地址指针 DJNZ R2,LOOP ; 控制循环 RET完好调用 ORG 0000H MOV DPTR,#2000H MOV R2,#50 ACALL CLEAR SJMP $CLEAR: CLR ALOOP: MOVX DPTR,A INC DPTR ; 修正地址指针 DJNZ R2,LOOP ; 控制循环 RET END.例4-6 多个单字节数据求和知有n个单字节数据,依次存放在内部RAM 40H单元开场的延续单元中。要求把计算结果存入R2,R3中高位存R2,低位存R3。程序如下: ORG 8000HSAD: MOV R0,#40H ;设数据指针 MOV R5,#NUM ; 计数值0AH
12、R5SAD1: MOV R2,#0 ; 和的高8位清零 MOV R3,#0 ; 和的低8位清零LOOP: MOV A,R3 ; 取加数 ADD A,R0 MOV R3,A ; 存和的低8位 JNC LOP1 ; 无进位,直接计算高8位 INC R2 ; 有进位,和的高8位+1LOP1: INC R0 ; 指向下一数据地址 DJNZ R5,LOOP RETNUM EQU 0AH END 上述程序中,用R0作间址存放器,每作一次加法,R0加1,数据指针指向下一数据地址,R5为循环次数计数器,控制循环的次数。 .例4-7 测试字符串长度设有一串字符依次存放在从50H单元开场的延续单元中,该字符串以回
13、车符(0DH)为终了标志,测得的字符串长度存入R2中。测字符串长度程序是将该字符串中的每一个字符依次与回车符相比,假设比较不相等,那么统计字符串长度的计数器加1。继续比较,假设比较相等,那么表示该字符串终了,计数器中的值就是字符串的长度。程序如下: ORG 0000HCONT: MOV R2,#00H ;初始长度设置 MOV R0,#50H ;数据指针R0置初值NEXT: CJNE R0,#0DH,LOOP1 RETLOOP1: INC R0 INC R2 SJMP NEXT END待测字符以ASCII码方式存放在RAM中,回车符的ASCII码为0DH,程序中用一条CJNE R0,#0DH,L
14、OOP指令实现字符比较及控制循环的义务,当循环终了时,R2的内容为字符串长度 .例4-9 10秒延时程序延时程序与MCS-51执行指令的时间有关,假设运用6MHz晶振,一个机器周期为2s,计算出执行一条指令以致一个循环所需求的时间,给出相应的循环次数,便能到达延时的目的。程序如下:DEL: MOV R5,#100DEL0: MOV R6,#200DEL1: MOV R7,#248DEL2: DJNZ R7,DEL2 ;248*2+4 DJNZ R6,DEL1 ;248*2+4*200+4 DJNZ R5,DEL0 ;248*2+4*200+4*100+4 RET上例延时程序实践延时为10.00
15、0406秒。它是一个三重循环程序,利用程序嵌套的方法对时间实行延迟是程序设计中常用的方法。运用多重循环程序时,必需留意以下几点:1循环嵌套,必需层次清楚,不允许产生内外层循环交叉。2外循环可以一层层向内循环进入,终了时由里往外一层层退出。3内循环体可以直接转入外循环体,实现一个循环由多个条件控制的循环构造方式。.例4-10 冒泡程序 MOV R6,#CNT DEC R6 LOOPA: MOV R0,#30H MOV A,R6 MOV R7,A CLR 20H.0 NEXT: MOV A,R0 INC R0 CLR C SUBB A,R0 JC NXCH MOV A,R0 DEC R0 XCH
16、A,R0 INC R0 MOV R0,A SETB 20H.0CNT EQU 07HORG 0000H AJMP STARTORG 0030HSTART: MOV DPTR,#LIST MOV R0,#30H MOV R7,#CNTLOOPD: CLR A MOVC A,A+DPTR MOV R0,A INC DPTR INC R0 DJNZ R7,LOOPDNXCH: DJNZ R7,NEXT JNB 20H.0,OVER DJNZ R6,LOOPAOVER: AJMP $LIST: DB 70H,13H,3H,90H,27H,32H,11Hend.例4-13 无符号数双字节乘法 R2 R3
17、 R6 R7- R3 R7 R2 R7 R3 R6 R2 R6- R4 R5 R6 R7.例4-13 无符号数双字节乘法ORG 0000H AJMP MAINORG 0030HMAIN: MOV SP,#60HSTART: MOV R2,#0FFH MOV R3,#0FFH MOV R6,#0FFH MOV R7,#0FFH LCALL DBMUL AJMP STARTDBMUL: MOV A,R3 MOV B,R7 MUL AB XCH A,R7 MOV R5,B MOV B,R2 MUL AB ADD A,R5 MOV R4,A CLR A ADDC A,B MOV A,R5 MOV A,
18、R6 MOV B,R3 MUL AB ADD A,R4 XCH A,R6 XCH A,B ADDC A,R5 MOV R5,A MOV F0,C MOV A,R2 MUL AB ADD A,R5 MOV R5,A CLR A MOV ACC.0,C MOV C,F0 ADDC A,B MOV R4,A RET END.4.4 散转程序设计散转程序是分支程序的一种。它由输入条件或运算结果来确定转入各自的处置程序。有多种方法能实现散转程序,但通常用逐次比较法,即把一切各个情况逐一进展比较,假设有符合便转向对应的处置程序。由于每一个情况都有判别和转移,如对n个情况,需求n个判别和转移,因此它的缺陷是
19、程序比较长。MCS-51指令系统中有一条跳转指JMP A+DPTR,用它可以容易地实现散转功能。该指令是把累加器A的8位无符号数作地址的低8位与16位数据指针的内容相加,其和送入程序计数器,作为转移指令的地址。执行JMP A+DPTR指令后,累加器和16位数据指针的内容均不受影响。 .例4-16 用转移指令表实现散转根据某一单元的值0,1,2,n分别转向处置程序0,处置程序1,处置程序n。这时可以用转移指令AJMP或LJMP组成一个转移表例4-16: 根据R6的内容,转向各个处置程序 MOV DPTR,#TAB1 MOV A,R6 ADD A,R6PAD: JMP A+DPTRTAB1: AJ
20、MP LOP0 AJMP LOP1 AJMP LOP2本例仅适用于散转表首地址TAB1和处置程序入口地址LOP0,LOP1,LOPn在同一个2K范围的存储区的情况。假设一个2K范围的存储区内放不下一切的处置程序时,把一些较长的处置程序放在其他存储区域,只需在该处置程序的入口地址内用LJMP指令即可。 .例4-16 用LJMP指令组成转移表 PJ2: MOV DPTR,#TAB2 CLR C MOV R5,#0 MOV A,R6 RLC A ;R6*2 JNC AD1 INC R5 ;有进位,高8位加1AD1: ADD A,R6 ;R6*3 JNC AD2 INC R5 ;有进位,高8位加1AD
21、2: MOV A,R5 ADD A,DPH ;DPTR高8位调整 MOV A,R6 JMP A+DPTR ;得散转地址TAB2: LJMB LOP0 LJMP LOP1 LJMP LOPn END 用AJMP组成的散转表为二字节一项,而用LJMP组成的散转表那么为三字节一项,根据R6中的内容或乘2,或乘3得每一处置程序的入口地址表指针。PJ2: MOV DPTR,#TAB2 CLR C MOV R5,#0 MOV A,R6 RLC A ;R6*2 JNC AD1 INC DPH ;AD1: ADD A,R6 ;R6*3 JNC AD2 INC DPH ;AD2: JMP A+DPTR TAB2
22、: LJMB LOP0 LJMP LOP1 LJMP LOPn END.例4-17 用转移地址表实现散转例4-17: 根据R3的内容转向对应处置程序。处置程序的入口分别是LOP0LOP2。PJ3: MOV DPTR,#TAB3 MOV A,R3 ADD A,R3 ;R3*2 JNC CAD INC DPH ;有进位DPTR高位加1CAD: MOV R2,A ;暂存R2 MOVC A,A+DPTR XCH A,R2 ;处置程序入口地址高8位暂存R2 INC A MOVC A,A+DPTR MOV DPL,A ;处置程序入口地址低8位暂存DPL MOV DPH,R2 CLR A JMP A+DPT
23、RTAB3:DW LOP0 DW LOP1 DW LOP2.4.5 子程序和参数传送方法在程序中,会多次进展一些一样的计算和操作,普通把他们写成子程序如数制转换、函数式计算等。一些常用的程序段,以子程序的方式,事先存放在存储器的某一区域主程序在运转时,需求用子程序时,只需执行调用子程序的指令,使程序转至子程序。子程序处置终了,前往主程序,继续进展以后的操作。调用子程序有几个优点:1、防止对一样程序段的反复编制。2、简化程序的逻辑构造,同时也便于子程序调试。3、节省存储器空间。有两条调用子程序指令ACALL及LCALL,和一条前往主程序的指令RET。子程序的调用,普通包含两个部分:维护现场和恢复
24、现场。参数的传送调用子程序时,主程序先把有关的参数入口参数存放在商定的位置,子程序在执行时,从商定的位置获得参数,当子程序执行完,将得到的结果出口参数存入商定的位置,前往主程序后,主程序可以从这些商定的位置上取到需求的结果。.1、任务存放器或累加器传送参数把入口参数或出口参数放任务存放器或累加器中。运用这种方法程序最简单,运算速度也最高。缺陷任务存放器数量有限,不能传送太多的数据;主程序必需先把数据送到任务存放器;参数个数固定,不能由主程序恣意改定。例:请编出能把R5单元内两个BCD数变换成相应ASCII码放在R6高位BCD数的ASCII码和R7低位BCD数的ASCII码单元的程序。根据ASC
25、II字符表,09的BCD数和它们的ASCII码之间仅相差30H。因此,仅需把R5单元中两个BCD数拆开,分别和30H相加就行了,可以编出程序如下:ASCH: MOV A,R5 ANL A,#0F0H ORL A,#30H MOV R6,A MOV A,R5 ANL A,#0FH ORL A,#30H MOV R7,A RET.2、用指针存放器来传送参数由于数据普通存放在存贮器中,而不是任务存放器中,故可用指针来指示数据的位置,可以节省传送数据的任务量,并可实现可变长度运算。普通如参数在内部RAM中,可用R0或R1作指针。可变长度运算时,可用一个存放器来指出数据长度,也可在数据中指出其长度如运用
26、终了标志符。 例: 将R0和R1指出的内部RAM中两个3字节无符号整数相加,结果送R0指出的内部RAM中。入口时,R0,R1分别指向加数和被加数的低位字节,出口时R0指向结果的高位字节。利用MS-51的带进位加法指令,可以直接编写出下面的程序。NADD: MOV R7,#3 CLR CNADD1: MOV A,R0 ADDC A,R1 MOV R0,A DEC R0 DEC R1 DJNZ R7,NADD1 INC R0 INC R0 INC R0 RET.3、用堆栈来传送参数堆栈可以用于传送参数。调用时,主程序用PUSH指令把参数压入堆栈子程序可按栈指针访问堆栈中的参数,同时可把结果参数送回
27、堆栈中。前往主程序后,可用POP指令得到这些结果参数。这种方法的优点是简单,能传送大量参数,不用为特定的参数分配存贮单元。运用这种方法时,由于参数在堆栈中,故大大简化了中断呼应时的现场维护。 .例4-19 一位十六进制数转换为ASCII码子程序HASC:MOV R0,SPDEC R0DEC R0 ;R0为参数指针XCH A,R0 ;维护ACC,取出参数ANL A,#0FH ADD A,#2 ;加偏移量MOVC A,A+PCXCH A,R0 ;查表结果放回堆栈中RETDB 0123456789 ;十六进制数的ASCII字符表DB ABCDEF.例4-21 一个字节的两位十六进制数为转换为两个AS
28、CII码子程序ORG 0000H AJMP STARTORG 0030HSTART: MOV SP,#60H MOV 40H,#7FH PUSH 40H MOV A,#78h LCALL HTA2 AJMP STARTHTA2: MOV R0,SPDEC R0DEC R0PUSH ACC ;维护累加器内容(?)MOV A,R0 ;取出参数ANL A,#0FHMOV DPTR,#DATA1MOVC A,A+DPTRXCH A,R0 ;低位HEX的ASCII码放入堆栈中SWAP AANL A,#0FHMOVC A,A+DPTRINC R0XCH A,R0 ;高位HEX的ASCII码放入堆栈中INC
29、 R0XCH A,R0 ;高位前往地址放入堆栈,并恢复累加器内容RETDATA1:DB 0123456789DB ABCDEFEND.例22将内部RAM中50H、51H中的内容以4位十六进制数的ASCII方式在串行发送出去,可如下调用HTA2程序: ORG 0000HSCOT4: PUSH 50HACALL HTA2POP ACCACALL COUTPOP ACCACALL COUTPUSH 51HACALL HTA2POP ACCACALL COUTPOP ACCACALL COUTCOUT: JNB TI,COUT ;字符发送子程序CLR TIMOV SBUF,ARETEND.4、程序段参
30、数传送参数传送方法,多数是在调用子程序前,把值装入适当的存放器传送参数。假设有许多常数参数,这种技术不太有效,每个参数需求一个存放器传送,并且在每次调用子程序时需分别用指令把它们装入存放器中。假设需求大量参数,并且这些参数均为常数时,程序段参数传送方法有时也称为直接参数传送是传送常数的有效方法。调用时,常数作为程序代码的一部分,紧跟在调用子程序后面。子程序根据栈内的前往地址,决议从何处找到这些常数然后在需求时,从程序存贮器中读出这些参数。.例22字符串发送子程序。实践运用中,需求发送各种字符串。这些字符串,通常放在EPROM程序存贮器中。按通常方法,需求先把这些字符装入RAM中,然后用传送指针
31、的方法来实现参数传送。为了简便,也可把字符串放在EPROM独立区域中,然后用传送字符串首地址的方法来传送参数。子程序可按该地址用MOVC指令从EPROM中读出并发送该字符串。最简单的方法是采用程序段参数传送方法。下例中,字符串全以0终了。SOUT: POP DPH ;栈中指针 POP DPLSOT1: CLR A MOVC A,A+DPTR INC DPTR JZ SEND JNB TI,$ ;$为本条指令地址 CLR TI MOV SBUF,A SJMP SOT1SEND: JMP A+DPTRRET 下面从发送字符串MCS-51 CONTROLLER为例,阐明该子程序运用方法。ACALL
32、SOUTDB MCS-51 CONTROLLERDB 0AH,0DH,0后面紧接其他程序。 .例22:总结上面子程序有几个特点:它不以普通的前往指令结尾,而是采用基存放器加变址存放器间接转移指令来前往到参数表后的第一条指令。一开场的POP指令已调整了栈指针的内容。它可适用与ACALL或LCALL,由于这两种调用指令均把下一条指令或数据字节的地址压入栈中。调用程序可位于MCS-51全部地址空间的任何地方,由于MOVC指令能访问一切64K字节。传送到子程序的参数可按最方便的次序列表,而不用按运用的次序陈列。子程序在每一条MOVC 指令前累加器装入适当的参数,这样根本上可“随机访问参数表。子程序只运
33、用累加器A和数据指针DPTR,运用程序可以在调用前,把这些存放器压入堆栈中,维护它们的内容。 .4.6查表程序设计查表程序是一种常用程序,它广泛运用于LED显示器控制、打印机打印以及数据补偿,计算、转换等功能程序中,具有程序简单、执行速度快等优点。查表,就是根据变量x在表格中查找y,使y=fx。.1、用MOVC A,A+PC查表指令编程例:用查表方法编写彩灯控制程序,编程使彩灯先依次点亮,再逆次点亮,然后连闪三下,反复循环。TAB: DB 01H,02H,04H,08H,10H,20H,40H,80H DB 80H,40H,20H,10H,08H,04H,02H,01H DB 00H,0FFH,00H,0FFH,00H,0FFH,03HDEL: MOV R7,#0FFHDEL1: MOV R6,#0FFHDEL2: DJNZ R6,DEL2 DJNZ R7,DEL1 RETEND ORG 0000HSTART: MOV R0,#00HLOOP: CLR A MOV A,R0ADD A,#0CHMOVC A,A+PCCJNE A,#03H,LOO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 淄博市巡游出租汽车驾驶员区域科目考试题库及答案(供参考)
- 2025年河北女子职业技术学院高职单招高职单招英语2016-2024历年频考点试题含答案解析
- 普通合伙合同协议书
- 隔音降噪合同范本
- 幼儿园中班建康活动策划方案五篇
- 信号工劳务合同
- 标准钢材购销合同样本
- 智能设备研发与生产合作合同
- 代理的合同范本
- 2024年数字化教育平台推广合同
- 测井监督管理手册
- 冷库库房招商方案
- 芯片可靠性分析
- 2023年贵州省毕节市中考物理试题(原卷+解析版)真题含答案
- 口腔种植技术临床应用能力评估报告范本
- 从中国制造到中国创造(优秀课件)
- 新华字典第12版电子版
- 【考试版】苏教版2022-2023学年四年级数学下册开学摸底考试卷(五)含答案与解析
- 血液透析个案护理两篇
- 第八章 客户关系管理
- 新版人教版高中英语选修一、选修二词汇表
评论
0/150
提交评论