汇编语言课程设计-计算器.doc

上传人:xin****828 文档编号:6707223 上传时间:2020-03-02 格式:DOC 页数:30 大小:346KB
返回 下载 相关 举报
汇编语言课程设计-计算器.doc_第1页
第1页 / 共30页
汇编语言课程设计-计算器.doc_第2页
第2页 / 共30页
汇编语言课程设计-计算器.doc_第3页
第3页 / 共30页
点击查看更多>>
资源描述
*实践教学* 兰州理工大学技术工程学院2015年春季学期 汇编语言实训 课程设计题 目:_ 计算器 专业班级:_2013级软件工程(1)班_姓 名:_郭益婷_ _学 号: 13740104 指导教师: 刘树群 成 绩:_ _2015计算器任务书题目: 计算器 学生姓名学号:杜政毅13740102,惠攀龙13740108, 郭益婷13740104 班级: 13软件工程1班 题目类型:软件工程(R) 指导教师: 刘树群 1、设计目的用汇编语言编程设计一个简单的计算器,实现四则运算数的交互式输入,并显示运算结果。通过设计,掌握键盘和鼠标控制、显示输出和基本算术运算指令的应用,进一步提高综合运用知识的能力。2、设计内容(包括原始数据、技术参数、条件、设计要求等):使用按键式操作,对任意给定的正确四则运算序列,能按照意图分部计算出其计算的有效结果数值并输出。3、设计要求题目的选择是根据汇编语言的特点主要针对系统内部的一些中断调用、系统功能调用、系统数据处理、文件数据处理、以及相关的API而设计的,是对所学课程知识较为系统的应用。由于汇编语言编程相对其他语言编程比较复杂,因此,在设计上应把重点放在程序的功能实现上,不要太在意程序的结构和显示界面的设计。不要局限于题目所规定的要求,可以灵活裁减,设计出功能更完善程序。另外,也可以自己设计题目,同时,提出详细的功能描述,经指导老师审查同意后也可作为课程设计的题目。4、提交的成果1. 设计说明书一份,内容包括:包含任务书一份1) 中文摘要100字,关键词3-5个。2) 实训题目、内容、要求。3)总体设计(包含几大功能模块)。4)详细设计(各功能模块的具体实现算法流程图)5)数据结构设计描述,各模块(函数)的功能介绍,参数说明等。6)调试分析(包含各模块的测试用例,及测试结果。)7)总结(实训完成了哪些功能,还有哪些地方需要改进,及通过实训有何收获,调试程序的体会等)8) 参考文献、致谢等。5、主要参考资料1李敬兆等编.汇编语言程序设计.合肥:中国科学技术大学出版社,2008.92李敬兆等编.汇编语言程序设计实验教程及习题解答.合肥:中国科学技术大学出版社,2008.93王爽等编.汇编语言.北京:清华大学出版社,2003.54曹加恒等编.新一代汇编语言课程设计.北京:高等教育出版社,2003.65杨路明等编.汇编语言程序设计.长沙:中南大学出版社,2005.86詹仕华等编.汇编语言程序设计.北京:中国电力出版社,2008.27詹仕华等编.汇编语言程序设计习题解答及课程设计、设计辅导.北京:中国电力出版社,2008.28宋彩莉等编.汇编语言程序设计学习指导.西安:西安交通大学出版社,2008.26、各阶段时间安排(共1周)日期内容地点星期一教师讲解设计要求,准备参考资料实验室星期二分析系统,方案设计实验室星期三方案设计,编程实验室星期四调试程序,书写实训说明书实验室星期五完成实训说明书,答辩实验室 摘 要汇编语言是一种功能很强的程序设计语言,也是利用计算器所有特性并能直接控制硬件的语言。汇编语言,作为一门语言,对应于高级语言的编译器,需要一个”汇编器”来把汇编语言原文件会变成机器可执行的代码。高级汇编语言器如:MASM,TASM等等为我们后来写汇编程序提供了很多类似高级语言的特征,比如结构化,抽象等。在这样的环境中编写的汇编程序,有很大一部分是面向汇编器的伪指令,已经类同于高级语言。现在的汇编环境已经如此高级,即使全部用汇编语言来编写windows的应用程序也是可行的,但这不是汇编语言的长处,回避啊预言的长处在于编写高效且需要对机器硬件精确控制的程序。本次设计简单计算器支持简单的四则运算。关键词:汇编语言,计算器,高效,硬件目 录汇编语言实训任务书2摘 要4前 言61.1系统分析71.2功能分析72 系统总体设计92.1系统总体分析92.2主模块框图及说明93 详细设计113.1主模块及子模块说明113.2 各模块详细设计114系统测试224.1 测试界面图224.2算法的分析265 软件使用说明书275.1计算器功能说明275.2操作键功能说明27设计总结28参考文献29致谢30前 言运用汇编语言,制作一个计算的程序,实现简单计算器的一般功能,使用Win32编程设计一个功能及界面风格类似于Windows计算器的计算器程序,只要求实现标准型计算器。主要实现的功能:包含基本的四则运算、倒数运算、平方根运算。支持存储区的存储、清除、调出、累加等功能。程序主界面应有操作提示、输入和输出。输入数值及所需符号后可以进行正确的运算,程序计算其结果值并输出。表达式中运算分量为有正负号整数,运算符为+、-、*、/,最后结果以十进制数表示。且程序主界面需为一个由仿windws界面。 汇编语言直接同计算机的底层软件甚至硬件进行交互,它具有如下一些优点:能够直接访问与硬件相关的存储器或I/O端口;能够不受编译器的限制,对生成的二进制代码进行完全的控制;能够对关键代码进行更准确的控制;能够根据特定的应用对代码做最佳的优化,提高运行速度;能够最大限度地发挥硬件的功能。 1总体分析1.1系统分析该课程的设计任务是做一个简易计算器,可以实现加减乘除四则运算。我们要解决的问题有:以什么方式输入数字、判断是进行什么运算、运算过程中的进位和借位问题、以及如何实现清屏等问题。 本次设计的简单计算器,主要是为了解决数学中的加,减,乘,除,开方的运算问题。由于在设计之中考虑到了可能会多次计算数据,为此在本次课程设计中我们设计的计算器可一次运行,多次使用。本程序使用了函数和宏混用的方式实现了代码的较好的可读性,使程序看起来结构严谨。1.2功能分析 图1-1计算器l 显示区:文本框,用于显示输入的操作数及结果。l 数字键入区:在显示区中显示数字、小数点、正负号等。l 运算区:包含双目运算符(+ - * /)、单目运算符(sqrt()、1/x)、等于号等。l 记忆区:清除记忆(MC)、显示记忆(MR)、记忆当前(MS)、记忆加(M+)以及记忆区存储情况的标签。l 清除键区:退格(Backspace)、清除当前数据(CE)、初始化操作(C)。2 系统总体设计2.1系统总体分析 本次设计的计算器,主要是为了解决数学中的加、减、乘、除、开方运算的问题。由于在设计过程中考虑到了可能会多次计算数据,为此本次课程设计我设计的这个简单计算器可以一次运行,多次使用。根据题目,可以把程序的工作过程主要划分为界面设计、运算表达式输入、计算、结果输出四部分。因此在编写程序时可以按此把程序大致划分为四个模块。第一步,界面设计,使用汇编语言设计一个界面风格及功能类似于Windows计算器程序,实现标准型、可靠性、简单性、易学性、实用性的界面。第二步,运算表达式的输入,对于输入,键盘、鼠标都可进行输入操作。第三步,计算,通过汇编语言使计算器实现四则运算、倒数运算、平方根运算等计算。第四步,对于输出,必须能在显示区显示正确的结果。2.2主模块框图及说明主程序及窗口主程序结构如图2-1,按照Windows程序标准框架,主程序用于获得并保存本程序的句柄,并调用窗口主程序WinMain创建窗口并进入消息循环。WinMain程序将获取的消息分发给消息处理程序Calculate进行处理。 图2-1主模块框图3 详细设计 3.1主模块及子模块说明 主模块:主要完成程序的主体框架结构,提供人-程序的交互。 子模块:主要完成对数据的加工处理。 3.2 各模块详细设计 程序源文件包含两个部分:头文件(Calculator.inc):头文件中引入程序所需要的库以及常量和函数申明源文件(Calculator.asm):汇编程序源代码(1) 在Calculator.inc头文件中统一定义程序所需的头文件及引入库(代码如下)。;- 头文件声明- include masm32includewindows.inc include user32.inc include kernel32.inc include comctl32.inc;include masm32includecomdlg32.inc;include masm32includegdi32.inc include masm32.inc include shell32.inc;- 引入库声明- includelib user32.lib includelib kernel32.lib includelib comctl32.lib includelib masm32.lib includelib shell32.lib;includelib masm32libgdi32.lib;includelib masm32libcomdlg32.lib(2)WinMain主程序用于创建窗口并获取和分发消息(代码如下)。WinMain proc hInst:DWORD, hPrevInst:DWORD, CmdLine:DWORD, CmdShow:DWORD LOCAL wc:WNDCLASSEX ;窗口类 LOCAL msg:MSG ;消息 LOCAL hWnd:HWND ;对话框句柄 Movwc.cbSize,sizeof WNDCLASSEX ;WNDCLASSEX的大小 mov wc.style,CS_BYTEALIGNWINDOW or CS_BYTEALIGNWINDOW ;窗口风格or CS_HREDRAW or CS_VREDRAW mov wc.lpfnWndProc,OFFSET Calculate ;窗口消息处理函数地址 mov wc.cbClsExtra,0 ;在窗口类结构后的附加字节数,共享内存 mov wc.cbWndExtra,DLGWINDOWEXTRA ;在窗口实例后的附加字节数(!注意点) mov eax,hInst mov wc.hInstance,eax ;窗口所属程序句柄 mov wc.hbrBackground,COLOR_BTNFACE+1 ;背景画刷句柄 mov wc.lpszMenuName,NULL ;菜单名称指针 mov wc.lpszClassName,OFFSET DialogName ;类名称指针 invoke LoadIcon,hInst,addr IconName ;加载Icon mov wc.hIcon,eax ;图标句柄 invoke LoadCursor,NULL,IDC_ARROW mov wc.hCursor,eax ;光标句柄 mov wc.hIconSm,0 ;窗口小图标句柄 invoke RegisterClassEx,addr wc ;注册窗口类 invoke CreateDialogParam,hInst,addr DialogName,0,addr Calculate,0 ;调用对话框窗口 mov hWnd,eax ;保存对话框句柄 invoke ShowWindow,hWnd,CmdShow;最后一个参数可设置为SW_SHOWNORMAL invoke UpdateWindow,hWnd ;更新窗口StartLoop: ;消息循环 invoke GetMessage,addr msg,0,0,0 ;获取消息 cmp eax,0 je ExitLoop invoke TranslateMessage,addr msg ;转换键盘消息 invoke DispatchMessage,addr msg ;分发消息 jmp StartLoopExitLoop: ;结束消息循环 mov eax,msg.wParam retWinMain endp(3) 消息处理程序用于处理用户消息(代码如下)。Calculate proc hWin:DWORD,uMsg:UINT,aParam:DWORD,bParam:DWORDLOCAL pt:POINT.if uMsg = WM_INITDIALOGinvoke GetDlgItem,hWin,ID_RESULT ;获取输出文本框句柄mov hEdit,eax ;保存文本框句柄invoke GetDlgItem,hWin,ID_M ;获取记忆标签句柄mov hTextM,eax ;保存记忆标签句柄invoke LoadIcon,hInstance,addr IconName ;载入Iconmov hIcon,eax ;保存Icon句柄nvoke SendMessage,hWin,WM_SETICON,ICON_SMALL ,eaxinvoke LoadMenu,hInstance,addr MenuName ;加载菜单mov hMenu,eax ;保存菜单句柄invoke SetMenu,hWin,eaxinvokeCheckMenuRadioItem,hMenu,ID_STANDARD,ID_SCIENCE,ID_STANDARD,MF_BYCOMMAND ;选中标准型invoke SendMessage,hEdit,WM_SETTEXT,0,addr Output ;显示0.elseif uMsg = WM_SIZE.if aParam=SIZE_MINIMIZED ;最小化mov NotifyIcon.cbSize,sizeof NOTIFYICONDATApush hWinpop NotifyIcon.hwndmov NotifyIcon.uID,ID_NOTIFYICONmov NotifyIcon.uFlags,NIF_ICON+NIF_MESSAGE+NIF_TIPmov NotifyIcon.uCallbackMessage,WM_SHELLNOTIFYmov eax,hIconmov NotifyIcon.hIcon,eaxinvoke lstrcpy,addr NotifyIcon.szTip,addr ProgramNameinvoke ShowWindow,hWin,SW_HIDE ;隐藏窗口;invoke Shell_NotifyIcon,NIM_ADD,addr NotifyIcon.endif.elseif uMsg = WM_SHELLNOTIFY.if aParam=ID_NOTIFYICON.if (bParam=WM_LBUTTONDOWN) ;单击通知栏图标invoke ShowWindow,hWin,SW_SHOW ;显示窗口invoke Shell_NotifyIcon,NIM_DELETE,addr NotifyIcon ;删除通知栏图标.elseif (bParam=WM_RBUTTONDOWN) ;右键通知栏图标invoke GetCursorPos,addr ptinvoke GetSubMenu,hMenu,3invokeTrackPopupMenu,eax,TPM_LEFTALIGN,pt.x,pt.y,NULL,hWin,NULL.endif.endif.elseif uMsg = WM_CHAR ;热键操作mov eax,aParamsub eax,0add eax,ID_NUM0.if (eax=ID_NUM0) & (eax= ID_NUM0) & (eax = ID_MUL) & (eax = ID_ADD) ;双目运算符按钮invoke BtnOperator.elseif eax = ID_EQU ;等于按钮invoke BtnEqual.elseif eax = ID_PER ;百分号按钮mov Operator,*invoke GetResultinvoke UnpackNuminvoke StrToFloat,addr Output, addr Numberfinitfld Numberfld Num100fdivfstp Numberinvoke FloatToStr2,Number,addr Outputinvoke ShowNum.elseif eax = ID_DAO ;倒数按钮invoke UnpackNuminvoke StrToFloat,addr Output, addr Numberfinitfld Numberfldzfcomi ST(0),ST(1)jnz NotZeromov IsError,1invoke SendMessage,hEdit,WM_SETTEXT,0,addr Div0retNotZero: fstp Numberfstp Numberfld1fld Numberfdiv.if HasEqueal=1fst Result.endiffstp Numberinvoke FloatToStr2,Number,addr Outputinvoke ShowNum.elseif eax = ID_SQRT ;开方按钮invoke UnpackNuminvoke StrToFloat,addr Output, addr Numberfinitfld Numberfldzfcomi ST(0),ST(1)jb Positivemov IsError,1invoke SendMessage,hEdit,WM_SETTEXT,0,addr FunctionErrorretPositive: fstp Numberfsqrt.if HasEqueal=1fst Result.endiffstp Numberinvoke FloatToStr2,Number,addr Outputinvoke ShowNum.elseif eax = ID_MC ;MC按钮fldzfstp Rememberinvoke SendMessage,hTextM,WM_SETTEXT,0,NULL.elseif eax = ID_MR ;MR按钮invoke FloatToStr2,Remember,addr Outputinvoke ShowNummov IsStart,0.elseif eax = ID_MS ;MS按钮invoke UnpackNuminvoke StrToFloat,addr Output, addr Rememberinvoke ShowTextM.elseif eax = ID_MPLUS ;M+按钮finitfld Rememberinvoke UnpackNuminvoke StrToFloat,addr Output, addr Rememberfld Rememberfaddfstp Rememberinvoke ShowTextM.elseif eax = ID_COPY ;复制invoke GlobalAlloc,GMEM_MOVEABLE,35 ;配置一个内存块mov hGlobal ,eaxinvoke GlobalLock,hGlobal ;锁定内存块mov pGlobal ,eaxlea esi,Outputmov edi,pGlobalmov ecx,35rep movsb ;复制字符串invoke GlobalUnlock,hGlobal ;解锁内存块invoke OpenClipboard, NULL ;打开剪切板invoke EmptyClipboard ;清空剪切板invoke SetClipboardData,CF_TEXT,hGlobal ;把内存句柄交给剪贴簿invoke CloseClipboard ;关闭剪切板.elseif eax = ID_PASTE ;粘贴invoke IsClipboardFormatAvailable,CF_TEXT ;确定剪贴簿是否含有CF_TEXT格式的数据invoke OpenClipboard,NULL ;打开剪切板invoke GetClipboardData,CF_TEXT ;得到代表文字的内存块代号mov hGlobal,eaxinvoke GlobalLock ,hGlobal ;解锁内存块mov pGlobal,eaxmov ecx,35lea edi,Outputmov esi,eaxrep movsb ;复制字符串invoke GlobalUnlock ,hGlobal ;解锁内存块invoke CloseClipboard ;关闭剪切板invoke ShowNum.elseif eax = ID_PACKET ;数字分组.if IsPacket=0invoke CheckMenuItem,hMenu,ID_PACKET,MF_CHECKED ;选中数字分组.elseinvoke CheckMenuItem,hMenu,ID_PACKET,MF_UNCHECKED ;选中数字分组.endifxor IsPacket,1invoke ShowNum.elseif eax = ID_HELP ;帮助invoke WinHelp,hWin,addr HelpFile,HELP_CONTENTS,1.elseif eax = ID_ABOUT ;关于;invoke ShellAbout,hWin,addr ProgramName,addr Author,hIcon.elseif eax = ID_EXIT ;关闭invoke Calculate,hWin,WM_CLOSE,aParam,bParam.endif.elseif uMsg = WM_CLOSEinvoke Shell_NotifyIcon,NIM_DELETE,addr NotifyIconinvoke EndDialog,hWin,NULLinvoke PostQuitMessage,0 ;退出消息循环.elseinvoke DefWindowProc,hWin,uMsg,aParam,bParamret.endifinvoke SetFocus,hWinxor eax,eax ;关于WM_KEYDOWN原因retCalculate endp4系统测试 4.1 测试界面图1.窗口检测,看其热键按钮等功能是否能正常使用。其测试如图4-1所示:图4-1 窗口测试2.四则运算测试。进行数据输入,对结果进行分析。(1)加法运算,计算2211.045+1000,如图4-2所示: 图4-2 加法运算(2)减算运算,计算170-50,如图4-3所示: 图4-3 减法运算(3)乘法运算,计算100*999,如图4-4所示: 图4-4 乘法运算(4)除法运算,计算888/222,如图4-5所示: 图4-5 除法运算(5)开方运算,计算625开方,如图4-6所示: 图4-6 开放运算(6)倒数运算,计算1000的倒数,如图4-7所示: 图4-7 倒数运算4.2算法的分析本程序使用了宏和函数的调用,这样做使整个程序看起来严谨,舒展。本程序文件分别定义了对话框,菜单和Icon图标等资源,为了在程序中方便对消息的处理,有意连续定义了ID_NUM0ID_NUM9。在Calculator.inc头文件中统一定义程序所需的头文件及引入库。在Calculator.inc中定义程序所需常量。在Calculator.inc声明了自定义函数的原型。 PackNum函数将输出数据的字符串Output进行数字分组。它首先获取小数点以前的数字位数并保存在寄存器eax中,然后将(eax-1)/3即为需要添加的字符,数目,并保存在eax中,对于小数点以后的字符都向后移动eax位,对于小数点以前的字符,向后移动eax位并用ecx计数,当ecx计数到3是添加字符,并将ecx设为1且eax减一,重复上述步骤直到eax等于0。UnpackNum函数将进行数字分组输出的字符串Output解分组。它首先获取Output地址存在esi中,然后ecx赋0,并将Output中字符向前移动ecx个单位,遇见,字符则将ecx加1,直到字符串结束。ShowNum函数将Output字符串处理后在文本框中显示出来。它首先调用UnpackNum函数对Output解分组,然后获取Output地址存在esi、edi中,通过循环将Output尾地址存在esi中,将字符.地址存在edi中,如果edi等于esi则表明Output中无字符.,则在结尾添加字符.。如果IsPacked等于1则对Output调用UnpackNum函数对其分组,最后向文本框发送WM_SETTEXT消息显示数据。BtnNum函数响应数字按钮消息,向文本框中添加字符。BtnOperator函数响应运算符按钮消息,进行运算并输出结果。首先判断是否为等号,如果不是则调用GetResult函数先进行一次运算,然后将当前操作符存入Operator变量中。BtnEqual函数响应等号按钮消息,进行运算并输出结果。首先判断是否为起始状态,如果不是则调用GetResult函数,并将HasEqual变量置1。BtnEqual函数响应等号按钮消息,进行运算并输出结果。首先判断是否为起始状态,如果不是则调用GetResult函数,并将HasEqual变量置1。ShowTextM函数判断Remember中的值是否为0,如果不是是则在标签中显示M,否则清空标签中内容。 5 软件使用说明书5.1计算器功能说明显示区:文本框,用于显示输入的操作数及结果数字键入区:在显示区中显示数字、小数点、正负号等; 运算区:包含双目运算符(+ - * /)、单目运算符(sqrt()、1/x)、等于号等记忆区:清除记忆(MC)、显示记忆(MR)、记忆当前(MS)、记忆加(M+)以及记忆区存储情况的标签清除键区:退格(Backspace)、清除当前数据(CE)、初始化操作(C)5.2操作键功能说明数字:添加文本框字符串添加数字字符,调用函数BtnNum完成该功能;小数点:为当前输入数字添加小数点,将判断是否小数点的变量HasPoint赋值为1正负号:将当前数字取相反数并在对话框显示,拟通过浮点运算求相反数并调用ShowNum函数显示数字双目运算符:计算结果,调用函数BtnOperator实现运算功能等号:计算结果,调用函数BtnEqual实现运算功能 单目运算符:立即对当前数字进行运算并输出结果MS:将当前数据保存在变量Remember中,并在记忆区存储情况的标签中显示相应的信息M+:将当前数据加到变量Remember上,并在记忆区存储情况的标签中显示相应的信息MR:将变量Remember数据显示到文本框中;MC:将变量Remember归零,并在记忆区存储情况的标签中显示相应的信息C:初始化计算器,调用函数Init实现该功能,并在文本框显示0.CE:将当前数字清零Backspace:删除当前数据的末位数字设计总结本程序使用Win32编程设计一个功能及界面风格类似于Windows计算器的计算器程序,只要求实现标准型计算器。主要实现的功能:包含基本的四则运算、倒数运算、平方根运算。支持存储区的存储、清除、调出、累加等功能。经测试表明程序运行结果与预期结果一致,较好的实现了课程设计所预设的各项功能。通过在程序编写过程中,考虑到了一定的错误情况,并正对可能的错误进行了一定的处理,保证了程序的健壮性。通过课程设计的过程,综合运用到了汇编语言寄存器、操作数、指令与伪指令、分支、循环程序设计、子程序和中断调用等方面的知识,通过模块的合理划分降低了程序编写的难度,在程序写作过程中及时添加注释以方便程序错误的查找和对程序的修改。使我对汇编语言的理解更加深入,对于程序设计的过程也有了一定的了解,同时培养了良好的编程风格,为今后对于其他计算机语言的学习打下了坚实的基础。参考文献1李敬兆等编.汇编语言程序设计.合肥:中国科学技术大学出版社,2008.92李敬兆等编.汇编语言程序设计实验教程及习题解答.合肥:中国科学技术大学出版社,2008.93王爽等编.汇编语言.北京:清华大学出版社,2003.54曹加恒等编.新一代汇编语言课程设计.北京:高等教育出版社,2003.65杨路明等编.汇编语言程序设计.长沙:中南大学出版社,2005.86詹仕华等编.汇编语言程序设计.北京:中国电力出版社,2008.27詹仕华等编.汇编语言程序设计习题解答及课程设计、设计辅导.北京:中国电力出版社,2008.28宋彩莉等编.汇编语言程序设计学习指导.西安:西安交通大学出版社,2008.2致谢 本次课程设计的成功完成,我首先感谢我的指导老师刘树群,他自始至终都给予了我莫大的帮助,正是在刘老师的悉心指导下我才能顺利完成本次课程设计中的每一个环节。在这次课程设计中,无论从课题选择,方案论证上,还是到具体的设计和调试,每一项安排他都提出了至关重要的建议,使我少走了许多弯路,节省了大量的时间。可以说,我的课程设计的顺利完成凝聚着老师的大量心血,在此向刘树群老师表示真挚的感谢,谢谢您。 当然,同时也要感谢我们同组的两位同学以及一些互联网上的朋友们,感谢他们毫不吝啬的将自己所掌握的知识拿出来资源共享,才能使我完整的完成本次设计,谢谢你们。
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 中学资料


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

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


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