(精品)第4章MASM汇编语言基础

上传人:沈*** 文档编号:245006690 上传时间:2024-10-07 格式:PPT 页数:54 大小:432.50KB
返回 下载 相关 举报
(精品)第4章MASM汇编语言基础_第1页
第1页 / 共54页
(精品)第4章MASM汇编语言基础_第2页
第2页 / 共54页
(精品)第4章MASM汇编语言基础_第3页
第3页 / 共54页
点击查看更多>>
资源描述
,*,第,4,章,MASM,汇编语言基础,4.1,汇编语言语句种类及其格式,4.2,汇编语言数据,4.3,表达式与运算符,4.4,程序的段结构,4.5,其他常用伪指令,4.6,汇编语言上机调试,Intel8086/,8088,系列微机的汇编程序,MASM,,,是美国,Microsoft,公司开发较早的宏汇编程序,它不仅具有,ASM,的全部功能(支持基本汇编语言,),而且增加了指令、结构、记录等高级宏汇编功能。,语句,(,Statement,),是汇编语言源程序的基本组成单位。一个汇编语言源程序有三种基本语句:指令语句、伪指令语句、宏指令语句。,第,4,章,MASM,汇编语言基础,4.1,汇编语言语句种类及其格式,每一条指令语句在汇编时都要产生一个可供机器执行的目标代码,这种语句也被称为可执行语句。指令语句的格式如图,4.1,所示:,图,4.1,指令语句的格式,4.1,汇编语言语句种类及其格式(续),4.1.1,指令语句,一条指令语句有如下,4,个字段:,1,标号字段,这是一个可选字段。标号必须以,“,:,”,作为结束符。一个标号是一条指令的符号地址,它代表该指令的第一个字节的地址。,2,指令助记符字段,这是一条指令中不可缺少的主要成分。它表示这条语句要求,CPU,完成什么操作。,4.1.1,指令语句(续),3,操作数字段,按照指令助记符字段要求,指令语句可以有一个操作数、两个操作数或无操作数。,4,注释字段,这是一个可选字段,注释字段必须以分号“;”为开始,它可以方便程序设计人员对程序或指令加以注释,提高程序的的可读性。,4.1.1,指令语句(续),4.1.2,伪指令语句,与指令语句不同的是,伪指令本身,不产生与之对应的目标代码,。它是在汇编程序对汇编语言源程序汇编期间,由汇编程序,处理的操作,它们可以完成如数据定义、分配存储区、指示程序,结束等功能。,4.1,汇编语言语句种类及其格式(续),图,4.2,伪指令语句的格式,一条伪指令语句也有如下,4,个字段:,1,符号名字段,这是一个可选字段。符号名后面不得用冒号,“,:,”,,这是它与指令语句突出的一个区别。,4.1.2,伪指令语句(续),4.1.2,伪指令语句(续),2,伪指令字段,这是伪指令语句中不可省略的主要成分。它们是伪指令语句要求汇编程序完成的具体操作命令。,3,操作数字段,本字段是否需要,需要几个,需要什么样的操作数等都由伪指令字段中伪指令来确定。,4,注释字段,这是一个任选字段,它必须以分号为开始,它的作用与指令语句的注释字段相同。,4.2.1,常量,凡是出现在,8086,源程序中的固定值(即在汇编期间,它的值已经能够完全确定,在程序运行期间,它的值也不会发生任何的变化),就称为常量。,4.2,汇编语言数据,通常汇编语言能识别的数据有:常量、变量和标号。,1,十进制常量:,0,9,数字序列,可以用字母,D,结尾,,,也可没有结尾字母;,2,二进制常量:以字母,B,结尾的,0,和,1,组成的数字序列;,3,八进制常量:以字母,O,或,Q,结尾的,0,7,数字序列;,4,十六进制常量:以字母,H,结尾的,0,9,和,A,F,(或,a,f,),的数字字母序列。,5,字符串常量:用单引号或双引号括起来的一个或多个字符,这些字符用它的,ASCII,码值存储在内存中。,4.2.1,常量(续),变量就是用来表示程序中所用的内存操作数。,1,定义,格式:,变量名,类型助记符,操作数,,操作数,,其中变量名字段是可有可无的,它用于指示内存操作数的地址(符号,地址);操作数字段用于指示内存操作数,汇编程序将定义的内存,操作数,按其类型分配内存,4.2.2,变量,DQ,伪指令用来定义四个字,其后的每个操作数都占有四个字;,4.2.2,变量(续),常用的有以下几种:,DB,伪指令用来定义字节,其后的每个操作数都占有一个字节;,DW,伪指令用来定义字,其后的每个操作数都占有一个字(低位字节存放在低地址,高位字节存放在高地址);,DD,伪指令用来定义双字,其后的每个,操作数都占有两个字;,(,1,)段属性,SEG,它表示变量存放在哪一个逻辑段中。,(,2,)偏移量属性,OFFSET,表示变量在逻辑段中离段起始点的字节距离。,(,3,)类型属性,TYPE,表示变量占用存储单元的字节数,它由类型助记符,DB,、,DW,、,DD,、,DQ,来规定。,4.2.2,变量(续),2,变量的三个属性,它们通常有以下几种情况:,(,1,)数值表达式:,表示内存操作数的初始值,其值应在其定义的类型范围内。,如:,xx DB1,,,1,yy,DW 2,16,,,1,(,2,),表达式:不带引号的?表示可预置任何内容。,3,预置初值,4.2.2,变量(续),对于,DB,伪指令,为字符串中每个字符分配一个字节单元。字符串必须是引号括起来的不超过,255,个字符。,对于,DW,伪指令,可以给两个字符组成的字符串分配两个字节的存储单元,,而且这两个字符的,ASCII,码的存储顺序是前一个字符在高字节,后一字符在低字节,。每一个数据项只能是,1,2,个字符。,(,3,)字符串表达式,3,预置初值(续),对于,DD,伪指令,仅可给两个字符组成的字符串分配,4,个字节的单元,且这两个,ASCII,码是存储在两个低字节(存储顺序与,DW,伪指令相同)中,两个高字节均存放,00H,。,(,4,)带,DUP,表达式:,DUP,是定义重复数据操作符,在操作数部分的格式为:,重复次数,DUP,(,重复的内容),(,3,)字符串表达式(续),3,预置初值(续),(,1,)在指令语句中,如果要对某存储单元进行存取操作,就可直接引用它的变量名。,(,2,),在伪指令语句中:定义变量时引用了另一个变量,,则这个变量的内容均是被引用变量的逻辑地址。如用,DW,,,则仅有偏移量,如用,DD,则前两个字节存放偏移量,后两个字节存放段地址,;,注意不能用,DB,引用变量名。,4.2.2,变量(续),4,变量的使用,2,标号的三个属性:,(,1,),段属性,:,表示这条指令的目标代码在哪个逻辑段中;,(,2,)偏移量属性,:,表示这条指令目标代码的首字节在段内离段起始点的字节距离;,(,3,),距离属性,(或类型属性),4.2.3,标号(,Label,),1,定义:,标号是一条指令目标代码的符号地址,它常作为转移指令或调用指令的操作数。,4.3.1,算术运算符,算术运算符有(加)、(减)、(乘)、,/,(整除)、,MOD,(,求余),参加运算的数和运算结果均是整数。,4.3.2,逻辑运算符,逻辑,运算符有,4,个:,AND,(,与)、,OR,(,或)、,NOT,(,非)和,XOR,(,异或),参加运算的数和运算的结果均是整数,逻辑运算是,按位进行的。,4.3,表达式与运算符,这,6,个关系运算符分别是:,GT,(,大于)、,GE,(,大于等于)、,LT,(,小于)、,LE,(,小于等于)、,EQ,(,等于)、和,NE,(,不等于)。它们用于比较两个表达式,表达式,一定是常数或同段内的变量。若是常数,按无符号数比较;若是变量则比较它们的偏移量。,比较的结果为以真,表示为全,1,;结果为假,表示为全,0,。,4.3,表达式与运算符(续),4.3.3,关系运算符,1,SEG,格式:,SEG,变量名或标号,当运算符,SEG,加在一个变量名或标号前面时,汇编程序回送的运算,结果是这个变量或标号所在的段的段基址;,4.3,表达式与运算符(续),4.3.4,数值返回运算符,数值返回运算符有,5,个,分别是:,SEG,、,OFFSET,、,TYPE,、,LENGTH,和,SIZE,。,这种运算符的对象必须是存储器操作数,即变量名或标号,通过运算后返回的是一个数值。,3,TYPE,格式:,TYPE,变量名或标号,如果是变量,则汇编程序将回送该变量的以字节数表示的类型:,DB,为,1,,,DW,为,2,,,DD,为,4,,,DQ,为,8,。如果是标号,则汇编程序将回送代表该标号类型的数值:,NEAR,为,1,,,FAR,为,2,。,4.3.4,数值返回运算符(续),2,OFFSET,格式:,OFFSET,变量名或标号,当运算符,OFFSET,加在一个变量名或标号前面时,汇编程序回送的运算结果是这个变量或标号所在的段的偏移量;,5,SIZE,格式:,SIZE,变量名,运算符,SIZE,加在变量的前面,汇编程序回送的值等于,LENGTH,和,TYPE,两个运算符返回值的乘积。,4.3.4,数值返回运算符(续),4,LENGTH,格式:,LENGTH,变量名,如果变量是用重复数据操作符,DUP,说明的,汇编程序将回送外层,DUP,给定的值;如果变量没有用,DUP,说明,则返回的值总是,1,。,这种运算符是对变量、标号或某存储器的类型属性进行修改指定,它主要有,PTR,、,段跨越前缀、,SHORT,、,HIGH,和,LOW,等,5,种。,4.3.5,属性修改运算符,1,PTR,格式:类型,PTR,地址表达式,其中,地址表达式是指要修改类型属性的标号或存储器操作数。如果它是,标号,则与之对应的类型有:,NEAR,、,FAR,;,如果它是存储器操作数,则与之对应的类型有:,BYTE,、,WORD,、,DWORD,。,2,段跨越前缀,它是在存储器操作数之前加上段寄存器名和冒号用于强行指定此存储器操作数相对哪个段寄存器,共有,4,种:,DS,:、,CS,:、,SS,:和,ES,:,4.3.5,属性修改运算符(续),3,SHORT,用来修饰,JMP,指令中转向地址的属性,指出转向地址是在下一条指令地址的,128,127,字节范围之内。,4,HIGH/LOW,格式:,HIGH,常数或地址表达式,LOW,常数或地址表达式,这两个运算符,称为字节分离操作符,它接收一个常数或地址表达式,,HIGH,取其高位字节,,LOW,取其低位字节。其中地址表达式必须,具有常量值,,HIGH/LOW,运算符用于分离出段地址或偏移量的高字节,/,低字节。,4.3.5,属性修改运算符(续),由高到低,从左往右地对优先级别相同的运算符进行计算。,表,4.1,算符的优先级别关系表,4.3,表达式与运算符(续),格式:,段名,SEGMENT,段名,ENDS,一个完整的汇编源程序中可以定义多个段,但同时起作用的最多只有,4,个。每一个段都是由伪指令,SEGMENT,开始,由,ENDS,结束,,SEGMENT,和,ENDS,必须成对出现,并且在,SEGMENT,和,ENDS,的前面都必须有同一个段名;,SEGMENT,和,ENDS,语句之间可以的省略号部分,对于代码段来说,主要是指令,也可以有伪指令;对于数据段、附加段和堆栈段来说,一般是存储单元的定义、分配等伪操作。,4.4,程序的段结构,4.4.1,段定义伪指令,4.4.2,段寻址伪指令,定义段与段寄存器的关系,这可用,ASSUME,这个段寻址伪指令来实现,其格式如下:,ASSUME,段寄存器名:段名,,段寄存器:段名,,其中段,寄存器名为,CS,、,DS,、,ES,、,SS,中的一个;段名则必须是由,SEGMENT,定义过的段名;段寄存器名和段名之间必须有冒号,“,:,”,。,ASSUME,伪操作的作用,指示汇编程序指令中用到的标号、过程及变量所在的段。在代码段中,可以随时用,ASSUME,伪指令修改,“,段寄存器名:段名,”,的联系。,4.4,程序的段结构(续),2,SS,的装入,装入的办法有两个:,(,1,)在段定义伪指令的组合类型中选择,“,STACK”,参数,且在段寻址伪指令(,ASSUME,),中,把堆栈用的这一个段指派给段寄存器,SS,。,(,2,),可用类似,DS,,,ES,的装入办法。,4.4.3,段寄存器的装入,4.4,程序的段结构(续),1,DS,和,ES,的装入,在程序中,引用段名就是以立即数形式获取该段的段基址,所以一个段的段基址要经过通用寄存器传送给,DS,,,ES,。,用,DS,、,ES,的装入的办法,那么为装入,CS,、,IP,的新值需要执行几条指令。,对,CS,、,IP,的装入通常是:按照,END,结束伪指令指定的地址装入,CS,、,IP,。,任何一个源程序都是以,END,伪指令来结束。,格式:,END,起始地址,起始地址可以是一个标号或表达式;,END,伪指令的作用是,指示源程序到此结束和指定程序运行时的起始地址。,4.4.3,段寄存器的装入(续),3,CS,的装入,1.,等值语句,格式:符号,EQU,表达式,其中,EQU,是等值伪指令,把表达式的值或符号赋给,EQU,左边的符号,表达式可以是:,常量表达式,,地址表达式,,变量、标号或指令助记符,,4.5,其它常用伪指令,4.5.1,符号定义语句,等值语句仅在汇编源程序时,,作为替代符号用,不产生任何的目标代码,也不占有存储单元。,在同一源程序中,,同一符号在,EQU,语句未解除之前不能用,EQU,伪指令重新定义。,已经用,EQU,定义的符号,,若以后不再用了就可以用,PURGE,语句来解除。,PURGE,语句的格式如下:,PURGE,符号,1,,符号,2,,,,符号,n,注意事项:,4.5.1,符号定义语句(续),2,、,等号语句,格式:符号,=,表达式,此语句的功能与,EQU,等值语句类似,其最大的特点是能对符号进行重定义。,4.5,其它常用伪指令(续),4.5.2,程序开始和结束伪指令,1.,开始伪指令,NAME,的格式:,NAME module_name,汇编程序将以给出的,module_name,作为模块的名字。如果程序中没有,NAME,伪指令,则可使用,TITLE,伪指令,其格式:,TITLE text,2.,程序结束伪指令,表示源程序结束的伪指令的格式:,END ,起始标号,4.5.2,程序开始和结束伪指令(续),4.5.3,定位伪指令(,ORG,),和当前位置计数器(,$,),符号,“,$”,代表当前位置计数器的现行值。,定位伪指令的,ORG,的格式:,ORG,表达式,它表示把表达式的值赋给当前位置计数器:,ORG,语句后的指令或数据以表达式给定的值作起始偏移量。,在程序设计中,通常把具有一定功能的程序段设计成一个子程序。过程定义伪指令格式如下:,过程名,PROC,(,NEAR/FAR,),RET,过程名,ENDP,4.5.4,过程定义伪指令,4.5,其它常用伪指令(续),过程名不能省,且过程的,开始,PROC,和结束,ENDP,应使用同一个过程名;它就是过程调用指令,CALL,的目标操作数。它类同于标号的的作用,同样具有三个属性。当没有定义它的距离属性,隐含为,NEAR,。,任何一个过程,一定含有返回指令,RET,,,它可以在过程中任何位置,不一定非要放在,最后。若一个过程有多个出口,它可能有多个返回指令。但一个过程执行的最后一条指令,必定是,RET,。,4.5.4,过程定义伪指令(续),4.6.1,上机步骤,程序设计人员还需要对已编写好的程序进行调试和测试,使它能正确运行。,4.6,汇编语言上机调试,2.,汇编,汇编就是用宏汇编程序,MASM.EXE,把汇编语言源程序翻译(汇编)成机器语言的目标程序。宏汇编程序主要有以下功能:,检查源程序中语法错误,给出错误信息;,展开宏指令;,生目标程序(,.OBJ,),,列表文件(,.LST,),和交叉引用文件(,.CRF,)。,4.6,汇编语言上机调试(续),1.,编辑,调用编辑程序,EDIT.EXE,,,WS.EXE,等,用键盘敲入源程序,退出编辑系统时,保存编辑完成的文件,且扩展名为,.ASM,。,接着屏幕上显示:,宏汇编程序询问汇编产生的目标程序文件(目标程序文件是一个纯二进制代码文件,不能直接在屏幕上显示观察)的文件名是否为方括号中的默认值(即目标程序与源程序同名)。若是,直接按一回车键,否则需自己输入另一文件名。在回答完这一询问后,宏汇编程序接着依次询问产生列表文件(列表文件,.LST,是一个很有用的文件,文件中包含了源程序中各语句及其对应的目标代码。给出了源程序中各语句所属段内的偏移量,并且把源程序中所用的标号、变量和符号,列出它们的名字、类型和值,便于查阅)和交叉引用文件(交叉引用文件中给出了源程序中定义的符号如标号、变量等以及程序中引用这些符号的情况,且是按字母顺序排列的。若要查看这个符号表,必须使用,CREF,软件,它根据,.CRF,文件建立一个扩展名为,.REF,的文件。然后再显示,.REF,文件的内容就可以看到这个符号表)的文件名,屏幕上显示:,4.6,汇编语言上机调试(续),这两个文件是否建立由操作人员确定,:若要建立其中一个或两个,操作人员便可输入所需建立的文件名,否则直接送入回车键。待完成上述人机对话后,宏汇编程序便对源程序进行扫描,检查源程序中各语句是否有语法错误,同时把各语句汇编成对应的机器目标代码。在汇编过程中,若发现源程序有语法错误,便随时给出出错信息。屏幕上显示:,4.6,汇编语言上机调试(续),如果,警告错误和严重错误总数,都等于零,那么这次源程序的汇编获得通过,可以进行连接。否则,返回编辑程序,修改源程序,然后再次进行汇编,直到源程序汇编正确无误。,如果汇编时,无须产生列表文件和交叉引用文件,则在启动宏汇编程序时可用分号结尾,比如:,C,:,MASM TEST,;,如果需要后面的列表文件和交叉引用文件,且它们的文件名与源文件名相同,这时启动宏汇编程序时,可用逗号指明,比如:,C,:,MASM TEST,,;,4.6,汇编语言上机调试(续),3.,连接,源程序经过汇编后产生的目标程序,必须经过连接程序,LINK.EXE,连接后才能运行。,连接程序把一个或多个独立的目标程序模块连接装配成一个可重定位的可执行文件(扩展名为,.EXE,)。,连接程序,LINK,除产生一个可执行文件外,还可产生一个内存映象文件(扩展名为,.MAP,)。,LINK,连接的一定是扩展名为,.OBJ,的目标程序。,在操作系统状态下,直接启动连接程序,LINK.EXE,。,例如,:,C,:,LINK TEST,接着屏幕上显示:,4.6,汇编语言上机调试(续),连接程序询问连接时产生的可执行文件名是否用方括号中的默认值(即可执行文件与目标程序文件同名)。若是,可直接按一回车键,否则需要重新输入一文件名。接着依次询问,屏幕上显示:,其中,MAP,文件(,MAP,文件列出各段的起点,终点及长度。)是否建立,由操作人员确定。若要,则输入一文件名,否则直接送一回车键。后一个是询问在连接时是否要用库文件。对于来自宏汇编语言程序的目标程序文件,通常是直接送一回车键。,与启动宏汇编程序一样,可以在启动连接程序时,用分号结束后续询问。如,:,C,:,LINK TEST,;,若要产生,MAP,文件,且使用目标程序文件名,可用一逗号表示。如,:,C,:,LINK TEST,,;,4.6,汇编语言上机调试(续),若需要连接多模块的目标程序时,可用,“,+”,把它们连接起来。例如连接三个目标程序文件,P1.OBJ,、,P2.OBJ,、,P3.OBJ,,,其操作如下:,C,:,LINK P1+P2+P3,;,这样产生的一个可执行文件是约定取用第一个目标程序文件名,当然操作人员也可重新用另外的文件名。,4.6,汇编语言上机调试(续),4.,调试运行,在建立好可执行文件后,就可以直接从,DOS,执行程序,如下所示:,C,:,TEST.EXE,C,:,程序运行结束后返回,DOS,。,如果用户程序已直接把结果在终端上显示出来,那么程序已经运行结束,结果也已经得到了。,1.DEBUG,程序的调用,在,DOS,的提示符下,可键入命令:,C:DEBUG D:PATHFILENAME.EXTPARM1PARM2,其中,文件名是被调试文件的名字。如用户键入文件,则,DEBUG,将指定的文件装入存储器中,用户可对其进行调试。如果未键入文件名,则用户可以用当前存储器的内容工作,或者用,DEBUG,命令,N,和,L,把需要的文件装入存储器后再进行调试。命令中的,D,指定指定驱动器,PATH,为路径,,PARM1,和,PARM2,则为运行被调试文件时所需要的命令参数。,4.6.2 DEBUG,主要命令,DEBUG,是为汇编语言设计的一种高度工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段。,4.6,汇编语言上机调试(续),2.DEBUG,的主要命令,(,1,)显示存储单元的命令,D(DUMP),,,格式为:,_Daddress,或,_Drange,例如,,D,命令的使用情况,如下,:,4.6,汇编语言上机调试(续),(,2,)修改存储单元内容的命令有两种,。,输入命令,E(ENTER),,,有两种格式如下:,第一种格式可以用给定的内容表来替代指定范围的存储单元内容。命令格式为:,-E address list,例如,,-E DS:100 F3XYZ8D,第二种格式则是采用逐个,单元相继修改的方法。命令格式为:,-E address,4.6,汇编语言上机调试(续),(,3,)检查和修改寄存器内容的命令,R(register),,,它有,三种格式,如下:,显示,CPU,内所有寄存器内容和标志位状态,其格式为:,-R,显示,和修改某个寄存器,内容,其格式为:,-R register name,显示和修改标志位状态,命令格式为:,-RF,(,4,)运行命令,G,,,其格式为:,-G=address1address2address3,其中,地址,1,指定了运行的起始地址,如不指定则从当前的,CS,:,IP,开始运行。后面的地址均为断点地址,当指令执行到断点时,就停止执行并显示当前所有寄存器及标志,位的内容,和下一条将要执行的指令。,4.6,汇编语言上机调试(续),(,5,)跟踪命令,T(Trace),,,有两种格式:,逐条指令跟踪,-T=address,从指定地址起执行一条指令后停下来,显示所有寄存器内容及标志位的值。如未指定地址则从当前的,CS,:,IP,开始执行。,多条指令跟踪,-T=addressvalue,从,指定地址起执行,n,条指令后停下来,,n,由,value,指定。,(,6,)汇编命令,A(Assemble,),,,其格式为:,-Aaddress,该命令允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中。必须注意:,DEBUG,把键入的数字均看成十六进制数,所以如要键入十进制数,则其后应加以说明,如,120D,。,4.6,汇编语言上机调试(续),(,7,)反汇编命令,U(Unassemble,),有,两种格式,。,从指定地址开始,反汇编,32,个字节,其格式为:,-Uaddress,如果地址被省略,则从上一个,U,命令的最后一条指令的下一个单元开始,显示,32,个字节。,对指定范围内的,存储单元进行反汇编,格式为:,-Urange,(,8,),命名命令,N(Name),,,其格式为:,-N,filespecs,filespecs,命令把两个,文件标识符格式化在,CS,:,5CH,和,CS,:,6CH,的两个文件控制块中,以便在其后用,L,或,W,命令把文件装入存盘。,filespecs,的格式,可以是:,d:path filename.ext,4.6,汇编语言上机调试(续),(,9,)装入命令,(Load),,,有两种功能。,把磁盘上指定扇区范围的内容装入到存储器指定地址开始的区域中。其格式为:,-Laddressdrive sector sector,装入指定文件,其格式为:,-Laddress,此命令装入已在,CS,:,5CH,中格式化了文件控制块所指定的文件。如未指定,地址,则装入,CS,:,0100,开始的存储区中。,(,10,)写命令,W(Write),,,有两种功能。,把数据写入磁盘的指定扇区,。其格式为:,-W address drive sector sector,把数据写入指定的文件中。其格式为:,-Waddress,4.6,汇编语言上机调试(续),(,11,)退出,DEBUG,命令,Q(Quit),,,其格式为:,-Q,它退出,DEBUG,,,返回,DOS,。,本命令并无存盘功能,如需存盘应先使用,W,命令。,4.6,汇编语言上机调试(续),小 结,4.1,汇编语言语句种类及其格式,4.2,汇编语言数据,4.3,表达式与运算符,4.4,程序的段结构,4.5,其他常用伪指令,4.6,汇编语言上机调试,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!