




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章汇编语言基础1.1英特尔80x86处理器1.2个人计算机系统1.3汇编语言程序格式第1章汇编语言基础1.1英特尔80x86处理器第1章汇编语言基础了解软硬件开发环境熟悉通用寄存器和存储器组织掌握汇编语言的 语句格式、程序框架和开发方法第1章汇编语言基础了解软硬件开发环境Intel80861.1英特尔80x86处理器8038680486奔腾奔腾II奔腾4802868086奔腾III酷睿多核系列4004IA-32处理器16位80x86处理器奔腾多核系列Intel64处理器3Intel80861.1英特尔80x86处理器803861.1.116位80x86处理器16位结构处理器8086/8088指令系统提供16位基本指令集80186/80188增加若干条实用指令8086的工作方式是实方式(RealMode)80286增加保护方式(ProtectedMode)80286引入了系统指令为操作系统等核心程序提供处理器控制功能指令系统、指令集(InstructionSet)41.1.116位80x86处理器16位结构处理器指令系统、1.1.2IA-32处理器80386引入英特尔32位指令集结构ISA兼容原16位80286指令系统全面升级为32位提供虚拟8086工作方式(Virtual8086Mode)80486集成浮点处理单元支持浮点指令Pentium系列陆续增加若干整数指令、完善浮点指令增加一系列多媒体指令(SIMD指令)IA-32(IntelArchitecture-32)51.1.2IA-32处理器80386引入英特尔32位指令集1.1.3Intel64处理器引入64位英特尔指令集结构兼容32位指令系统新增64位工作方式继续丰富多媒体指令处理器集成多核(Multi-core)技术处理器进入多核时代Manycore61.1.3Intel64处理器引入64位英特尔指令集结构1.2个人计算机系统硬件(Hardware):物理设备软件(Software):程序和文档运算器
控制器寄存器组
主存储器总线输入输出接口电路外部设备软件微处理器微型计算机微型计算机系统71.2个人计算机系统硬件(Hardware):物理设备运算1.2.1硬件组成I/O接口主存储器系统总线CPU寄存器控制器运算器辅助存储器输入设备输出设备汇编语言程序员将硬件抽象为:寄存器、存储器地址和输入输出地址81.2.1硬件组成主存储器系统总线CPU寄存器控制器运算器1.2.2寄存器(Register)处理器内部的高速存储单元用于暂时存放程序执行过程中的代码和数据透明寄存器对应用人员不可见、不能编程直接控制可编程(Programmable)寄存器具有引用名称、供编程使用通用寄存器(General-PurposeRegister)具有多种用途数量较多、使用频度较高专用寄存器各自只用于特定目的91.2.2寄存器(Register)处理器内部的高速存储单IA-32常用寄存器8个32位通用寄存器6个16位段寄存器1个32位标志寄存器1个32位指令指针10IA-32常用寄存器8个32位通用寄存器101.通用寄存器处理器最常使用的整数通用寄存器可用于保存整数数据、地址等8个32位通用寄存器EAX,EBX,ECX,EDXESI,EDI,EBP,ESP8个16位通用寄存器AX,BX,CX,DXSI,DI,BP,SP8个8位通用寄存器AH,BH,CH,DHAL,BL,CL,DL31871615AHAL0AXEAX既是一个整体又可独立使用111.通用寄存器处理器最常使用的整数通用寄存器318716通用寄存器的名称EAXAccumulator累加器EBXBase基址寄存器ECXCounter计数器EDXData数据寄存器ESISourceIndex源变址寄存器EDIDestinationIndex目的变址寄存器EBPBasePointer基址指针ESPStackPointer堆栈指针12通用寄存器的名称EAXAccumulator累加器EBXBa2.标志寄存器标志(Flag)反映指令执行结果或控制指令执行形式用一个或多个二进制位表示一种标志用0和1的不同组合表达标志的不同状态8086支持16位标志寄存器FLAGSIA-32处理器形成32位EFLAGS标志寄存器状态标志:记录指令执行结果的辅助信息控制标志:方向标志DF,仅用于串操作指令系统标志:控制操作系统或核心管理程序的操作方式示意图132.标志寄存器标志(Flag)示意图13标志寄存器EFLAGS返回14标志寄存器EFLAGS返回14处理器最基本的标志:状态标志用来记录指令执行结果的辅助信息加减运算和逻辑运算指令主要设置它们其他有些指令的执行也会相应地设置它们处理器主要使用其中5个构成各种条件,分支指令判断这些条件实现程序分支8086的标志OF111512DF10IF9TF8SF7ZF605AF403PF211CF015处理器最基本的标志:状态标志用来记录指令执行结果的辅助信息83.指令指针寄存器EIP保存将要执行的指令在主存的存储器地址EIP是专用寄存器顺序执行时自动增量(加上该指令的字节数),指向下一条指令分支、调用等操作时执行控制转移指令修改,引起程序转移到指定的指令执行出现中断或异常时被处理器赋值而相应改变311615IP0EIP163.指令指针寄存器EIP保存将要执行的指令在主存的存储器地4.段寄存器段(Segment)是用于安排相关代码或数据的一个主存区域段寄存器表明某个段在主存中的位置6个16位段寄存器:CSDSSSESFSGS应用程序主要涉及3类段代码段(CodeSegment) 存放程序中指令代码数据段(DataSegment) 存放当前运行程序所用数据堆栈段(StackSegment) 指明程序使用的堆栈区域主存空间指令段数据段堆栈段程序174.段寄存器段(Segment)是用于安排相关代码或数据的1.2.3存储器组织主存储器容量很大,被划分成许多存储单元每个存储单元被编排一个号码即存储单元地址称为存储器地址(MemoryAddress)每个存储单元以字节为基本存储单位即字节编址(ByteAddressable)一个字节(Byte)等于8个二进制位(Bit)二进制位是计算机存储信息的最小单位16位(2个字节)构成一个字(Word)32位(4个字节)构成一个双字(DoubleWord)示意图181.2.3存储器组织主存储器容量很大,被划分成许多存储单元数据的位格式返回D7D6D5D4D3D2D1D0字节LSBMSBD15……D1D0字LSBMSBD31……D1D0双字LSBMSB31871615高字节低字节0字双字19数据的位格式返回D7D6D5D4D3D2D1D0字节LSBM1.存储模型物理存储器以字节为基本存储单位每个存储单元被分配一个唯一的地址这个地址就是物理地址物理地址空间从0开始顺序编排,直到处理器支持的最大存储单元8086处理器支持1MB存储器:00000H~FFFFFHIA-32处理器支持4GB存储器:00000000H~FFFFFFFFH操作系统利用存储管理单元进行存储管理,程序并不直接寻址物理存储器IA-32处理器提供3种存储模型,用于程序访问存储器示意图201.存储模型物理存储器以字节为基本存储单位示意图20存储器地址空间返回FFFFFFFFH00000000H00000001H00000002H00000003H00000004H双字字节字字节字节字字节21存储器地址空间返回FFFFFFFFH00000000H000IA-32处理器的存储模型(1)平展存储模型(FlatMemoryModel)存储器是一个连续的地址空间:线性地址空间IA-32处理器支持4GB容量线性地址空间(2)段式存储模型(SegmentedMemoryModel)存储器由一组独立的地址空间:段(Segment)每个段都可以达到4GB容量在处理器内部,所有的段都被映射到线性地址空间(3)实地址存储模型(Real-addressMemoryModel)8086处理器的存储模型段式存储模型的特例线性地址空间最大为1MB容量,段最大为64KB22IA-32处理器的存储模型(1)平展存储模型(FlatMe2.工作方式(1)保护方式(ProtectedMode)IA-32处理器固有的工作状态具有强大的段页式存储管理和特权与保护能力使用全部32条地址总线,可寻址4GB物理存储器使用平展或段式存储模型利用虚拟8086方式支持实地址8086软件(2)实地址方式(Real-addressMode)可以进行32位处理的快速8086只能寻址1MB物理存储器空间,每个段不超过64KB可以使用32位寄存器、32位操作数和32位寻址方式只能支持实地址存储模型(3)系统管理方式(SystemManagementMode)实现供节能和系统安全管理232.工作方式(1)保护方式(ProtectedMode)3.逻辑地址(LogicalAddress)在处理器内部、程序员编程时采用的地址逻辑地址=段基地址∶偏移地址段基地址=在主存中的起始地址偏移地址=距离段基地址的位移量某个存储单元可以有多个逻辑地址,但只有一个唯一的物理地址逻辑地址线性地址物理地址编程使用处理器转换地址总线输出示意图243.逻辑地址(LogicalAddress)在处理器内部逻辑地址与物理地址返回108208308106206306107207307109209309110105104103102101210205204203202201310305304303302301081828061626071727091929100504030201201514131211302524232221逻辑地址=相对地址:205(2层05号房间)物理地址=绝对地址:15(第15号房间)25逻辑地址与物理地址返回1082083081062063061基本段的逻辑地址代码段(CodeSegment)段基地址:代码段寄存器CS指示偏移地址:指令指针寄存器EIP保存数据段(DataSegment)段基地址:数据段寄存器DS指示有时也用附加段寄存器ES,段寄存器FS和GS指示偏移地址:各种存储器寻址方式计算出来堆栈段(StackSegment)段基地址:堆栈段寄存器SS指示偏移地址:堆栈指针寄存器ESP保存主存空间指令段数据段堆栈段程序26基本段的逻辑地址代码段(CodeSegment)主存空间指4.段选择器16位段寄存器保存16位段选择器段选择器指向64位段描述符(Descriptor)段描述符包括段基地址平展存储模型:指向地址0位置段式存储模型:指向线性地址空间不同的段实地址存储模型:保存段基地址的高16位段选择器段基地址数据或指令段寄存器段描述符主存空间274.段选择器16位段寄存器保存16位段选择器段选择器段基地平展模型平展存储模型是分段存储模型的一种特例所有的段都有相同的段基地址(基地址为0),都重合于同一个线性地址空间IA-32微处理器上运行的应用程序,广泛采用平展存储模型。28平展模型平展存储模型是分段存储模型的一种特例28分页机制不采用分页管理机制,线性地址就是对应的物理地址空间采用了分页管理机制,则要将线性空间地址映射到物理地址当微处理器既采用段式存储管理,又采用页式存储管理就是段页式存储管理方式29分页机制不采用分页管理机制,线性地址就是对应的物理地址空间分页线性地址空间页物理地址物理地址空间线性地址页目录页表偏移量入口页目录页表入口段1段2
段3页+30分页线性地址空间页物理地址物理地址空间线性地址页目录页表存储器模型与工作模式
保护模式工作模式实模式虚拟8086模式平展模型存储器模型实地址模型分段模型段页模型31存储器模型与工作模式
保护模式工作模式实模式虚拟8086模5.Win32的虚拟地址分配应用程序起始地址325.Win32的虚拟地址分配应用程序起始地址321.2.4程序设计语言机器语言(MachineLanguage)底层的计算机语言,对应机器指令形成目标(代码)程序汇编语言(AssemblyLanguage)将机器指令用助记符号代替而形成的一种语言本质上是机器语言需要汇编程序“汇编”(翻译)高级语言(HighLevelLanguage)面向问题的程序设计语言需要“编译”或“解释”后执行指令是处理器的母语moveax,100addeax,256331.2.4程序设计语言机器语言(MachineLanguInstructions:LanguageoftheMachine
Tocommandacomputer'shardware,youmustspeakitslanguage.Thewordsofamachine'slanguagearecalledinstructions,anditsvocabularyiscalledaninstructionset.
为了控制计算机硬件,必须使用它的语言。机器语言的单词称为指令,它的词汇表称为指令集。“ComputerOrganization&Design --TheHardware/SoftwareInterface(2ndEdition)”byJohnL.HennessyandDavidA.PattersonMorganKaufmannPublishers,Inc.1998返回34Instructions:Languageofthe汇编语言和高级语言的比较汇编语言与处理器密切相关,可移植性较差高级语言与具体计算机无关,便于移植汇编语言功能有限、涉及硬件细节,编写繁琐困难高级语言功能强大,语法自然,容易掌握和应用汇编语言的优势:直接、有效地控制硬件,容易产生运行速度快、指令序列短小的高效率目标程序高级语言不易直接控制计算机的各种操作,编译程序产生的目标程序往往比较庞大混合编程、取长补短?学习汇编语言的意义35汇编语言和高级语言的比较汇编语言与处理器密切相关,可移植性较汇编语言的主要应用场合程序要具有较快的执行时间,或者只能占用较小的存储容量程序与计算机硬件密切相关,程序要直接、有效地控制硬件大型软件需要提高性能、优化处理的部分没有合适的高级语言、或只能采用汇编语言的时候分析具体系统尤其是该系统的低层软件、加密解密软件、分析和防治计算机病毒等等36汇编语言的主要应用场合程序要具有较快的执行时间,或者只能占用1.2.5软件系统Windows操作系统平台MASM6.15汇编程序硬件BIOS应用程序*.ASM,*.OBJ*.LST,*.EXE操作系统编辑程序,汇编程序连接程序,调试程序371.2.5软件系统Windows操作系统平台硬件BIOS应1.操作系统(OperatingSystem)操作系统管理着系统的软硬件资源为用户提供使用机器的交互界面为程序员使用资源提供可供调用的驱动程序为其他程序构建稳定的运行平台32位控制台环境%SystemRoot%\system32\cmd.exe16位模拟DOS环境%SystemRoot%\system32\32位控制台环境和16位模拟DOS环境两种基本功能和界面一致,但本质不同381.操作系统(OperatingSystem)操作系统管2.汇编程序(Assembler)将汇编语言源程序转换为机器代码微软宏汇编程序MASMMASM6.11是最后一个独立发行的MASM软件包MASM6.15来自VisualC++6.0,支持到Pentium4的SSE2指令系统VisualC++.NET2005提供支持SSE3指令的MASM8.0支持64位指令的ML64.EXE程序汇编语言程序与汇编程序是两个不同的概念392.汇编程序(Assembler)将汇编语言源程序转换为机3.文件路径目录(Directory):管理磁盘上文件的文件夹路径(Path):分区:\根目录\子目录\文件名绝对路径:文件的完整路径d:\masm\progs\eg0101.asm相对路径:相对当前目录的路径progs\eg0101.asm..\bin\ml.exe转换分区d:进入当前目录(CurrentDirectory)cd\masm403.文件路径目录(Directory):管理磁盘上文件的文4.内部命令和外部命令内部命令:32位控制台或DOS环境本身具有的、直接支持的命令,即驻留主存的命令使用方法:命令关键字参数选项外部命令:与其他可执行文件一样,以文件形式保存在磁盘上的命令执行方法:路径\文件名参数路径搜索顺序先当前目录后搜索路径内部命令PATH查看和设置当前的搜索路径你所执行的命令不是内部或外部命令,也不是可运行的程序或批处理文件?414.内部命令和外部命令内部命令:32位控制台或DOS环境本5.进入MASM目录的批处理文件为便于进入MASM目录,可创建批处理文件32位Windows控制台:WIN32.BAT
16位DOS环境:DOS16.BAT为便于访问其中文件,增加搜索路径:@setPATH=D:\MASM;D:\MASM\BIN;%PATH%在Windows资源管理器打开文件夹“D:\MASM”,双击该批处理文件,就可以进入MASM环境425.进入MASM目录的批处理文件为便于进入MASM目录,可具有搜索路径的批处理文件返回@echooff@setPATH=D:\MASM;D:\MASM\BIN;%PATH%%SystemRoot%\system32\cmd.exe@echoonWIN32.BAT@echooff@setPATH=D:\MASM;D:\MASM\BIN;%PATH%%SystemRoot%\system32\@echoonDOS16.BAT43具有搜索路径的批处理文件返回@echooffWIN32.B1.3汇编语言程序格式程序用程序设计语言编写,由指令构成指令由操作码和操作数(地址码)组成操作码(Opcode)表明处理器执行的操作例如数据传送、加法运算、跳转等操作。操作数(Operand)是参与操作的数据对象主要以寄存器名或地址形式指明数据的来源通常的指令都有一个或两个操作数有些指令无操作数,个别指令有3或4个操作数多数操作数需要显式指明,有些操作数隐含使用441.3汇编语言程序格式程序用程序设计语言编写,由指令构成41.3.1指令的代码格式(InstructionFormat)IA-32处理器采用可变长度指令格式操作码可选的指令前缀(用于扩展指令功能)1~3字节的主要操作码操作数可选的寻址方式域(包括ModR/M和SIB字段)可选的位移量可选的立即数451.3.1指令的代码格式(InstructionForm使用最多、最基本的数据传送指令传送指令的助记符:MOV(取自Move)将数据从一个位置传送到另一个位置类似高级语言的赋值语句
movdest,src;源操作数src:被传送的数据或数据所在的位置;目的操作数dest:数据将要传送到的位置moveax,ebx ;机器代码:8BC3moveax,[ebx] ;机器代码:8B03moveax,[ebx+esi*4+80h] ;机器代码:8B84B380000000功能演示46使用最多、最基本的数据传送指令传送指令的助记符:MOV(取自传送指令MOV的功能演示返回源操作数src目的操作数dest30H30H被传送的数据47传送指令MOV的功能演示返回源操作数src目的操作数de1.3.2语句格式源程序由语句组成一个语句常占一行(MASM有续行符“\”)一个语句不超过132个字符,4个部分执行性语句:表达处理器指令(硬指令)标号:硬指令助记符
操作数,操作数 ;注释说明性语句:表达伪指令,控制汇编方式名字
伪指令助记符
参数,参数,……;注释这是MASM语法,但具有一般性481.3.2语句格式源程序由语句组成这是MASM语法,但具有1.标号与名字标号:执行性语句中冒号分隔表示处理器指令在主存中的逻辑地址指示分支、循环等程序的目的地址名字:说明性语句中空格或制表符分隔变量名、段名、子程序名等反映变量、段和子程序等的逻辑地址标号和名字是用户自定义的标识符491.标号与名字标号:执行性语句中标号和名字是用户自定义的标标识符(Identifier)最多由31个字母、数字及规定的特殊符号(如_、$、?、@)组成,不能以数字开头一个源程序中,用户定义的每个标识符必须唯一不能是汇编程序采用的保留字保留字(ReservedWord)是编程语言本身需要使用的各种具有特定含义的标识符、也称为关键字硬指令助记符:MOV伪指令助记符:BYTE操作符:OFFSET寄存器名:EAX取名原则类似高级语言但默认不区别大小写字母50标识符(Identifier)最多由31个字母、数字及规定的2.助记符助记符是帮助记忆指令功能的符号硬指令助记符表示处理器指令伪指令助记符表达一个汇编命令处理器指令示例:传送指令MOV伪指令示例:字节变量定义助记符:BYTE
(或DB)功能:在主存中占用若干的存储空间,用于保存变量值,该变量以字节为单位存取msg
byte
'Hello,Assembly!',13,10,0512.助记符助记符是帮助记忆指令功能的符号msgbyt3.操作数和参数处理器指令的操作数:表示参与操作的对象具体的常量保存在寄存器的数据保存在存储器中的变量逗号前常是目的操作数,逗号后常是源操作数伪指令的参数:常量、变量名、表达式等可以有多个,参数之间用逗号分隔msg
byte
'Hello,Assembly!',13,10,0mov
eax,offsetmsg523.操作数和参数处理器指令的操作数:表示参与操作的对象ms4.注释和分隔符语句中分号后的内容是注释对指令或程序进行说明汇编程序不对它们做任何处理注释利于阅读,应养成书写注释的好习惯语句的4个组成部分要用分隔符分开标号后的冒号注释前的分号操作数间和参数间的逗号分隔其他部分采用一个或多个空格或制表符注释使用英文或中文均可分隔符都是英文标点良好的语句格式有利于编程534.注释和分隔符语句中分号后的内容是注释分隔符都是英文标点1.3.3源程序框架;eg0000.asminWindowsConsole includeio32.inc ;包含32位输入输出文件
.data ;定义数据段
…… ;数据定义(数据待填)
.code ;定义代码段start: ;程序执行起始位置
…… ;主程序(指令待填)
exit0(或ret) ;程序正常执行结束
…… ;子程序(指令待填)
endstart ;汇编结束541.3.3源程序框架;eg0000.asminWind1.包含伪指令INCLUDE将常用的常量定义、过程说明、共享的子程序库等内容进行声明(相当于C和C++语言中,包含头文件的作用)IO32.INC是配合本书的包含文件前3个语句:.686 ;32位指令.modelflat,stdcall ;选择平展模型,标准调用规范
optioncasemap:none ;告知MASM区分用户定义标识符的大小写551.包含伪指令INCLUDE将常用的常量定义、过程说明、共2.段的简化定义数据段定义伪指令.DATA创建一个数据段代码段定义伪指令.CODE创建一个代码段堆栈段由Windows维护,用户不必设置程序开始执行的位置应用一个标号(例如:START)汇编结束END指令的参数应用程序执行结束语句“EXIT0”将控制权交还操作系统提供给操作系统一个返回代码通常用0表示执行正确源程序汇编结束END语句执行结束≠汇编结束562.段的简化定义数据段定义伪指令.DATA创建一个数据段执〔例1-1〕信息显示程序在数据段给出这个字符串形式的信息:
;数据段msg byte'Hello,Assembly!',13,10,0 ;定义要显示的字符串在代码段编写显示字符串的程序:
;代码段
moveax,offsetmsg ;指定字符串的偏移地址
calldispmsg ;调用I/O子程序显示信息完整程序57〔例1-1〕信息显示程序在数据段给出这个字符串形式的信息:完汇编语言源程序EG0101.ASM;eg0101.asm
includeio32.inc
.data ;数据段msg byte'Hello,Assembly!',13,10,0
.code ;代码段start: ;程序执行起始位置
moveax,offsetmsg calldispmsg
exit0 ;程序正常执行结束
endstart ;汇编结束返回Hello,Assembly!运行结果对比58汇编语言源程序EG0101.ASM;eg0101.asm返回信息显示的C语言源程序#include<stdio.h>intmain(){
printf("Hello,world!\n"); exit(0);}返回Hello,world!运行结果59信息显示的C语言源程序#include<stdio.h>返3.输入输出子程序库汇编程序通常不提供任何函数或程序库必须利用操作系统的编程资源本书配套键盘输入和显示器输出的I/O子程序含IO32.INC和IO32.LIB,需要包含文件声明源程序文件开始使用包含命令声明INCLUDEIO32.INC子程序调用方法MOVEAX,入口参数CALL子程序名子程序名DISPMSG入口参数EAX=字符串地址功能说明显示字符串(以0结尾)输入子程序输出子程序603.输入输出子程序库汇编程序通常不提供任何函数或程序库子程常用输出子程序返回子程序名功能说明DISPMSG显示字符串(以0结尾)DISPC显示一个字符DISPCRLF光标回车换行,到下一行首个位置DISPRD显示8个32位通用寄存器内容DISPRF显示6个状态标志的状态DISPHD以十六进制形式显示8位数据DISPUID显示无符号十进制整数DISPSID显示有符号十进制整数61常用输出子程序返回子程序名功能说明DISPMSG显示字符串(常用输入子程序返回子程序名功能说明READMSG输入一个字符串(回车结束)READC输入一个字符(回显)READHD输入8位十六进制数据READUID输入无符号十进制整数(≤232-1)READSID输入有符号十进制整数(-231~231-1)62常用输入子程序返回子程序名功能说明READMSG输入一个字符1.3.4开发过程631.3.4开发过程631.开发软件抽取MASM6.11和VisualC++6.0集成开发环境中有关文件构造基本开发软件包MASM主目录:I/O库、包含文件及批处理文件BIN子目录:进行汇编、连接及配套程序文件WINDBG子目录:调试程序WinDbg.EXE默认安装到D分区的MASM目录快速开发方法
①进入MASM目录双击批处理文件WIN32.BAT
②生成可执行文件MAKE32eg0101快速开发过程641.开发软件抽取MASM6.11和VisualC++快速开发过程返回感性认识因直观而印象深刻65快速开发过程返回感性认识因直观而印象深刻652.源程序的编辑源程序文件是无格式文件、纯文本类型以ASM为扩展名,可使用任何文本编辑器Windows的记事本Notepad其他程序开发工具中的编辑环境专注于源程序编写的编辑软件,例如UltraEdit32本书配套开发软件MASM主目录提供Notepad2.exe程序本书源程序文件的命名规则EG=例题,EX=习题
前2位数字=章号,后2位数字=序号662.源程序的编辑源程序文件是无格式文件、纯文本类型本书源程3.源程序的汇编生成目标模块文件(.OBJ)MASM6.x的汇编程序是ML.EXE
BIN\ML/c/coffeg0101.asm参数“/c”(小写字母)实现源程序的汇编参数“/coff”(小写字母)表示生成COFF格式的目标模块文件温馨提示:将源文件放在MASM目录温馨提示:ML.EXE的参数区别大小写673.源程序的汇编生成目标模块文件(.OBJ)温馨提示:将源4.目标文件的连接把一个或多个目标文件和库文件合成一个可执行文件(.EXE)32位连接程序被更名为LINK32.EXE
BIN\LINK32/subsystem:consoleeg0201.obj“/subsystem:console”表示生成Windows控制台(Console)环境的可执行文件“/subsystem:windows”生成Windows图形窗口的可执行文件温馨提示:使用批处理文件方便操作温馨提示:汇编程序只指出语法错误684.目标文件的连接把一个或多个目标文件和库文件合成一个可执5.可执行文件的运行进入控制台(或模拟DOS)环境在命令行提示符下输入文件名(可以省略扩展名)、按下回车键运行
eg0201.exe运行错误,就需要静态排错:阅读分析源程序动态排错:利用调试程序温馨提示:不要在Windows下双击运行695.可执行文件的运行进入控制台(或模拟DOS)环境温馨提示6.列表文件列表文件(.LST)含有源程序和目标代码
ML/c/coff/Fleg0201.asm“/Fl”创建列表文件(大写F、小写l,不是数字1)列表文件有两部分内容第一部分:源程序及其代码第二部分:各种标识符错误Error:比较严重的语法错误警告Warning:不太关键的语法错误706.列表文件列表文件(.LST)含有源程序和目标代码707.调试程序WinDbg是微软提供的Windows调试程序WinDbg支持源程序级调试,但需要在汇编、连接过程中加入参数汇编时用“/Zi”(大写Z、小写i)参数 ML/c/coff/Fl/Zieg0101.asm连接时用“/debug”参数 LINK32/subsystem:console/debugeg0101.obj双击WinDbg快捷方式打开调试程序源程序可执行文件目标模块文本编辑器汇编程序连接程序调试程序717.调试程序WinDbg是微软提供的Windows调试程序汇编语言集成开发环境(2)运行作者组织的“开发工具.EXE”可以生成一个汇编语言集成开发环境MASM615—LINK16.EXE,LIB16.EXEMASM32调试工具—WINDBG,DEBUG作者编写的输入输出文件IO16.LIB,LIB32.LIB,IO.INC,IO16.INC,IO32.INC72汇编语言集成开发环境(2)运行作者组织的“开发工具.EXE”安装方法双击“m32v10r.EXE”安装masm32masm32只能安装在根目录再双击“Exmasm32”安装其他软件安装目录为masm32所在目录,默认为C:\masm3273安装方法双击“m32v10r.EXE”73MASM615MASM615是微软提供的汇编开发软件包,以DOS操作系统为平台,可以用来开发实模式下的程序和系统程序,但是无法开发保护模式下的32位应用程序WINDOWSXP/2000环境下可在模拟DOS窗口下使用在教材配套的开发环境中使用了MASM615中的链接器74MASM615MASM615是微软提供的汇编开发软件包,以DMASM32免费软件开发包MASM32是WINDOWS窗口应用程序,可以非常方便地开发32位应用程序。编辑器MASM6.14汇编程序32位增量式链接程序Win32的包含文件、库文件MASM32是配套开发环境的主体为了使用方便,建议在桌面建立masm32的启动图标75MASM32免费软件开发包MASM32是WINDOWS窗口应链接软件MASM614中的链接软件是段式可执行程序链接器(SegmentedExecutableLinker),用于生成16位DOS程序,不能链接生成32位Windows应用程序;MASM32中的连接器LINK.EXE是32位增量式链接器(incrementallinker)用于链接生成32位应用程序76链接软件MASM614中的链接软件是段式可执行程序链接器(S编写源程序双击桌面上的,启动MASM32编辑窗口,书写源程序。输入完毕之后,选择菜单File/Save,弹出保存对话框,保存文件。汇编源程序的扩展名是ASM在DOS模拟窗口中对源程序进行汇编和连接77编写源程序双击桌面上的,启动MASM32编辑窗口,书写源32位应用程序的汇编连接7832位应用程序的汇编连接78第1章习题:汇编语言基础1.1简答题(1、3、6、7、8)1.2
判断题(1、6、7、8、9)1.3
填空题(3、4、5、7、10)1.9、1.13、1.15、1.16第1章习题:汇编语言基础1.1简答题(1、3、6、7、8)第1章汇编语言基础1.1英特尔80x86处理器1.2个人计算机系统1.3汇编语言程序格式第1章汇编语言基础1.1英特尔80x86处理器第1章汇编语言基础了解软硬件开发环境熟悉通用寄存器和存储器组织掌握汇编语言的 语句格式、程序框架和开发方法第1章汇编语言基础了解软硬件开发环境Intel80861.1英特尔80x86处理器8038680486奔腾奔腾II奔腾4802868086奔腾III酷睿多核系列4004IA-32处理器16位80x86处理器奔腾多核系列Intel64处理器82Intel80861.1英特尔80x86处理器803861.1.116位80x86处理器16位结构处理器8086/8088指令系统提供16位基本指令集80186/80188增加若干条实用指令8086的工作方式是实方式(RealMode)80286增加保护方式(ProtectedMode)80286引入了系统指令为操作系统等核心程序提供处理器控制功能指令系统、指令集(InstructionSet)831.1.116位80x86处理器16位结构处理器指令系统、1.1.2IA-32处理器80386引入英特尔32位指令集结构ISA兼容原16位80286指令系统全面升级为32位提供虚拟8086工作方式(Virtual8086Mode)80486集成浮点处理单元支持浮点指令Pentium系列陆续增加若干整数指令、完善浮点指令增加一系列多媒体指令(SIMD指令)IA-32(IntelArchitecture-32)841.1.2IA-32处理器80386引入英特尔32位指令集1.1.3Intel64处理器引入64位英特尔指令集结构兼容32位指令系统新增64位工作方式继续丰富多媒体指令处理器集成多核(Multi-core)技术处理器进入多核时代Manycore851.1.3Intel64处理器引入64位英特尔指令集结构1.2个人计算机系统硬件(Hardware):物理设备软件(Software):程序和文档运算器
控制器寄存器组
主存储器总线输入输出接口电路外部设备软件微处理器微型计算机微型计算机系统861.2个人计算机系统硬件(Hardware):物理设备运算1.2.1硬件组成I/O接口主存储器系统总线CPU寄存器控制器运算器辅助存储器输入设备输出设备汇编语言程序员将硬件抽象为:寄存器、存储器地址和输入输出地址871.2.1硬件组成主存储器系统总线CPU寄存器控制器运算器1.2.2寄存器(Register)处理器内部的高速存储单元用于暂时存放程序执行过程中的代码和数据透明寄存器对应用人员不可见、不能编程直接控制可编程(Programmable)寄存器具有引用名称、供编程使用通用寄存器(General-PurposeRegister)具有多种用途数量较多、使用频度较高专用寄存器各自只用于特定目的881.2.2寄存器(Register)处理器内部的高速存储单IA-32常用寄存器8个32位通用寄存器6个16位段寄存器1个32位标志寄存器1个32位指令指针89IA-32常用寄存器8个32位通用寄存器101.通用寄存器处理器最常使用的整数通用寄存器可用于保存整数数据、地址等8个32位通用寄存器EAX,EBX,ECX,EDXESI,EDI,EBP,ESP8个16位通用寄存器AX,BX,CX,DXSI,DI,BP,SP8个8位通用寄存器AH,BH,CH,DHAL,BL,CL,DL31871615AHAL0AXEAX既是一个整体又可独立使用901.通用寄存器处理器最常使用的整数通用寄存器318716通用寄存器的名称EAXAccumulator累加器EBXBase基址寄存器ECXCounter计数器EDXData数据寄存器ESISourceIndex源变址寄存器EDIDestinationIndex目的变址寄存器EBPBasePointer基址指针ESPStackPointer堆栈指针91通用寄存器的名称EAXAccumulator累加器EBXBa2.标志寄存器标志(Flag)反映指令执行结果或控制指令执行形式用一个或多个二进制位表示一种标志用0和1的不同组合表达标志的不同状态8086支持16位标志寄存器FLAGSIA-32处理器形成32位EFLAGS标志寄存器状态标志:记录指令执行结果的辅助信息控制标志:方向标志DF,仅用于串操作指令系统标志:控制操作系统或核心管理程序的操作方式示意图922.标志寄存器标志(Flag)示意图13标志寄存器EFLAGS返回93标志寄存器EFLAGS返回14处理器最基本的标志:状态标志用来记录指令执行结果的辅助信息加减运算和逻辑运算指令主要设置它们其他有些指令的执行也会相应地设置它们处理器主要使用其中5个构成各种条件,分支指令判断这些条件实现程序分支8086的标志OF111512DF10IF9TF8SF7ZF605AF403PF211CF094处理器最基本的标志:状态标志用来记录指令执行结果的辅助信息83.指令指针寄存器EIP保存将要执行的指令在主存的存储器地址EIP是专用寄存器顺序执行时自动增量(加上该指令的字节数),指向下一条指令分支、调用等操作时执行控制转移指令修改,引起程序转移到指定的指令执行出现中断或异常时被处理器赋值而相应改变311615IP0EIP953.指令指针寄存器EIP保存将要执行的指令在主存的存储器地4.段寄存器段(Segment)是用于安排相关代码或数据的一个主存区域段寄存器表明某个段在主存中的位置6个16位段寄存器:CSDSSSESFSGS应用程序主要涉及3类段代码段(CodeSegment) 存放程序中指令代码数据段(DataSegment) 存放当前运行程序所用数据堆栈段(StackSegment) 指明程序使用的堆栈区域主存空间指令段数据段堆栈段程序964.段寄存器段(Segment)是用于安排相关代码或数据的1.2.3存储器组织主存储器容量很大,被划分成许多存储单元每个存储单元被编排一个号码即存储单元地址称为存储器地址(MemoryAddress)每个存储单元以字节为基本存储单位即字节编址(ByteAddressable)一个字节(Byte)等于8个二进制位(Bit)二进制位是计算机存储信息的最小单位16位(2个字节)构成一个字(Word)32位(4个字节)构成一个双字(DoubleWord)示意图971.2.3存储器组织主存储器容量很大,被划分成许多存储单元数据的位格式返回D7D6D5D4D3D2D1D0字节LSBMSBD15……D1D0字LSBMSBD31……D1D0双字LSBMSB31871615高字节低字节0字双字98数据的位格式返回D7D6D5D4D3D2D1D0字节LSBM1.存储模型物理存储器以字节为基本存储单位每个存储单元被分配一个唯一的地址这个地址就是物理地址物理地址空间从0开始顺序编排,直到处理器支持的最大存储单元8086处理器支持1MB存储器:00000H~FFFFFHIA-32处理器支持4GB存储器:00000000H~FFFFFFFFH操作系统利用存储管理单元进行存储管理,程序并不直接寻址物理存储器IA-32处理器提供3种存储模型,用于程序访问存储器示意图991.存储模型物理存储器以字节为基本存储单位示意图20存储器地址空间返回FFFFFFFFH00000000H00000001H00000002H00000003H00000004H双字字节字字节字节字字节100存储器地址空间返回FFFFFFFFH00000000H000IA-32处理器的存储模型(1)平展存储模型(FlatMemoryModel)存储器是一个连续的地址空间:线性地址空间IA-32处理器支持4GB容量线性地址空间(2)段式存储模型(SegmentedMemoryModel)存储器由一组独立的地址空间:段(Segment)每个段都可以达到4GB容量在处理器内部,所有的段都被映射到线性地址空间(3)实地址存储模型(Real-addressMemoryModel)8086处理器的存储模型段式存储模型的特例线性地址空间最大为1MB容量,段最大为64KB101IA-32处理器的存储模型(1)平展存储模型(FlatMe2.工作方式(1)保护方式(ProtectedMode)IA-32处理器固有的工作状态具有强大的段页式存储管理和特权与保护能力使用全部32条地址总线,可寻址4GB物理存储器使用平展或段式存储模型利用虚拟8086方式支持实地址8086软件(2)实地址方式(Real-addressMode)可以进行32位处理的快速8086只能寻址1MB物理存储器空间,每个段不超过64KB可以使用32位寄存器、32位操作数和32位寻址方式只能支持实地址存储模型(3)系统管理方式(SystemManagementMode)实现供节能和系统安全管理1022.工作方式(1)保护方式(ProtectedMode)3.逻辑地址(LogicalAddress)在处理器内部、程序员编程时采用的地址逻辑地址=段基地址∶偏移地址段基地址=在主存中的起始地址偏移地址=距离段基地址的位移量某个存储单元可以有多个逻辑地址,但只有一个唯一的物理地址逻辑地址线性地址物理地址编程使用处理器转换地址总线输出示意图1033.逻辑地址(LogicalAddress)在处理器内部逻辑地址与物理地址返回108208308106206306107207307109209309110105104103102101210205204203202201310305304303302301081828061626071727091929100504030201201514131211302524232221逻辑地址=相对地址:205(2层05号房间)物理地址=绝对地址:15(第15号房间)104逻辑地址与物理地址返回1082083081062063061基本段的逻辑地址代码段(CodeSegment)段基地址:代码段寄存器CS指示偏移地址:指令指针寄存器EIP保存数据段(DataSegment)段基地址:数据段寄存器DS指示有时也用附加段寄存器ES,段寄存器FS和GS指示偏移地址:各种存储器寻址方式计算出来堆栈段(StackSegment)段基地址:堆栈段寄存器SS指示偏移地址:堆栈指针寄存器ESP保存主存空间指令段数据段堆栈段程序105基本段的逻辑地址代码段(CodeSegment)主存空间指4.段选择器16位段寄存器保存16位段选择器段选择器指向64位段描述符(Descriptor)段描述符包括段基地址平展存储模型:指向地址0位置段式存储模型:指向线性地址空间不同的段实地址存储模型:保存段基地址的高16位段选择器段基地址数据或指令段寄存器段描述符主存空间1064.段选择器16位段寄存器保存16位段选择器段选择器段基地平展模型平展存储模型是分段存储模型的一种特例所有的段都有相同的段基地址(基地址为0),都重合于同一个线性地址空间IA-32微处理器上运行的应用程序,广泛采用平展存储模型。107平展模型平展存储模型是分段存储模型的一种特例28分页机制不采用分页管理机制,线性地址就是对应的物理地址空间采用了分页管理机制,则要将线性空间地址映射到物理地址当微处理器既采用段式存储管理,又采用页式存储管理就是段页式存储管理方式108分页机制不采用分页管理机制,线性地址就是对应的物理地址空间分页线性地址空间页物理地址物理地址空间线性地址页目录页表偏移量入口页目录页表入口段1段2
段3页+109分页线性地址空间页物理地址物理地址空间线性地址页目录页表存储器模型与工作模式
保护模式工作模式实模式虚拟8086模式平展模型存储器模型实地址模型分段模型段页模型110存储器模型与工作模式
保护模式工作模式实模式虚拟8086模5.Win32的虚拟地址分配应用程序起始地址1115.Win32的虚拟地址分配应用程序起始地址321.2.4程序设计语言机器语言(MachineLanguage)底层的计算机语言,对应机器指令形成目标(代码)程序汇编语言(AssemblyLanguage)将机器指令用助记符号代替而形成的一种语言本质上是机器语言需要汇编程序“汇编”(翻译)高级语言(HighLevelLanguage)面向问题的程序设计语言需要“编译”或“解释”后执行指令是处理器的母语moveax,100addeax,2561121.2.4程序设计语言机器语言(MachineLanguInstructions:LanguageoftheMachine
Tocommandacomputer'shardware,youmustspeakitslanguage.Thewordsofamachine'slanguagearecalledinstructions,anditsvocabularyiscalledaninstructionset.
为了控制计算机硬件,必须使用它的语言。机器语言的单词称为指令,它的词汇表称为指令集。“ComputerOrganization&Design --TheHardware/SoftwareInterface(2ndEdition)”byJohnL.HennessyandDavidA.PattersonMorganKaufmannPublishers,Inc.1998返回113Instructions:Languageofthe汇编语言和高级语言的比较汇编语言与处理器密切相关,可移植性较差高级语言与具体计算机无关,便于移植汇编语言功能有限、涉及硬件细节,编写繁琐困难高级语言功能强大,语法自然,容易掌握和应用汇编语言的优势:直接、有效地控制硬件,容易产生运行速度快、指令序列短小的高效率目标程序高级语言不易直接控制计算机的各种操作,编译程序产生的目标程序往往比较庞大混合编程、取长补短?学习汇编语言的意义114汇编语言和高级语言的比较汇编语言与处理器密切相关,可移植性较汇编语言的主要应用场合程序要具有较快的执行时间,或者只能占用较小的存储容量程序与计算机硬件密切相关,程序要直接、有效地控制硬件大型软件需要提高性能、优化处理的部分没有合适的高级语言、或只能采用汇编语言的时候分析具体系统尤其是该系统的低层软件、加密解密软件、分析和防治计算机病毒等等115汇编语言的主要应用场合程序要具有较快的执行时间,或者只能占用1.2.5软件系统Windows操作系统平台MASM6.15汇编程序硬件BIOS应用程序*.ASM,*.OBJ*.LST,*.EXE操作系统编辑程序,汇编程序连接程序,调试程序1161.2.5软件系统Windows操作系统平台硬件BIOS应1.操作系统(OperatingSystem)操作系统管理着系统的软硬件资源为用户提供使用机器的交互界面为程序员使用资源提供可供调用的驱动程序为其他程序构建稳定的运行平台32位控制台环境%SystemRoot%\system32\cmd.exe16位模拟DOS环境%SystemRoot%\system32\32位控制台环境和16位模拟DOS环境两种基本功能和界面一致,但本质不同1171.操作系统(OperatingSystem)操作系统管2.汇编程序(Assembler)将汇编语言源程序转换为机器代码微软宏汇编程序MASMMASM6.11是最后一个独立发行的MASM软件包MASM6.15来自VisualC++6.0,支持到Pentium4的SSE2指令系统VisualC++.NET2005提供支持SSE3指令的MASM8.0支持64位指令的ML64.EXE程序汇编语言程序与汇编程序是两个不同的概念1182.汇编程序(Assembler)将汇编语言源程序转换为机3.文件路径目录(Directory):管理磁盘上文件的文件夹路径(Path):分区:\根目录\子目录\文件名绝对路径:文件的完整路径d:\masm\progs\eg0101.asm相对路径:相对当前目录的路径progs\eg0101.asm..\bin\ml.exe转换分区d:进入当前目录(CurrentDirectory)cd\masm1193.文件路径目录(Directory):管理磁盘上文件的文4.内部命令和外部命令内部命令:32位控制台或DOS环境本身具有的、直接支持的命令,即驻留主存的命令使用方法:命令关键字参数选项外部命令:与其他可执行文件一样,以文件形式保存在磁盘上的命令执行方法:路径\文件名参数路径搜索顺序先当前目录后搜索路径内部命令PATH查看和设置当前的搜索路径你所执行的命令不是内部或外部命令,也不是可运行的程序或批处理文件?1204.内部命令和外部命令内部命令:32位控制台或DOS环境本5.进入MASM目录的批处理文件为便于进入MASM目录,可创建批处理文件32位Windows控制台:WIN32.BAT
16位DOS环境:DOS16.BAT为便于访问其中文件,增加搜索路径:@setPATH=D:\MASM;D:\MASM\BIN;%PATH%在Windows资源管理器打开文件夹“D:\MASM”,双击该批处理文件,就可以进入MASM环境1215.进入MASM目录的批处理文件为便于进入MASM目录,可具有搜索路径的批处理文件返回@echooff@setPATH=D:\MASM;D:\MASM\BIN;%PATH%%SystemRoot%\system32\cmd.exe@echoonWIN32.BAT@echooff@setPATH=D:\MASM;D:\MASM\BIN;%PATH%%SystemRoot%\system32\@echoonDOS16.BAT122具有搜索路径的批处理文件返回@echooffWIN32.B1.3汇编语言程序格式程序用程序设计语言编写,由指令构成指令由操作码和操作数(地址码)组成操作码(Opcode)表明处理器执行的操作例如数据传送、加法运算、跳转等操作。操作数(Operand)是参与操作的数据对象主要以寄存器名或地址形式指明数据的来源通常的指令都有一个或两个操作数有些指令无操作数,个别指令有3或4个操作数多数操作数需要显式指明,有些操作数隐含使用1231.3汇编语言程序格式程序用程序设计语言编写,由指令构成41.3.1指令的代码格式(InstructionFormat)IA-32处理器采用可变长度指令格式操作码可选的指令前缀(用于扩展指令功能)1~3字节的主要操作码操作数可选的寻址方式域(包括ModR/M和SIB字段)可选的位移量可选的立即数1241.3.1指令的代码格式(InstructionForm使用最多、最基本的数据传送指令传送指令的助记符:MOV(取自Move)将数据从一个位置传送到另一个位置类似高级语言的赋值语句
movdest,src;源操作数src:被传送的数据或数据所在的位置;目的操作数dest:数据将要传送到的位置moveax,ebx ;机器代码:8BC3moveax,[ebx] ;机器代码:8B03moveax,[ebx+esi*4+80h] ;机器代码:8B84B380000000功能演示125使用最多、最基本的数据传送指令传送指令的助记符:MOV(取自传送指令MOV的功能演示返回源操作数src目的操作数dest30H30H被传送的数据126传送指令MOV的功能演示返回源操作数src目的操作数de1.3.2语句格式源程序由语句组成一个语句常占一行(MASM有续行符“\”)一个语句不超过132个字符,4个部分执行性语句:表达处理器指令(硬指令)标号:硬指令助记符
操作数,操作数 ;注释说明性语句:表达伪指令,控制汇编方式名字
伪指令助记符
参数,参数,……;注释这是MASM语法,但具有一般性1271.3.2语句格式源程序由语句组成这是MASM语法,但具有1.标号与名字标号:执行性语句中冒号分隔表示处理器指令在主存中的逻辑地址指示分支、循环等程序的目的地址名字:说明性语句中空格或制表符分隔变量名、段名、子程序名等反映变量、段和子程序等的逻辑地址标号和名字是用户自定义的标识符1281.标号与名字标号:执行性语句中标号和名字是用户自定义的标标识符(Identifier)最多由31个字母、数字及规定的特殊符号(如_、$、?、@)组成,不能以数字开头一个源程序中,用户定义的每个标识符必须唯一不能是汇编程序采用的保留字保留字(ReservedWord)是编程语言本身需要使用的各种具有特定含义的标识符、也称为关键字硬指令助记符:MOV伪指令助记符:BYTE操作符:OFFSET寄存器名:EAX取名原则类似高级语言但默认不区别大小写字母129标识符(Identifier)最多由31个字母、数字及规定的2.助记符助记符是帮助记忆指令功能的符号硬指令助记符表示处理器指令伪指令助记符表达一个汇编命令处理器指令示例:传送指令MOV伪指令示例:字节变量定义助记符:BYTE
(或DB)功能:在主存中占用若干的存储空间,用于保存变量值,该变量以字节为单位存取msg
byte
'Hello,Assembly!',13,10,01302.助记符助记符是帮助记忆指令功能的符号msgbyt3.操作数和参数处理器指令的操作数:表示参与操作的对象具体的常量保存在寄存器的数据保存在存储器中的变量逗号前常是目的操作数,逗号后常是源操作数伪指令的参数:常量、变量名、表达式等可以有多个,参数之间用逗号分隔msg
byte
'Hello,Assembly!',13,10,0mov
eax,offsetmsg1313.操作数和参数处理器指令的操作数:表示参与操作的对象ms4.注释和分隔符语句中分号后的内容是注释对指令或程序进行说明汇编程序不对它们做任何处理注释利于阅读,应养成书写注释的好习惯语句的4个组成部分要用分隔符分开标号后的冒号注释前的分号操作数间和参数间的逗号分隔其他部分采用一个或多个空格或制表符注释使用英文或中文均可分隔符都是英文标点良好的语句格式有利于编程1324.注释和分隔符语句中分号后的内容是注释分隔符都是英文标点1.3.3源程序框架;eg0000.asminWindowsConsole includeio32.inc ;包含32位输入输出文件
.data ;定义数据段
…… ;数据定义(数据待填)
.code ;定义代码段start: ;程序执行起始位置
…… ;主程序(指令待填)
exit0(或ret) ;程序正常执行结束
…… ;子程序(指令待填)
endstart ;汇编结束1331.3.3源程序框架;eg0000.asminWind1.包含伪指令INCLUDE将常用的常量定义、过程说明
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国内外旅游市场发展状况及趋势预测表
- 行业三市场规模统计表格
- 旅游目的地管理专业知识复习要点
- 电信行业网络安全防护措施
- 环保科技领域工作表现证明(5篇)
- 公务员心理测试题及答案
- 地质学考试试题及答案
- 2025年信息系统分析与设计考试题及答案
- 地税面试题库及答案
- 2025年新媒体与传播专业职业能力考试试卷及答案
- 商业招商运营管理制度
- 2025年贵州省中考二模数学试题
- 2025-2030中国经颅磁刺激仪(TMS)行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030中国碳酸镁行业市场发展分析及发展趋势与投资前景研究报告
- 2025届中考历史全真模拟卷【湖北专用】(含答案)
- 法律英语试题库及答案
- 《飞向太空的航程》课件【中职专用】高一语文(高教版2023基础模块下册)
- 《中华人民共和国医疗保障法》解读与培训
- 2025兰州资源环境职业技术大学辅导员考试试题及答案
- 2025年生产安全事故应急救援演练计划
- 2025年生物统计学考试题及答案详解
评论
0/150
提交评论