




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第 5 章第 5 章教学重点在掌握基本的汇编语言程序设计方法之后,进一步学习如何提高编程效率的各种实用方法:高级语言特性宏结构模块化教学重点在掌握基本的汇编语言程序设计方法之后,进一步学习如何5.1 高级语言特性MASM 6.0引入高级语言的程序设计特性条件控制伪指令格式.IF 条件表达式语句组1.ELSE语句组2.ENDIF功能条件表达式为真,执行语句组1,否则执行语句组2(与C语言相似)条件表达式的运算符构成见表5.1所示5.1 高级语言特性MASM 6.0引入高级语言的程序设计5.1 高级语言特性如:.if ax=5mov bx,axmov ax,0.elsedec ax.endif汇编
2、后等价代码:cmp ax,5jnz c0001mov bx,axmov ax,0jmp c0003c0001:dec axc0003:5.1 高级语言特性如:.if ax=55.1 高级语言特性讨论(1)汇编程序在翻译条件表达式时将生成一组功能等价的比较、测试、转移指令(2)运算符的顺序是先关系后逻辑,但非运算最高,与、或运算最低,亦可用括号改变运算符的运算顺序(3)注意条件表达式中两个比较数的符号。所有的数据原则上均视为无符号数,如果要使用有符号数,对于变量应使用sbyte、sword、sdword定义数据;对于寄存器应使用sbyte ptr、 sword ptr临时修改属性(4)条件表达式
3、中若其中一个数据为有符号数,则强制另一个数也是有符号数5.1 高级语言特性讨论5.1 高级语言特性循环控制伪指令格式.WHILE 条件表达式;条件为真循环循环体.ENDW.REPEAT循环体.UNTIL 条件表达式;循环直到条件为真.REPEAT循环体.UNTILCXZ 条件表达式 ;循环直到 ;CX-1CX=0或条件为真5.1 高级语言特性循环控制伪指令5.1 高级语言特性讨论(1)循环体中可以使用BREAK、CONTINUE来终止循环或提前进入下一轮循环(2)上述三种形式可以构成当型循环和直到型循环(3)不带条件的.REPEAT/.UNTILCXZ将汇编成一条LOOP指令;带条件的.REP
4、EAT/.UNTILCXZ终止循环的条件是条件为真或CX减“1”后等于“0”(4) .REPEAT/.UNTILCXZ适用于寄存器与寄存器、存储器与常数之间的相等(=)或不等(!=)比较5.1 高级语言特性讨论5.1 高级语言特性例5.2 array是100个字元素的数组,试计算前若干个非负数之和,直到出现第一个负数为止,结果存入result单元中;LT502.ASM.model small.stack.dataarraysword 100 dup(?)resultsword ?.code.startupmov cx,100 xor ax,axlea bx,array5.1 高级语言特性例5.
5、2 array是100个字元素的5.1 高级语言特性.repeat .if sword ptr bx = 0 add ax,bx .else .break .endif inc bx;修改地址指针 inc bx.untilcxzmov result,ax.exit 0end5.1 高级语言特性.repeat5.1 高级语言特性汇编后等价代码:C0001:cmp sword ptr bx, 0000hjl C0002 add ax,bxjmp C0004C0002: jmp C0006C0004: inc bxinc bxloop C0001C0006: .5.1 高级语言特性汇编后等价代码:5
6、.1 高级语言特性过程声明和过程调用伪指令汇编语言子程序间、程序模块之间利用堆栈传递参数是一种主要的形式,但比较复杂和容易出错,所以,MASM 6.x参照高级语言函数形式扩展了PROC伪指令的功能,使其具有带参数的能力,极大地方便了过程或函数之间的参数传递5.1 高级语言特性过程声明和过程调用伪指令5.1 高级语言特性格式 过程名 PROC 调用距离 语言类型 作用范围 USES 寄存器列表 , 参数:类型 LOCAL 变量名个数:类型, ;汇编语言语句 过程名 ENDP说明(1)调用距离:NEAR或FAR,默认值由.model选择的存储模式决定(2)语言类型:确定该过程采用的命名约定和调用约
7、定,如表5.2所示,语言类型也可以由.model指定(3)作用范围:public、private等,表示该过程对其它模块是否可见,第5章5.1 高级语言特性格式第5章5.1 高级语言特性 默认为public(可见),private(不可见)。(4)起始参数:使用该参数,汇编程序将自动创建过程的起始代码和收尾代码,用于传递堆栈参数和清除堆栈,参数须用括起来,多个参数用逗号分隔(5)寄存器列表:对于该表中的寄存器,汇编程序将自动在起始代码和收尾代码中产生相应的进、出栈指令来保护其内容。多个寄存器用空格分隔(6)参数:类型:表示该过程使用的形参及类型,可以是任何MASM中有效的类型或PTR(地址指针
8、)。16位段中默认为WORD,32位段中默认为DWORD。要使用参数类型则必须定义语言类型第5章5.1 高级语言特性 默认为public(可见),p5.1 高级语言特性(7) LOCAL 变量名个数:类型, 定义过程中使用的局部变量,如果使用了个数,相当于定义数组。对于类型,16位段中默认为WORD,32位段中默认为DWORD。使用该伪指令后,系统将自动利用堆栈存放其后的变量,其方法与高级语言相同功能 定义一个供其它模块或程序调用的过程。第5章如何调用5.1 高级语言特性(7) LOCAL 变量名个数:5.1 高级语言特性第5章要调用带参数过程,不要采用过程调用伪指令CALL,因为比较烦琐最好
9、采用过程调用伪指令INVOKE使用INVOKE伪指令的前提是需要用PROTO伪指令对过程进行声明过程声明伪指令:用于事先声明过程的结构 过程名 PROTO 调用距离 语言类型, 参数: 类型过程调用伪指令 INVOKE 过程名,参数,.5.1 高级语言特性第5章要调用带参数过程,不要采用过程调5.1 高级语言特性第5章INVOKE伪指令将自动创建调用过程所需的代码序列,调用前将参数压入堆栈,调用后平衡堆栈。其中参数是实在参数,可以是数值表达式、寄存器对(reg:reg)、ADDR 标号(传递该标号的地址,如果是WORD型,则传递段内偏移地址;如果是DWORD型,则要传递段基址和段内偏移地址5.
10、1 高级语言特性第5章INVOKE伪指令将自动创建调用;汇编语言程序:lt503.asm.model smallchecksumd PROTO c,:word,:word;声明过程.stack.dataarraydb 12h,25h,0f0h,0a3h,3db 68h,71h,0cah,0ffh,90hcountequ $-array;数组的元素个数resultdb ?;校验和.code.startupINVOKE checksumd,count,offset array;调用过程mov result,al;保存校验和.exit 0例5.31/2列表文件;汇编语言程序:lt503.asm例5.
11、31/2列表文件checksumd PROC c USES bx cx,countp:word,arrayp:wordmov bx,arrayp;BX数组的偏移地址mov cx,countp;CX数组的元素个数xor al,alsumd:add al,bx;求和:ALAL+DS:BXinc bxloop sumdretchecksumd endpend例5.32/2列表文件checksumd PROC c USES bx cx,例;lt503.asm的列表文件(lt503.lst).INVOKE checksumd,count,offset array *mov ax,word ptr OFF
12、SET array *push ax *mov ax,+000Ah *push ax *call checksumd *add sp,04hmov result,al.例5.31/2指示该语句由汇编程序自动生成;lt503.asm的列表文件(lt503.lst)例5.3checksumd PROC c USES bx cx,countp:word,arrayp:word *push bp;起始代码 *mov bp,sp *push bx;保护bx和cx *push cxmov bx,arrayp;arrayp=BP+6mov cx,countp;cuontp=BP+4.ret *pop cx;
13、结尾代码 *pop bx *pop bp *ret 0000hchecksumc endp例5.32/2进入调试程序观察checksumd PROC c USES bx cx,例5.2 宏结构程序设计宏汇编重复汇编条件汇编统称宏结构宏(Macro)是汇编语言的一个特点,它是与子程序类似又独具特色的另一种简化源程序的方法5.2 宏结构程序设计宏汇编宏(Macro)是汇编语言的一宏具有宏名的一段汇编语句序列宏定义时书写宏指令这段汇编语句序列的缩写宏调用时书写宏展开宏指令处用这段宏代替的过程宏汇编时实现宏的参数功能强大,颇具特色配合宏,还有宏操作符和有关伪指令5.2.1 宏汇编第5章宏具有宏名的一段
14、汇编语句序列5.2.1 宏汇编第5章宏定义宏名macro 形参表宏定义体endmmainbeginMACRO ;定义名为mainbegin的宏,无参数mov ax,data;宏定义体mov ds,axENDM;宏定义结束mainendMACRO retnum;带有形参retnummov al,retnum;宏定义中使用参数mov ah,4chint 21hENDM宏注释符宏定义宏名macro 形参表mainbeginMAC宏调用宏名实参表start:mainbegin;宏调用,建立DS内容dispmsg string;宏调用,显示字符串,见P135mainend 0;宏调用,返回DOSend
15、start 宏调用的实质是在汇编过程中进行宏展开 宏展开的具体过程是:当汇编程序扫描源程序遇到已有定义的宏调用时,即用相应的宏定义体取代源程序的宏指令,同时用位置匹配的实参对形参进行取代宏调用宏名实参表start:mainbegin;宏宏展开宏展开在汇编时,用宏定义体的代码序列替代宏指令的过程。start:mainbegin;宏指令 1mov ax,data;宏展开 1mov ds,axmainend 0;宏指令 1mov al,0;宏展开 1mov ah,4ch 1int 21h宏展开宏展开在汇编时,用宏定义体的代码序列替代宏指令的过宏的参数宏的参数使用非常灵活宏定义时,可以无参数,例如5.
16、4a的mainbegin可以带有一个参数,例如5.4a的mainend也可以具有多个参数;例如5.5a的shlext参数可以是常数、变量、存储单元、指令(操作码)或它们的一部分,也可以是表达式;例如5.5b的shift和shrot宏定义体可以是任何合法的汇编语句,既可以是硬指令序列,又可以是伪指令序列;例如5.6的dstring宏的参数宏的参数使用非常灵活宏定义时,;宏定义shlextmacro shloprand,shlnumpush cxmov cl,shlnumshl shloprand,clpop cxendm;宏指令shlext ax,6;宏展开 1push cx 1mov cl,0
17、6 1shl ax,cl 1pop cx例5.5a;宏定义例5.5a;统一4条移位指令的宏指令shiftmacro soprand,snum,sopcodepush cxmov cl,snums&sopcode& soprand,clpop cxendm;统一移位和循环移位8条指令的宏指令shrotmacro sroprand,srnum,sropcodepush cxmov cl,srnumsropcode sroprand,clpop cxendm例5.5b替换操作符,可省;统一4条移位指令的宏指令例5.5b替换操作符,可省;宏定义dstringmacro stringdb &string
18、&,0dh,0ah,$endm;宏调用dstringdstring 0 ! Number !;宏展开 1db This is a example., 0dh,0ah,$ 1db 0 Number 10, 0dh,0ah, $例5.6转义注释符传递注释符;宏定义例5.6转义注释符传递注释符宏操作符;宏注释符,用于表示在宏定义中的注释。采用这个符号的注释,在宏展开时不出现&替换操作符,用于将参数与其他字符分开。如果参数紧接在其他字符之前或之后,或者参数出现在带引号的字符串中,就必须使用该伪操作符第5章宏操作符;宏注释符,用于表示在宏定义中的注释。采用这个宏操作符字符串传递操作符,用于括起字符串。在
19、宏调用中,如果传递的字符串实参数含有逗号、空格等间隔符号,则必须用这对操作符,以保证字符串的完整!转义操作符,用于指示其后的一个字符作为一般字符,不含特殊意义%表达式操作符,用在宏调用中,表示将后跟的一个表达式的值作为实参,而不是将表达式本身作为参数第5章宏操作符字符串传递操作符,用于括起字符串。在宏调用与宏有关的伪指令局部标号伪指令LOCAL 标号列表宏定义体采用了标号,应使用LOCAL加以说明,它必须是宏定义MACRO语句之后的第一条语句。作用:每次宏展开时汇编程序都将对宏体中的标号自动产生一个惟一的标号,以保证宏展开后源程序中标号的惟一性。其取值按宏展开后的顺序依次为?0000?FFFF
20、(例子见后)宏定义删除伪指令PURGE 宏名表不需要某个宏定义时,可以把它删除宏定义退出伪指令EXITM伪指令EXITM表示结束当前宏调用的展开第5章与宏有关的伪指令局部标号伪指令第5章;宏定义absolmacro oprdlocal nextcmp oprd,0jge nextneg oprdnext: nopendm例5.7;宏调用absol word ptr bxabsol bx;宏展开 1cmp word ptr bx,0 1jge ?0000 1neg word ptr bx 1?0000:nop 1cmp bx,0 1jge ?0001 1neg bx 1?0001:nop单独占一
21、行;宏定义例5.7;宏调用单独占一行比较源程序级的简化:宏调用在汇编时进行程序语句的展开,不需要返回;不减小目标程序,执行速度没有改变通过形参、实参结合实现参数传递,简捷直观、灵活多变目标程序级的简化:子程序调用在执行时由CALL指令转向、RET指令返回;形成的目标代码较短,执行速度减慢需要利用寄存器、存储单元或堆栈等传递参数宏子程序比较源程序级的简化:宏调用在汇编时进行程序语句的展开,不需要宏与子程序具有各自的特点,程序员应该根据具体问题选择使用那种方法通常,当程序段较短或要求较快执行时,应选用宏;当程序段较长或为减小目标代码时,要选用子程序比较结论宏子程序宏与子程序具有各自的特点,程序员应
22、该根据具体问题选择使用那种5.2.2 重复汇编重复汇编指在汇编过程中,重复展开一段(基本)相同的语句重复汇编没有名字,不能被调用重复汇编常用在宏定义体中,也可以在一般汇编语句中使用重复汇编伪指令有三个:REPEAT按参数值重复FOR按参数个数重复FORC按参数的字符个数重复重复汇编用ENDM结束第5章5.2.2 重复汇编重复汇编指在汇编过程中,重复展开一段(按参数值重复REPEAT 重复次数 重复体ENDMchar = AREPEAT 26 db char char = char +1ENDM 1db char;等效于db A 1char = char +1 1db char;等效于db B
23、1char = char +1. 1db char;等效于db Z 1char = char +1按参数值重复REPEAT 重复次数char = A 1按参数个数重复FOR 形参,实参表 重复体ENDMFOR regad, push regadENDM 1push ax 1push bx 1push cx 1push dx按参数个数重复FOR 形参,实参表FOR regad,按参数字符个数重复FORC 形参, 字符串 重复体ENDMFORC regad,dcba pop ®ad&xENDM 1pop dx 1pop cx 1pop bx 1pop ax字符串不需用定界符按参数字符个数重复
24、FORC 形参, 字符串FORC reg5.2.3 条件汇编条件汇编伪指令在汇编过程中,根据条件决定汇编的语句(表5.3)IF/IFE 表达式;满足,汇编分支语句体1分支语句体1ELSE;不满足,汇编分支语句体2分支语句体2 ENDIF;条件汇编结束注:表达式为关系表达式,-1为真,0为假。第5章5.2.3 条件汇编条件汇编伪指令在汇编过程中,根据条件决pdatamacro num IF num lt 100;如果num 100,则汇编如下语句db num dup (?) ELSE;否则,汇编如下语句db 100 dup (?) ENDIFendmpdata 12 ;宏调用db 12 dup(
25、?) ;宏汇编结果pdata 102 ;宏调用db 100 dup(?) ;宏汇编结果例5.10pdatamacro num例5.10宏结构的作用宏汇编、重复汇编和条件汇编为源程序的编写提供了很多方便,灵活运用它们可以编写出非常良好的源程序来汇编系统中有些以圆点起始的 伪指令(如.startup、.exit等)实际上是一种宏结构宏结构的作用宏汇编、重复汇编和条件汇编dstringMACRO string;定义字符串db &string&,0dh,0ah,$ENDMmainbeginMACRO dsseg;设置数据段地址mov ax,dssegmov ds,axENDMdispmsgMACRO
26、messagemov dx,offset messagemov ah,09hint 21hENDM例题5.41/3dstringMACRO string;定义字符串例题mainendMACRO retnum;返回DOS,可不带参数ifb mov ah,4ch;没有参数else mov ax,4c00h+(retnum AND 0ffh); 有参数endifint 21hENDM例题5.42/3mainendMACRO retnum;返回DOS,可.model small.stack 256.datamsg1equ this byte;定义字节型msg1,指向字符缓冲区dstring;宏调用,建
27、立字符串msg2equ this byte;定义字节型msg2,指向字符缓冲区dstring;宏调用,建立字符串.codestart:mainbegin data;建立DS内容dispmsg msg1;显示msg1字符串dispmsg msg2;显示msg2字符串mainend;无参返回DOSend start例题5.43/3.model small例题5.43/3将程序分段、采用子程序或宏结构都是进行模块化程序设计本节介绍开发大型程序时采用的方法:源程序文件的包含目标模块连接子程序库5.3 模块化程序设计例题 5.12将键盘输入的数据按升序输出将程序分段、采用子程序或宏结构都是进行模块化程序
28、设计5.3 把源程序分放在几个文本文件中,在汇编时通过包含伪指令INCLUDE结合成一体INCLUDE 文件名可将常用的子程序形成.ASM汇编语言源文件可将常用的宏定义存放在.MAC宏库文件中可将常量定义、声明语句组织在.INC包含文件中例5.12a 宏库文件 lt512a.mac 主程序文件 lt512a.asm 子程序文件 sub512a.asm5.3.1 源程序文件的包含1把源程序分放在几个文本文件中,在汇编时通过包含伪指令INCLdispcharmacro char;显示char字符mov dl,charmov ah,2int 21hendmdispmsgmacro message;显
29、示message字符串mov dx,offset messagemov ah,9int 21hendmLt512a.macdispcharmacro char;显示char字符Linclude lt512a.mac.dispmsg msg1;提示输入数据mov bx,offset bufcall input;数据输入cmp cx,0je start4;没有输入数据则退出mov count,cx.;显示输入的数据.;数据排序.;显示经排序后的数据start4:.exit 0include sub512a.asmendLt512a.asminclude lt512a.macLt512a.asm子程
30、序源文件有3个子程序ALdisp;显示2位16进制数子程序(例4.10)sorting;排序子程序(例4.8)input;键盘输入子程序还包含一个宏convert;将DX两位ASCII码转换为两位16进制数sub512a.asm让我们重点分析键盘输入子程序 input子程序源文件有3个子程序sub512a.asm让我们重点分析;键盘输入子程序;入口参数:ds:bx=存放数据的缓冲区;出口参数:cx=数据个数inputprocpush axpush dxxor cx,cx;数据个数清0input01:xor dx,dx;输入字符清0input02:mov ah,1;键盘输入一个字符int 21h
31、input之一继续:input之二;键盘输入子程序input之一继续:input之二input10:cmp al,0dhje input30;是回车,结束整个数据的输入cmp al, je input20;是空格和逗号,确认输入了一个数据cmp al,je input20cmp al,08hje input17;是退格,丢弃本次输入的数据,出错input之二继续:input之三input10:cmp al,0dhinput之二继续:icmp al,0;有效数字判断(图5.2b)jb input17;小于0,不是有效数字,出错cmp al,fja input17;大于f,不是有效数字cmp al
32、,ajb input11sub al,20h;af转换成大写AFjmp input12input11:cmp al,Fja input17;字符小于a、大于F,出错cmp al,Ajae input12;是AF,有效字符cmp al,9ja input17;是09,有效字符input之三继续:input之四cmp al,0;有效数字判断(图5.2b)inpuinput12:cmp dl,0;有效字符的处理jne input13mov dl,al;dl=0,输入了一个数据的低位,则dlaljmp input02;转到字符输入input13:cmp dh,0jne input17;dl0,dh0输
33、入3位数据,出错mov dh,dl;dl0,dh0输入了一个数据的高位mov dl,al;dhdl,dlaljmp input02;转到字符输入input之四继续:input之五input12:cmp dl,0;有效字符的处理inpuinput17:mov dl,7;输入错误处理mov ah,2int 21hmov dl,?mov ah,2int 21hjmp input01;转到输入一个数据input之五继续:input之六input17:mov dl,7;输入错误处理input;转换正确的输入数据(图5.2c)input20:convertjmp input01;转到输入一个数据input
34、30:convertpop dxpop axret;返回,出口参数已设定inputendpinput之六继续:convert之一;转换正确的输入数据(图5.2c)input之六继续:con;将DX两位ASCII码转换为两位16进制数(图5.2c)convertmacrolocal input21,input22local input24,input25cmp dl,0;dl=0,没有要转换的数据,退出je input25convert之一继续:convert之二;将DX两位ASCII码转换为两位16进制数(图5.2c)cmp dl,9jbe input21sub dl,7;字符AF,则减7in
35、put21:and dl,0fh;转换低位cmp dh,0;dh=0,没有高位数据je input24cmp dh,9jbe input22sub dh,7input22:shl dh,1shl dh,1shl dh,1shl dh,1;转换高位or dl,dh;合并高、低位convert之二继续:convert之三cmp dl,9convert之二继续:convert源文件包含的操作步骤: 分别编辑生成各个文件 汇编、连接主程序文件input24:mov bx,dl;存入缓冲区inc bxinc cx;数据加1input25:endmconvert之三input24:mov bx,dl;存入
36、缓冲区co把常用子程序写成独立的源程序文件,单独汇编,形成子程序的目标文件.OBJ主程序也经过独立汇编之后形成目标文件连接程序将所有目标文件连接起来,最终产生可执行文件需要遵循的原则: 声明共用的变量、过程等 实现正确的段组合 处理好参数传递问题5.3.2 目标代码文件的连接2把常用子程序写成独立的源程序文件,单独汇编,形成子程序的目标声明共用的变量、过程各个模块间共用的变量、过程等要说明PUBLIC 标识符 ,标识符.;定义标识符的模块使用EXTERN 标识符:类型 ,标识符:类型.;调用标识符的模块使用标识符是变量名、过程名等类型是byte / word / dword(变量)或near
37、/ far(过程)在一个源程序中,public/extern语句可以有多条各模块间的public/extern伪指令要互相配对,并且指明的类型互相一致第5章声明共用的变量、过程各个模块间共用的变量、过程等要说明第5章实现正确的段组合子程序文件必须定义在代码段中,也可以具有局部的数据变量采用简化段定义格式,只要采用相同的存储模式,容易实现正确的近或远调用完整段定义格式中,为了实现模块间的段内近调用(near类型),各自定义的段名、类别必须相同,组合类型都是public。实际的程序开发中,各个模块往往由不同的程序员完成,不易实现段同名或类别相同,所以索性定义成远调用(far类型)定义数据段时,同样
38、也要注意这个问题。当各个模块的数据段不同时,要正确设置数据段DS寄存器的段基地址第5章实现正确的段组合子程序文件必须定义在代码段中,也可以具有局部处理好参数传递问题少量参数可用寄存器或堆栈直接传送数据本身大量数据可以安排在缓冲区,用寄存器或堆栈传送数据的存储地址还可利用变量传递参数,但是要采用public/extern声明为公共(全局)变量这些也是子程序间的参数传递方法另外,第7章混合编程介绍了更好的堆栈传递参数方法,可以采用第5章处理好参数传递问题少量参数可用寄存器或堆栈直接传送数据本身第例5.12b主程序lt512b.asm并入宏定义子程序文件sub512b.asm,要加上段定义语句、声明
39、语句等,但不需要起始点和结束点模块连接的操作步骤: 分别编辑生成各个文件 分别汇编各个文件 连接各个目标文件,形成可执行文件例5.12b主程序lt512b.asm并入宏定义.;宏定义.codepublic count;定义count共用extern ALdisp:near,sorting:near,input:far;声明其他模块中的子程序.startup.exit 0;去掉(lt512a.asm中的)包含语句endLt512b.asm.;宏定义Lt512b.asm.model small;定义同样的存储模式extern count:word;在其他模块定义了字变量count.code;子程序
40、在代码段中public aldisp,sorting,input;3个子程序是共用的Aldispproc;仍然作为近调用sortingproc;仍然作为近调用inputproc far;修改为远调用.mov count,cx;提供出口参数.inputendpend;结束汇编sub512b.asm.model small;定义同样的存储模式sub512把常用子程序写成独立的源文件,单独汇编形成OBJ文件后,存入子程序库主程序也单独汇编形成OBJ文件主程序连接时,调入子程序库中的子程序模块,产生最终的可执行文件例5.12c 主程序文件 lt512c.asm 子程序文件 sub512c1.asm 子程序文件 sub512c2.asm 子程序文件 sub512c3.asm5.3.3 子
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025江西南昌市青山湖区招聘社区工作者(专职网格员)45人模拟试卷及一套答案详解
- 2025广东广州市公安局越秀区分局招聘辅警50人模拟试卷及答案详解(新)
- 2025届中铁一局高校毕业生春季招聘正式启动笔试题库历年考点版附带答案详解
- 2025江苏泰州市中西医结合医院招聘高层次卫生专业技术人才5人考前自测高频考点模拟试题附答案详解(考试直接用)
- 2025年山东省标准化研究院公开招聘人员考前自测高频考点模拟试题完整参考答案详解
- 2025湖北省通山县高层次紧缺专业人才引进60人模拟试卷有完整答案详解
- 2025昆明市五华人民医院招聘派遣制工作人员(1人)考前自测高频考点模拟试题附答案详解(典型题)
- 2025吉林四平市悦萍水利管理有限公司面向社会公开招聘3人笔试题库历年考点版附带答案详解
- 2025中国铁塔股份有限公司社招+校招开启笔试题库历年考点版附带答案详解
- 2025花卉种植专业户发展协议
- 河道疏浚外运施工方案
- 银行职业介绍课件
- 辽宁省盘锦市大洼区田家学校2024-2025学年九年级上学期第四次质量检测语文试卷
- 广东省惠州市联考2024-2025学年上学期12月教学质量阶段性诊断八年级数学试卷(无答案)
- 工程结算协议书
- 砖砌围墙施工方案
- 2024-2030年中国痘痘贴行业营销动态及消费需求预测研究报告
- 《人工智能导论》(第2版)高职全套教学课件
- 疑问句(课件)六年下册英语人教PEP版
- 视力残疾康复服务规范
- HG T 3690-2022 工业用钢骨架聚乙烯塑料复合管
评论
0/150
提交评论