汇编语言基础.pptx
《汇编语言基础.pptx》由会员分享,可在线阅读,更多相关《汇编语言基础.pptx(68页珍藏版)》请在咨信网上搜索。
第第1章章 汇编语言基言基础1.1 1.1 英特尔英特尔80 x8680 x86处理器处理器1.2 1.2 个人计算机系统个人计算机系统1.3 1.3 汇编语言程序格式汇编语言程序格式第第1章章 汇编语言基言基础了解软硬件开发环境了解软硬件开发环境熟悉通用寄存器和存储器组织熟悉通用寄存器和存储器组织掌握汇编语言的掌握汇编语言的语句格式、程序框架和开发方法语句格式、程序框架和开发方法第第1 1章章 汇编语言基础汇编语言基础3 3Intel 80861.1 英特英特尔80 x86处理器理器80386803868048680486奔腾奔腾奔腾奔腾II奔腾奔腾4802868028680868086奔腾奔腾III酷睿多核系列酷睿多核系列40044004IA-32处理器处理器16位位80 x86处理器处理器奔腾多核系列奔腾多核系列Intel 64处理器处理器第第1 1章章 汇编语言基础汇编语言基础4 41.1.1 16位位80 x86处理器理器1616位结构处理器位结构处理器8086/80888086/8088指令系统提供指令系统提供1616位基本指令集位基本指令集80186/8018880186/80188增加若干条实用指令增加若干条实用指令 80868086的工作方式是实方式(的工作方式是实方式(Real ModeReal Mode)8028680286增加保护方式(增加保护方式(Protected ModeProtected Mode)8028680286引入了系统指令引入了系统指令n为操作系统等核心程序提供处理器控制功能为操作系统等核心程序提供处理器控制功能指令系统、指令集(指令系统、指令集(Instruction Set)第第1 1章章 汇编语言基础汇编语言基础5 51.1.2 IA-32处理器理器8038680386引入英特尔引入英特尔3232位指令集结构位指令集结构ISAISAn兼容原兼容原1616位位8028680286指令系统指令系统n全面升级为全面升级为3232位位n提供虚拟提供虚拟80868086工作方式(工作方式(Virtual 8086 ModeVirtual 8086 Mode)8048680486集成浮点处理单元支持浮点指令集成浮点处理单元支持浮点指令PentiumPentium系列系列n陆续增加若干整数指令、完善浮点指令陆续增加若干整数指令、完善浮点指令n增加一系列多媒体指令(增加一系列多媒体指令(SIMDSIMD指令)指令)IA-32(Intel Architecture-32)第第1 1章章 汇编语言基础汇编语言基础6 61.1.3 Intel 64处理器理器引入引入6464位英特尔指令集结构位英特尔指令集结构n兼容兼容3232位指令系统位指令系统n新增新增6464位工作方式位工作方式继续丰富多媒体指令继续丰富多媒体指令处理器集成多核(处理器集成多核(Multi-coreMulti-core)技术)技术处理器进入多核时代处理器进入多核时代Many core第第1 1章章 汇编语言基础汇编语言基础7 71.2 个人个人计算机系算机系统硬件(硬件(HardwareHardware):物理设备):物理设备软件(软件(SoftwareSoftware):程序和文档):程序和文档运算器运算器 控制器控制器寄存器组寄存器组 主存储器主存储器 总线总线输入输出接口电路输入输出接口电路外部设备外部设备 软件软件微处理器微处理器微型计算机微型计算机微型计算机系统微型计算机系统第第1 1章章 汇编语言基础汇编语言基础8 81.2.1 硬件硬件组成成I/O接接口口主存储器主存储器系统总线系统总线CPU寄存器寄存器控制器控制器运算器运算器辅助存储器辅助存储器输入设备输入设备输出设备输出设备汇编语言程序员将硬件抽象为:汇编语言程序员将硬件抽象为:寄存器寄存器、存储器地址存储器地址和和输入输出地址输入输出地址第第1 1章章 汇编语言基础汇编语言基础9 91.2.2 寄存器(寄存器(Register)处理器内部的高速存储单元处理器内部的高速存储单元用于暂时存放程序执行过程中的代码和数据用于暂时存放程序执行过程中的代码和数据透明寄存器透明寄存器n对应用人员不可见、不能编程直接控制对应用人员不可见、不能编程直接控制可编程(可编程(ProgrammableProgrammable)寄存器)寄存器n具有引用名称、供编程使用具有引用名称、供编程使用n通用寄存器(通用寄存器(General-Purpose RegisterGeneral-Purpose Register)n具有多种用途具有多种用途n数量较多、使用频度较高数量较多、使用频度较高n专用寄存器专用寄存器n各自只用于特定目的各自只用于特定目的第第1 1章章 汇编语言基础汇编语言基础1010IA-32常用寄存器常用寄存器8个个32位通用寄存器位通用寄存器6个个16位段寄存器位段寄存器1个个32位标志寄存器位标志寄存器1个个32位指令指针位指令指针第第1 1章章 汇编语言基础汇编语言基础11111.通用寄存器通用寄存器处理器最常使用的整数通用寄存器处理器最常使用的整数通用寄存器可用于保存整数数据、地址等可用于保存整数数据、地址等 8 8个个3232位通用寄存器位通用寄存器EAXEAX,EBXEBX,ECXECX,EDXEDXESIESI,EDIEDI,EBPEBP,ESPESP8 8个个1616位通用寄存器位通用寄存器AXAX,BXBX,CXCX,DXDXSISI,DIDI,BPBP,SPSP8 8个个8 8位通用寄存器位通用寄存器AHAH,BHBH,CHCH,DHDHALAL,BLBL,CLCL,DLDL318 716 15AHAL0AXEAX既是一个整体既是一个整体又可独立使用又可独立使用第第1 1章章 汇编语言基础汇编语言基础1212通用寄存器的名称通用寄存器的名称E EAXAXAccumulatorAccumulator累加器累加器E EBXBXBaseBase基址寄存器基址寄存器E ECXCXCounterCounter计数器计数器E EDXDXDataData数据寄存器数据寄存器E ESISISource IndexSource Index源变址寄存器源变址寄存器E EDIDIDestination IndexDestination Index目的变址寄存器目的变址寄存器E EBPBPBase PointerBase Pointer基址指针基址指针E ESPSPStack PointerStack Pointer堆栈指针堆栈指针第第1 1章章 汇编语言基础汇编语言基础13132.标志寄存器志寄存器标志(标志(FlagFlag)n反映指令执行结果或控制指令执行形式反映指令执行结果或控制指令执行形式n用一个或多个二进制位表示一种标志用一个或多个二进制位表示一种标志n用用0 0和和1 1的不同组合表达标志的不同状态的不同组合表达标志的不同状态80868086支持支持1616位标志寄存器位标志寄存器FLAGSFLAGSIA-32IA-32处理器形成处理器形成3232位位EFLAGSEFLAGS标志寄存器标志寄存器n状态标志:记录指令执行结果的辅助信息状态标志:记录指令执行结果的辅助信息n控制标志:方向标志控制标志:方向标志DFDF,仅用于串操作指令,仅用于串操作指令n系系统统标标志志:控控制制操操作作系系统统或或核核心心管管理理程程序序的的操操作作方式方式示意图示意图第第1 1章章 汇编语言基础汇编语言基础1515处理器最基本的理器最基本的标志:状志:状态标志志用来记录指令执行结果的辅助信息用来记录指令执行结果的辅助信息加减运算和逻辑运算指令主要设置它们加减运算和逻辑运算指令主要设置它们其他有些指令的执行也会相应地设置它们其他有些指令的执行也会相应地设置它们处处理理器器主主要要使使用用其其中中5 5个个构构成成各各种种条条件件,分分支支指令判断这些条件实现程序分支指令判断这些条件实现程序分支 8086的标志的标志OF1115 12DF10IF9TF8SF7ZF605AF403PF211CF0第第1 1章章 汇编语言基础汇编语言基础16163.指令指指令指针寄存器寄存器EIP保存将要执行的指令在主存的存储器地址保存将要执行的指令在主存的存储器地址EIPEIP是专用寄存器是专用寄存器n顺顺序序执执行行时时自自动动增增量量(加加上上该该指指令令的的字字节节数数),指向下一条指令指向下一条指令n分分支支、调调用用等等操操作作时时执执行行控控制制转转移移指指令令修修改改,引引起程序转移到指定的指令执行起程序转移到指定的指令执行n出现中断或异常时被处理器赋值而相应改变出现中断或异常时被处理器赋值而相应改变3116 15IP0EIP第第1 1章章 汇编语言基础汇编语言基础17174.段寄存器段寄存器段段(SegmentSegment)是是用用于于安安排排相相关关代代码码或或数数据据的的一个主存区域一个主存区域段寄存器表明某个段在主存中的位置段寄存器表明某个段在主存中的位置6 6个个1616位段寄存器:位段寄存器:CS DS SS ES FS GSCS DS SS ES FS GS应用程序主要涉及应用程序主要涉及3 3类段类段n代码段(代码段(Code SegmentCode Segment)存放程序中指令代码存放程序中指令代码 n数据段(数据段(Data SegmentData Segment)存放当前运行程序所用数据存放当前运行程序所用数据n堆栈段(堆栈段(Stack SegmentStack Segment)指明程序使用的堆栈区域指明程序使用的堆栈区域主存空间主存空间指令段指令段数据段数据段堆栈段堆栈段程程序序第第1 1章章 汇编语言基础汇编语言基础18181.2.3 存存储器器组织主存储器容量很大,被划分成许多存储单元主存储器容量很大,被划分成许多存储单元每个存储单元被编排一个号码每个存储单元被编排一个号码n即存储单元地址即存储单元地址n称为存储器地址(称为存储器地址(Memory AddressMemory Address)每个存储单元以字节为基本存储单位每个存储单元以字节为基本存储单位n即字节编址(即字节编址(Byte AddressableByte Addressable)n一个字节(一个字节(ByteByte)等于)等于8 8个二进制位(个二进制位(BitBit)n二进制位是计算机存储信息的最小单位二进制位是计算机存储信息的最小单位n1616位(位(2 2个字节)构成一个字(个字节)构成一个字(WordWord)n3232位(位(4 4个字节)构成一个双字(个字节)构成一个双字(Double WordDouble Word)示意图示意图第第1 1章章 汇编语言基础汇编语言基础20201.存存储模型模型物理存储器以字节为基本存储单位物理存储器以字节为基本存储单位每个存储单元被分配一个唯一的地址每个存储单元被分配一个唯一的地址这个地址就是物理地址这个地址就是物理地址物物理理地地址址空空间间从从0 0开开始始顺顺序序编编排排,直直到到处处理理器器支支持持的的最大存储单元最大存储单元n80868086处理器支持处理器支持1MB1MB存储器:存储器:00000H00000HFFFFFHFFFFFHnIA-32IA-32处理器支持处理器支持4GB4GB存储器:存储器:00000000H00000000HFFFFFFFFHFFFFFFFFH操操作作系系统统利利用用存存储储管管理理单单元元进进行行存存储储管管理理,程程序序并并不不直接寻址物理存储器直接寻址物理存储器IA-32IA-32处理器提供处理器提供3 3种存储模型,用于程序访问存储器种存储模型,用于程序访问存储器示意图示意图第第1 1章章 汇编语言基础汇编语言基础2222IA-32处理器的存理器的存储模型模型(1 1)平展存储模型()平展存储模型(Flat Memory Flat Memory M Modelodel)n存储器是一个连续的地址空间:线性地址空间存储器是一个连续的地址空间:线性地址空间nIA-32IA-32处理器支持处理器支持4GB4GB容量线性地址空间容量线性地址空间(2 2)段式存储模型()段式存储模型(Segmented Segmented M Memory Modelemory Model)n存储器由一组独立的地址空间:段(存储器由一组独立的地址空间:段(SegmentSegment)n每个段都可以达到每个段都可以达到4GB4GB容量容量n在处理器内部,所有的段都被映射到线性地址空间在处理器内部,所有的段都被映射到线性地址空间(3 3)实地址存储模型()实地址存储模型(Real-address Real-address M Memory Modelemory Model)n80868086处理器的存储模型处理器的存储模型n段式存储模型的特例段式存储模型的特例n线性地址空间最大为线性地址空间最大为1MB1MB容量,段最大为容量,段最大为64KB64KB第第1 1章章 汇编语言基础汇编语言基础23232.工作方式工作方式(1 1)保护方式()保护方式(Protected Protected M Modeode)nIA-32IA-32处理器固有的工作状态处理器固有的工作状态n具有强大的段页式存储管理和特权与保护能力具有强大的段页式存储管理和特权与保护能力n使用全部使用全部3232条地址总线,可寻址条地址总线,可寻址4GB4GB物理存储器物理存储器n使用平展或段式存储模型使用平展或段式存储模型n利用虚拟利用虚拟80868086方式支持实地址方式支持实地址80868086软件软件(2 2)实地址方式()实地址方式(Real-address ModeReal-address Mode)n可以进行可以进行3232位处理的快速位处理的快速80868086n只能寻址只能寻址1MB1MB物理存储器空间,每个段不超过物理存储器空间,每个段不超过64KB64KBn可以使用可以使用3232位寄存器、位寄存器、3232位操作数和位操作数和3232位寻址方式位寻址方式n只能支持实地址存储模型只能支持实地址存储模型(3 3)系统管理方式()系统管理方式(System Management ModeSystem Management Mode)n实现供节能和系统安全管理实现供节能和系统安全管理第第1 1章章 汇编语言基础汇编语言基础24243.逻辑地址(地址(Logical Address)在处理器内部、程序员编程时采用的地址在处理器内部、程序员编程时采用的地址逻辑地址逻辑地址段基地址段基地址偏移地址偏移地址n段基地址段基地址在主存中的起始地址在主存中的起始地址n偏移地址偏移地址距离段基地址的位移量距离段基地址的位移量某某个个存存储储单单元元可可以以有有多多个个逻逻辑辑地地址址,但但只只有有一一个唯一的物理地址个唯一的物理地址逻辑地址逻辑地址逻辑地址逻辑地址线性地址线性地址线性地址线性地址物理地址物理地址物理地址物理地址编程使用编程使用处理器转换处理器转换地址总线输出地址总线输出示意图示意图第第1 1章章 汇编语言基础汇编语言基础2626基本段的基本段的逻辑地址地址代码段代码段(Code SegmentCode Segment)n段基地址:代码段寄存器段基地址:代码段寄存器CSCS指示指示n偏移地址:指令指针寄存器偏移地址:指令指针寄存器EIPEIP保存保存数据段数据段(Data SegmentData Segment)n段基地址:数据段寄存器段基地址:数据段寄存器DSDS指示指示n有时也用附加段寄存器有时也用附加段寄存器ESES,段寄存器段寄存器FSFS和和GSGS指示指示n偏移地址:各种存储器寻址方式计算出来偏移地址:各种存储器寻址方式计算出来堆栈段堆栈段(Stack SegmentStack Segment)n段基地址:堆栈段寄存器段基地址:堆栈段寄存器SSSS指示指示n偏移地址:堆栈指针寄存器偏移地址:堆栈指针寄存器ESPESP保存保存主存空间主存空间指令段指令段数据段数据段堆栈段堆栈段程程序序第第1 1章章 汇编语言基础汇编语言基础27274.段段选择器器1616位段寄存器保存位段寄存器保存1616位段选择器位段选择器段选择器指向段选择器指向6464位段描述符(位段描述符(DescriptorDescriptor)段描述符包括段基地址段描述符包括段基地址n平展存储模型:指向地址平展存储模型:指向地址0 0位置位置n段式存储模型:指向线性地址空间不同的段段式存储模型:指向线性地址空间不同的段n实地址存储模型:保存段基地址的高实地址存储模型:保存段基地址的高1616位位段选择器段选择器段选择器段选择器段基地址段基地址段基地址段基地址数据或指令数据或指令数据或指令数据或指令段寄存器段寄存器段描述符段描述符主存空间主存空间第第1 1章章 汇编语言基础汇编语言基础28285.Win32的虚的虚拟地址分配地址分配应用程序起始地址应用程序起始地址第第1 1章章 汇编语言基础汇编语言基础29291.2.4 程序程序设计语言言机器语言(机器语言(Machine LanguageMachine Language)n底层的计算机语言,对应机器指令底层的计算机语言,对应机器指令n形成目标(代码)程序形成目标(代码)程序汇编语言(汇编语言(Assembly LanguageAssembly Language)n将机器指令用助记符号代替而形成的一种语言将机器指令用助记符号代替而形成的一种语言n本质上是机器语言本质上是机器语言n需要汇编程序需要汇编程序“汇编汇编”(翻译翻译)高级语言(高级语言(High Level LanguageHigh Level Language)n面向问题的程序设计语言面向问题的程序设计语言n需要需要“编译编译”或或“解释解释”后执行后执行指令是处理器的母语指令是处理器的母语mov eax,100add eax,256第第1 1章章 汇编语言基础汇编语言基础3131汇编语言和高言和高级语言的比言的比较汇编语言与处理器密切相关,可移植性较差汇编语言与处理器密切相关,可移植性较差n高级语言与具体计算机无关,便于移植高级语言与具体计算机无关,便于移植汇编语言功能有限、涉及硬件细节,编写繁琐困难汇编语言功能有限、涉及硬件细节,编写繁琐困难n高级语言功能强大,语法自然,容易掌握和应用高级语言功能强大,语法自然,容易掌握和应用汇汇编编语语言言的的优优势势:直直接接、有有效效地地控控制制硬硬件件,容容易易产产生生运行速度快、指令序列短小的高效率目标程序运行速度快、指令序列短小的高效率目标程序n高高级级语语言言不不易易直直接接控控制制计计算算机机的的各各种种操操作作,编编译译程序产生的目标程序往往比较庞大程序产生的目标程序往往比较庞大混合编程、取长补短混合编程、取长补短学习汇编语言的意义学习汇编语言的意义第第1 1章章 汇编语言基础汇编语言基础3232汇编语言的主要言的主要应用用场合合程程序序要要具具有有较较快快的的执执行行时时间间,或或者者只只能能占占用用较较小的存储容量小的存储容量程程序序与与计计算算机机硬硬件件密密切切相相关关,程程序序要要直直接接、有有效地控制硬件效地控制硬件大型软件需要提高性能、优化处理的部分大型软件需要提高性能、优化处理的部分没没有有合合适适的的高高级级语语言言、或或只只能能采采用用汇汇编编语语言言的的时候时候分分析析具具体体系系统统尤尤其其是是该该系系统统的的低低层层软软件件、加加密密解密软件、分析和防治计算机病毒等等解密软件、分析和防治计算机病毒等等第第1 1章章 汇编语言基础汇编语言基础33331.2.5 软件系件系统WindowsWindows操作系统平台操作系统平台MASM 6.15MASM 6.15汇编程序汇编程序硬件硬件BIOS应用程序应用程序*.ASM,*.OBJ*.LST,*.EXE操作系统操作系统编辑程序,汇编程序编辑程序,汇编程序连接程序,调试程序连接程序,调试程序第第1 1章章 汇编语言基础汇编语言基础34341.操作系操作系统(Operating System)操作系统管理着系统的软硬件资源操作系统管理着系统的软硬件资源n为用户提供使用机器的交互界面为用户提供使用机器的交互界面n为程序员使用资源提供可供调用的驱动程序为程序员使用资源提供可供调用的驱动程序n为其他程序构建稳定的运行平台为其他程序构建稳定的运行平台3232位控制台环境位控制台环境%SystemRoot%system32cmd.exe%SystemRoot%system32cmd.exe1616位模拟位模拟DOSDOS环境环境%SystemRoot%%SystemRoot%32位控制台环境和位控制台环境和16位模拟位模拟DOS环境环境两种基本功能和界面一致,但本质不同两种基本功能和界面一致,但本质不同第第1 1章章 汇编语言基础汇编语言基础35352.汇编程序(程序(Assembler)将汇编语言源程序转换为机器代码将汇编语言源程序转换为机器代码微软宏汇编程序微软宏汇编程序MASMMASMnMASM 6.11MASM 6.11是最后一个独立发行的是最后一个独立发行的MASMMASM软件包软件包 nMASM MASM 6.156.15来来自自Visual Visual C+6.0C+6.0,支支持持到到Pentium Pentium 4 4的的SSE2SSE2指令系统指令系统nVisual C+.NET 2005Visual C+.NET 2005提供提供n支持支持SSE3SSE3指令的指令的MASM 8.0MASM 8.0n支持支持6464位指令的位指令的ML64.EXEML64.EXE程序程序汇编语言程序与汇编程序汇编语言程序与汇编程序是两个是两个不同的概念不同的概念第第1 1章章 汇编语言基础汇编语言基础36363.文件路径文件路径目录目录(DirectoryDirectory):管理磁盘上文件的):管理磁盘上文件的文件夹文件夹路径路径(PathPath):分区):分区:根目录根目录 子目录子目录 文件名文件名n绝对路径:文件的完整路径绝对路径:文件的完整路径d:masmprogseg0101.asmd:masmprogseg0101.asmn相对路径:相对当前目录的路径相对路径:相对当前目录的路径progseg0101.asmprogseg0101.asm.binml.exe.binml.exe转换分区转换分区d:d:进入进入当前目录当前目录(Current DirectoryCurrent Directory)cd masmcd masm第第1 1章章 汇编语言基础汇编语言基础37374.内部命令和外部命令内部命令和外部命令内内部部命命令令:3232位位控控制制台台或或DOSDOS环环境境本本身身具具有有的的、直接支持的命令,即驻留主存的命令直接支持的命令,即驻留主存的命令n使用方法:使用方法:命令关键字命令关键字 参数选项参数选项外外部部命命令令:与与其其他他可可执执行行文文件件一一样样,以以文文件件形形式保存在磁盘上的命令式保存在磁盘上的命令n执行方法:执行方法:路径路径 文件名文件名 参数参数路径搜索顺序路径搜索顺序n先先当前目录当前目录n后后搜索路径搜索路径n内部命令内部命令PATHPATH查看和设置当前的搜索路径查看和设置当前的搜索路径你所执行的命令你所执行的命令不是内部或外部命令,不是内部或外部命令,也不是可运行的程序或批处理文件也不是可运行的程序或批处理文件 第第1 1章章 汇编语言基础汇编语言基础38385.进入入MASM目目录的批的批处理文件理文件为便于进入为便于进入MASMMASM目录,可创建目录,可创建批处理文件批处理文件n3232位位WindowsWindows控制台:控制台:WIN32.BATWIN32.BATn1616位位DOSDOS环境:环境:DOS16.BATDOS16.BAT为便于访问其中文件,增加搜索路径:为便于访问其中文件,增加搜索路径:set PATH=D:MASM;D:MASMBIN;%PATH%set PATH=D:MASM;D:MASMBIN;%PATH%在在Windows资源管理器打开文件夹资源管理器打开文件夹“D:MASM”,双击该批处理文件,就可以进入双击该批处理文件,就可以进入MASM环境环境第第1 1章章 汇编语言基础汇编语言基础40401.3 汇编语言程序格式言程序格式程序用程序设计语言编写,由指令构成程序用程序设计语言编写,由指令构成指令由操作码和操作数(地址码)组成指令由操作码和操作数(地址码)组成操作码(操作码(OpcodeOpcode)表明处理器执行的操作)表明处理器执行的操作n例如数据传送、加法运算、跳转等操作。例如数据传送、加法运算、跳转等操作。操作数(操作数(OperandOperand)是参与操作的数据对象)是参与操作的数据对象n主要以寄存器名或地址形式指明数据的来源主要以寄存器名或地址形式指明数据的来源n通常的指令都有一个或两个操作数通常的指令都有一个或两个操作数n有些指令无操作数,个别指令有有些指令无操作数,个别指令有3 3或或4 4个操作数个操作数n多数操作数需要显式指明,有些操作数隐含使用多数操作数需要显式指明,有些操作数隐含使用第第1 1章章 汇编语言基础汇编语言基础41411.3.1 指令的代指令的代码格式(格式(Instruction Format)IA-32IA-32处理器采用可变长度指令格式处理器采用可变长度指令格式操作码操作码n可选的指令前缀(用于扩展指令功能)可选的指令前缀(用于扩展指令功能)n1 13 3字节的主要操作码字节的主要操作码操作数操作数n可选的寻址方式域(包括可选的寻址方式域(包括ModR/MModR/M和和SIBSIB字段)字段)n可选的位移量可选的位移量n可选的立即数可选的立即数第第1 1章章 汇编语言基础汇编语言基础4242使用最多、最基本的数据使用最多、最基本的数据传送指令送指令传送指令的助记符:传送指令的助记符:MOVMOV(取自(取自MoveMove)n将数据从一个位置传送到另一个位置将数据从一个位置传送到另一个位置n类似高级语言的赋值语句类似高级语言的赋值语句mov dest,srcmov dest,src;源操作数源操作数srcsrc:被传送的数据或数据所在的位置:被传送的数据或数据所在的位置;目的操作数目的操作数destdest:数据将要传送到的位置:数据将要传送到的位置mov eax,ebx;机器代码:机器代码:8B C3mov eax,ebx;机器代码:机器代码:8B 03mov eax,ebx+esi*4+80h;机器代码:机器代码:8B 84 B3 80 00 00 00功能演示功能演示第第1 1章章 汇编语言基础汇编语言基础44441.3.2 语句格式句格式源程序由语句组成源程序由语句组成一个语句常占一行(一个语句常占一行(MASMMASM有续行符有续行符“”)一个语句不超过一个语句不超过132132个字符,个字符,4 4个部分个部分执行性语句执行性语句:表达处理器指令(硬指令):表达处理器指令(硬指令)标号标号:硬指令助记符硬指令助记符 操作数操作数,操作数操作数 ;注释注释说明性语句说明性语句:表达伪指令,控制汇编方式:表达伪指令,控制汇编方式名字名字 伪指令助记符伪指令助记符 参数参数,参数参数,;,;注释注释这是这是MASM语法,但具有一般性语法,但具有一般性第第1 1章章 汇编语言基础汇编语言基础45451.标号与名字号与名字标号标号:执行性语句中:执行性语句中n冒号分隔冒号分隔n表示处理器指令在主存中的逻辑地址表示处理器指令在主存中的逻辑地址n指示分支、循环等程序的目的地址指示分支、循环等程序的目的地址名字名字:说明性语句中:说明性语句中n空格或制表符分隔空格或制表符分隔n变量名、段名、子程序名等变量名、段名、子程序名等n反映变量、段和子程序等的逻辑地址反映变量、段和子程序等的逻辑地址标号和名字是用户自定义的标识符标号和名字是用户自定义的标识符第第1 1章章 汇编语言基础汇编语言基础4646标识符(符(Identifier)最最多多由由3131个个字字母母、数数字字及及规规定定的的特特殊殊符符号号(如如 _ _、$、?、)组成,)组成,不能以数字开头不能以数字开头一个源程序中,用户定义的每个标识符一个源程序中,用户定义的每个标识符必须唯一必须唯一不能是不能是汇编程序采用的汇编程序采用的保留字保留字保保留留字字(Reserved Reserved WordWord)是是编编程程语语言言本本身身需需要要使使用用的各种具有特定含义的标识符、也称为关键字的各种具有特定含义的标识符、也称为关键字n硬指令助记符:硬指令助记符:MOVMOVn伪指令助记符:伪指令助记符:BYTEBYTEn操作符:操作符:OFFSETOFFSETn寄存器名:寄存器名:EAXEAX取名原则类似高级语言取名原则类似高级语言但默认不区别大小写字母但默认不区别大小写字母第第1 1章章 汇编语言基础汇编语言基础47472.助助记符符助记符是帮助记忆指令功能的符号助记符是帮助记忆指令功能的符号n硬指令助记符表示处理器指令硬指令助记符表示处理器指令n伪指令助记符表达一个汇编命令伪指令助记符表达一个汇编命令处理器指令示例:传送指令处理器指令示例:传送指令 MOVMOV伪指令示例:字节变量定义伪指令示例:字节变量定义n助记符:助记符:BYTEBYTE (或(或DBDB)n功功能能:在在主主存存中中占占用用若若干干的的存存储储空空间间,用用于于保保存存变量值,该变量以字节为单位存取变量值,该变量以字节为单位存取msg byte Hello,Assembly!,13,10,0第第1 1章章 汇编语言基础汇编语言基础48483.操作数和参数操作数和参数处理器指令的操作数:表示参与操作的对象处理器指令的操作数:表示参与操作的对象n具体的常量具体的常量n保存在寄存器的数据保存在寄存器的数据n保存在存储器中的变量保存在存储器中的变量n逗号前常是目的操作数,逗号后常是源操作数逗号前常是目的操作数,逗号后常是源操作数伪指令的参数:伪指令的参数:n常量、变量名、表达式等常量、变量名、表达式等n可以有多个,参数之间用逗号分隔可以有多个,参数之间用逗号分隔msg byte Hello,Assembly!,13,10,0mov eax,offset msg第第1 1章章 汇编语言基础汇编语言基础49494.注注释和分隔符和分隔符语句中分号后的内容是注释语句中分号后的内容是注释n对指令或程序进行说明对指令或程序进行说明n汇编程序不对它们做任何处理汇编程序不对它们做任何处理n注释利于阅读,应养成书写注释的好习惯注释利于阅读,应养成书写注释的好习惯语句的语句的4 4个组成部分要用分隔符分开个组成部分要用分隔符分开n标号后的标号后的冒号冒号n注释前的注释前的分号分号n操作数间和参数间的操作数间和参数间的逗号逗号n分隔其他部分采用一个或多个分隔其他部分采用一个或多个空格空格或或制表符制表符n注释使用英文或中文均可注释使用英文或中文均可分隔符都是英文标点分隔符都是英文标点良好的语句格式有利于编程良好的语句格式有利于编程第第1 1章章 汇编语言基础汇编语言基础50501.3.3 源程序框架源程序框架;eg0000.asm in Windows Console;eg0000.asm in Windows Consoleinclude io32.incinclude io32.inc;包含包含3232位输入输出文件位输入输出文件.data.data;定义数据段定义数据段;数据定义数据定义(数据待填)(数据待填).code.code;定义代码段定义代码段start:start:;程序执行起始位置程序执行起始位置;主程序主程序(指令待填)(指令待填)exit 0exit 0;程序正常执行结束程序正常执行结束;子程序子程序(指令待填)(指令待填)end startend start;汇编结束汇编结束第第1 1章章 汇编语言基础汇编语言基础51511.包含包含伪指令指令INCLUDE将将常常用用的的常常量量定定义义、过过程程说说明明、共共享享的的子子程程序序库库等等内内容容进进行行声声明明(相相当当于于C C和和C+C+语语言言中中,包包含头文件的作用)含头文件的作用)IO32.INCIO32.INC是配合本书的包含文件是配合本书的包含文件前前3 3个语句:个语句:.686.686;32;32位指令位指令.model flat,stdcall.model flat,stdcall;选择平展模型,标准调用规范选择平展模型,标准调用规范 option casemap:noneoption casemap:none;告知告知MASMMASM区分用户定义标识符的大小写区分用户定义标识符的大小写第第1 1章章 汇编语言基础汇编语言基础52522.段的段的简化定化定义数据段定义伪指令数据段定义伪指令.DATA.DATA创建一个数据段创建一个数据段代码段定义伪指令代码段定义伪指令.CODE.CODE创建一个代码段创建一个代码段堆栈段由堆栈段由WindowsWindows维护,用户不必设置维护,用户不必设置程序开始执行的位置程序开始执行的位置n应用一个标号(例如:应用一个标号(例如:STARTSTART)n汇编结束汇编结束ENDEND指令的参数指令的参数应用程序执行结束应用程序执行结束n语句语句“EXIT 0”EXIT 0”将控制权交还操作系统将控制权交还操作系统n提供给操作系统一个返回代码提供给操作系统一个返回代码n通常用通常用0 0表示执行正确表示执行正确源程序汇编结束源程序汇编结束ENDEND语句语句执行结束执行结束汇编结束汇编结束第第1 1章章 汇编语言基础汇编语言基础5353 例例1-1 信息信息显示程序示程序在数据段给出这个字符串形式的信息:在数据段给出这个字符串形式的信息:;数据段数据段msgmsgbyte Hello,Assembly!,13,10,0byte Hello,Assembly!,13,10,0;定义要显示的字符串定义要显示的字符串在代码段编写显示字符串的程序:在代码段编写显示字符串的程序:;代码段代码段mov eax,offset msgmov eax,offset msg;指定字符串的偏移地址指定字符串的偏移地址call dispmsgcall dispmsg;调用调用I/OI/O子程序显示信息子程序显示信息完整程序完整程序第第1 1章章 汇编语言基础汇编语言基础56563.输入入输出子程序出子程序库汇编程序通常不提供任何函数或程序库汇编程序通常不提供任何函数或程序库必须利用操作系统的编程资源必须利用操作系统的编程资源本书配套键盘输入和显示器输出的本书配套键盘输入和显示器输出的I/OI/O子程序子程序含含IO32.INCIO32.INC和和IO32.LIBIO32.LIB,需要包含文件声明,需要包含文件声明源程序文件开始使用包含命令声明源程序文件开始使用包含命令声明INCLUDE IO32.INCINCLUDE IO32.INC子程序调用方法子程序调用方法MOV EAX,MOV EAX,入口参数入口参数CALL CALL 子程序名子程序名子程序名子程序名 DISPMSGDISPMSG入口参数入口参数 EAXEAX字符串地址字符串地址功能说明功能说明 显示字符串(以显示字符串(以0 0结尾)结尾)输入子程序输入子程序输出子程序输出子程序第第1 1章章 汇编语言基础汇编语言基础59591.3.4 开开发过程程第第1 1章章 汇编语言基础汇编语言基础60601.开开发软件件抽抽取取MASM MASM 6.116.11和和Visual Visual C+C+6.06.0集集成成开开发发环环境境中中有有关文件构造基本开发软件包关文件构造基本开发软件包nMASMMASM主目录:主目录- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 基础
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文