《汇编语言基础ppt课件》由会员分享,可在线阅读,更多相关《汇编语言基础ppt课件(79页珍藏版)》请在金锄头文库上搜索。
1、第第1 1章章 汇编言语根底汇编言语根底1.1 1.1 英特尔英特尔80x8680x86处置器处置器1.2 1.2 个人计算机系统个人计算机系统1.3 1.3 汇编言语程序格式汇编言语程序格式第第1 1章章 汇编言语根底汇编言语根底了解软硬件开发环境了解软硬件开发环境熟习通用存放器和存储器组织熟习通用存放器和存储器组织掌握汇编言语的掌握汇编言语的语句格式、程序框架和开发方法语句格式、程序框架和开发方法第第1 1章章 汇编语言基础汇编语言基础Intel 80861.1 1.1 英特尔英特尔80x8680x86处置器处置器80386803868048680486奔腾奔腾奔腾奔腾II奔腾奔腾4802
2、868028680868086奔腾奔腾III酷睿多核系列酷睿多核系列40044004IA-32处置器处置器16位位80x86处置器处置器奔腾多核系列奔腾多核系列Intel 64处置器处置器第第1 1章章 汇编语言基础汇编语言基础1.1.1 161.1.1 16位位80x8680x86处置器处置器1616位构造处置器位构造处置器8086/80888086/8088指令系统提供指令系统提供1616位根本指令集位根本指令集80186/8018880186/80188添加假设干条适用指令添加假设干条适用指令 80868086的任务方式是实方式的任务方式是实方式Real ModeReal Mode802
3、8680286添加维护方式添加维护方式Protected ModeProtected Mode8028680286引入了系统指令引入了系统指令为操作系统等中心程序提供处置器控制功能为操作系统等中心程序提供处置器控制功能指令系指令系统、指令集、指令集Instruction Set第第1 1章章 汇编语言基础汇编语言基础1.1.2 IA-321.1.2 IA-32处置器处置器8038680386引入英特尔引入英特尔3232位指令集构造位指令集构造ISAISA兼容原兼容原1616位位8028680286指令系统指令系统全面晋级为全面晋级为3232位位提提供供虚虚拟拟80868086任任务务方方式式V
4、irtual Virtual 8086 8086 ModeMode8048680486集成浮点处置单元支持浮点指令集成浮点处置单元支持浮点指令PentiumPentium系列系列陆续添加假设干整数指令、完善浮点指令陆续添加假设干整数指令、完善浮点指令添加一系列多媒体指令添加一系列多媒体指令SIMDSIMD指令指令IA-32 Intel Architecture-32 第第1 1章章 汇编语言基础汇编语言基础1.1.3 Intel 641.1.3 Intel 64处置器处置器引入引入6464位英特尔指令集构造位英特尔指令集构造兼容兼容3232位指令系统位指令系统新增新增6464位任务方式位任务方
5、式继续丰富多媒体指令继续丰富多媒体指令处置器集成多核处置器集成多核Multi-coreMulti-core技术技术处置器置器进入多核入多核时代代Many core第第1 1章章 汇编语言基础汇编语言基础1.2 1.2 个人计算机系统个人计算机系统硬件硬件HardwareHardware:物理设备:物理设备软件软件SoftwareSoftware:程序和文档:程序和文档运算器运算器 控制器控制器存放器组存放器组 主存储器主存储器 总线总线输入输出接口电路输入输出接口电路外部设备外部设备 软件软件微处置器微处置器微型计算机微型计算机微型计算机系统微型计算机系统第第1 1章章 汇编语言基础汇编语言基
6、础1.2.1 1.2.1 硬件组成硬件组成I/O接接口口主存储器主存储器系统总线系统总线CPU存放器存放器控制器控制器运算器运算器辅助存储器辅助存储器输入设备输入设备输出设备输出设备汇编言言语程序程序员将硬件将硬件笼统为:存放器、存存放器、存储器地址和器地址和输入入输出地址出地址第第1 1章章 汇编语言基础汇编语言基础1.2.2 1.2.2 存放器存放器RegisterRegister处置器内部的高速存储单元处置器内部的高速存储单元用于暂时存放程序执行过程中的代码和数据用于暂时存放程序执行过程中的代码和数据透明存放器透明存放器对运用人员不可见、不能编程直接控制对运用人员不可见、不能编程直接控制
7、可编程可编程ProgrammableProgrammable存放器存放器具有援用称号、供编程运用具有援用称号、供编程运用通用存放器通用存放器General-Purpose RegisterGeneral-Purpose Register 具有多种用途具有多种用途数量较多、运用频度较高数量较多、运用频度较高公用存放器公用存放器各自只用于特定目的各自只用于特定目的第第1 1章章 汇编语言基础汇编语言基础IA-32IA-32常用存放器常用存放器8个个32位通用存放器位通用存放器6个个16位段存放器位段存放器1个个32位标志存放器位标志存放器1个个32位指令指针位指令指针第第1 1章章 汇编语言基础汇
8、编语言基础1. 1. 通用存放器通用存放器处置器最常运用的整数通用存放器处置器最常运用的整数通用存放器可用于保管整数数据、地址等可用于保管整数数据、地址等 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既是一个整体既是一个
9、整体又可独立运用又可独立运用第第1 1章章 汇编语言基础汇编语言基础通用存放器的称号通用存放器的称号E EAXAXAccumulatorAccumulator累加器累加器E EBXBXBaseBase基址寄存器基址寄存器E ECXCXCounterCounter计数器计数器E EDXDXDataData数据寄存器数据寄存器E ESISISource IndexSource Index源变址寄存器源变址寄存器E EDIDIDestination IndexDestination Index目的变址寄存器目的变址寄存器E EBPBPBase PointerBase Pointer基址指针基址指针E
10、 ESPSPStack PointerStack Pointer堆栈指针堆栈指针第第1 1章章 汇编语言基础汇编语言基础2. 2. 标志存放器标志存放器标志标志FlagFlag反映指令执行结果或控制指令执行方式反映指令执行结果或控制指令执行方式用一个或多个二进制位表示一种标志用一个或多个二进制位表示一种标志用用0 0和和1 1的不同组合表达标志的不同形状的不同组合表达标志的不同形状80868086支持支持1616位标志存放器位标志存放器FLAGSFLAGSIA-32IA-32处置器构成处置器构成3232位位EFLAGSEFLAGS标志存放器标志存放器形状标志:记录指令执行结果的辅助信息形状标志
11、:记录指令执行结果的辅助信息控制标志:方向标志控制标志:方向标志DFDF,仅用于串操作指令,仅用于串操作指令系系统统标标志志:控控制制操操作作系系统统或或中中心心管管理理程程序序的的操操作方式作方式表示表示图第第1 1章章 汇编语言基础汇编语言基础处置器最根本的标志:形状标志处置器最根本的标志:形状标志用来记录指令执行结果的辅助信息用来记录指令执行结果的辅助信息加减运算和逻辑运算指令主要设置它们加减运算和逻辑运算指令主要设置它们其他有些指令的执行也会相应地设置它们其他有些指令的执行也会相应地设置它们处处置置器器主主要要运运用用其其中中5 5个个构构成成各各种种条条件件,分分支支指令判别这些条件
12、实现程序分支指令判别这些条件实现程序分支 8086的标志的标志OF1115 12DF10IF9TF8SF7ZF605AF403PF211CF0第第1 1章章 汇编语言基础汇编语言基础3. 3. 指令指针存放器指令指针存放器EIPEIP保管将要执行的指令在主存的存储器地址保管将要执行的指令在主存的存储器地址EIPEIP是公用存放器是公用存放器顺顺序序执执行行时时自自动动增增量量加加上上该该指指令令的的字字节节数数,指向下一条指令指向下一条指令分分支支、调调用用等等操操作作时时执执行行控控制制转转移移指指令令修修正正,引起程序转移到指定的指令执行引起程序转移到指定的指令执行出现中断或异常时被处置器
13、赋值而相应改动出现中断或异常时被处置器赋值而相应改动3116 15IP0EIP第第1 1章章 汇编语言基础汇编语言基础4. 4. 段存放器段存放器段段SegmentSegment是是用用于于安安排排相相关关代代码码或或数数据据的的一个主存区域一个主存区域段存放器阐明某个段在主存中的位置段存放器阐明某个段在主存中的位置6 6个个1616位段存放器:位段存放器:CS DS SS ES FS GSCS DS SS ES FS GS运用程序主要涉及运用程序主要涉及3 3类段类段代码段代码段Code SegmentCode Segment存放程序中指令代码存放程序中指令代码 数据段数据段Data Seg
14、mentData Segment存放当前运转程序所用数据存放当前运转程序所用数据堆栈段堆栈段Stack SegmentStack Segment指明程序运用的堆栈区域指明程序运用的堆栈区域主存空间主存空间指令段指令段数据段数据段堆栈段堆栈段程程序序第第1 1章章 汇编语言基础汇编语言基础1.2.3 1.2.3 存储器组织存储器组织主存储器容量很大,被划分成许多存储单元主存储器容量很大,被划分成许多存储单元每个存储单元被编排一个号码每个存储单元被编排一个号码即存储单元地址即存储单元地址称为存储器地址称为存储器地址Memory AddressMemory Address每个存储单元以字节为根本存储
15、单位每个存储单元以字节为根本存储单位即字节编址即字节编址Byte AddressableByte Addressable一个字节一个字节ByteByte等于等于8 8个二进制位个二进制位BitBit二进制位是计算机存储信息的最小单位二进制位是计算机存储信息的最小单位1616位位2 2个字节构成一个字个字节构成一个字WordWord3232位位4 4个个字字节节构构成成一一个个双双字字Double Double WordWord表示表示图第第1 1章章 汇编语言基础汇编语言基础1. 1. 存储模型存储模型物理存储器以字节为根本存储单位物理存储器以字节为根本存储单位每个存储单元被分配一个独一的地址
16、每个存储单元被分配一个独一的地址这个地址就是物理地址这个地址就是物理地址物物理理地地址址空空间间从从0 0开开场场顺顺序序编编排排,直直四四处处置置器器支支持持的的最大存储单元最大存储单元80868086处置器支持处置器支持1MB1MB存储器:存储器:00000H00000HFFFFFHFFFFFHIA-32IA-32处置器支持处置器支持4GB4GB存储器:存储器:00000000H00000000HFFFFFFFFHFFFFFFFFH操操作作系系统统利利用用存存储储管管理理单单元元进进展展存存储储管管理理,程程序序并并不不直接寻址物理存储器直接寻址物理存储器IA-32IA-32处置器提供处置
17、器提供3 3种存储模型,用于程序访问存储器种存储模型,用于程序访问存储器表示表示图第第1 1章章 汇编语言基础汇编语言基础IA-32IA-32处置器的存储模型处置器的存储模型1 1平展存储模型平展存储模型Flat Memory ModelFlat Memory Model存储器是一个延续的地址空间:线性地址空间存储器是一个延续的地址空间:线性地址空间IA-32IA-32处置器支持处置器支持4GB4GB容量线性地址空间容量线性地址空间2 2段式存储模型段式存储模型Segmented Memory ModelSegmented Memory Model存储器由一组独立的地址空间:段存储器由一组独立
18、的地址空间:段SegmentSegment每个段都可以到达每个段都可以到达4GB4GB容量容量在处置器内部,一切的段都被映射到线性地址空间在处置器内部,一切的段都被映射到线性地址空间3 3实地址存储模型实地址存储模型Real-address Memory ModelReal-address Memory Model80868086处置器的存储模型处置器的存储模型段式存储模型的特例段式存储模型的特例线性地址空间最大为线性地址空间最大为1MB1MB容量,段最大为容量,段最大为64KB64KB第第1 1章章 汇编语言基础汇编语言基础2. 2. 任务方式任务方式1 1维护方式维护方式Protected
19、 ModeProtected ModeIA-32IA-32处置器固有的任务形状处置器固有的任务形状具有强大的段页式存储管理和特权与维护才干具有强大的段页式存储管理和特权与维护才干运用全部运用全部3232条地址总线,可寻址条地址总线,可寻址4GB4GB物理存储器物理存储器运用平展或段式存储模型运用平展或段式存储模型利用虚拟利用虚拟80868086方式支持实地址方式支持实地址80868086软件软件2 2实地址方式实地址方式Real-address ModeReal-address Mode可以进展可以进展3232位处置的快速位处置的快速80868086只能寻址只能寻址1MB1MB物理存储器空间,
20、每个段不超越物理存储器空间,每个段不超越64KB64KB可以运用可以运用3232位存放器、位存放器、3232位操作数和位操作数和3232位寻址方式位寻址方式只能支持实地址存储模型只能支持实地址存储模型3 3系统管理方式系统管理方式System Management ModeSystem Management Mode实现供节能和系统平安管理实现供节能和系统平安管理第第1 1章章 汇编语言基础汇编语言基础3. 3. 逻辑地址逻辑地址Logical AddressLogical Address在在处置器内部、程序置器内部、程序员编程程时采用的地址采用的地址逻辑地址段基地址地址段基地址偏移地址偏移地
21、址段基地址在主存中的起始地址段基地址在主存中的起始地址偏移地址偏移地址间隔段基地址的位移量隔段基地址的位移量某某个个存存储单元元可可以以有有多多个个逻辑地地址址,但但只只需需一一个独一的物理地址个独一的物理地址逻辑逻辑地址地址地址地址线线性地址性地址性地址性地址物理地址物理地址物理地址物理地址编程运用编程运用处置器转换处置器转换地址总线输出地址总线输出表示表示图第第1 1章章 汇编语言基础汇编语言基础根本段的逻辑地址根本段的逻辑地址代码段代码段Code SegmentCode Segment段基地址:代码段存放器段基地址:代码段存放器CSCS指示指示偏移地址:指令指针存放器偏移地址:指令指针存
22、放器EIPEIP保管保管数据段数据段Data SegmentData Segment段基地址:数据段存放器段基地址:数据段存放器DSDS指示指示有有时时也也用用附附加加段段存存放放器器ESES,段段存存放放器器FSFS和和GSGS指指示示偏移地址:各种存储器寻址方式计算出来偏移地址:各种存储器寻址方式计算出来堆栈段堆栈段Stack SegmentStack Segment段基地址:堆栈段存放器段基地址:堆栈段存放器SSSS指示指示偏移地址:堆栈指针存放器偏移地址:堆栈指针存放器ESPESP保管保管主存空间主存空间指令段指令段数据段数据段堆栈段堆栈段程程序序第第1 1章章 汇编语言基础汇编语言基
23、础4. 4. 段选择器段选择器1616位段存放器保管位段存放器保管1616位段选择器位段选择器段选择器指向段选择器指向6464位段描画符位段描画符DescriptorDescriptor段描画符包括段基地址段描画符包括段基地址平展存储模型:指向地址平展存储模型:指向地址0 0位置位置段式存储模型:指向线性地址空间不同的段段式存储模型:指向线性地址空间不同的段实地址存储模型:保管段基地址的高实地址存储模型:保管段基地址的高1616位位段段段段选择选择器器器器段基地址段基地址段基地址段基地址数据或指令数据或指令数据或指令数据或指令段存放器段存放器段描画符段描画符主存空间主存空间第第1 1章章 汇编
24、语言基础汇编语言基础平展模型平展模型平平展展存存储储模模型型是是分分段段存存储储模模型型的的一一种种特例特例 一一切切的的段段都都有有一一样样的的段段基基地地址址基基地地址址为为0 0,都都重重合合于于同同一一个个线线性性地地址址空空间间 IA-32IA-32微微处处置置器器上上运运转转的的运运用用程程序序,广广泛采用平展存储模型。泛采用平展存储模型。第第1 1章章 汇编语言基础汇编语言基础分页机制分页机制不不采采用用分分页页管管理理机机制制,线线性性地地址址就就是是对应的物理地址空间对应的物理地址空间 采采用用了了分分页页管管理理机机制制,那那么么要要将将线线性性空间地址映射到物理地址空间地
25、址映射到物理地址 当当微微处处置置器器既既采采用用段段式式存存储储管管理理,又又采采用用页页式式存存储储管管理理就就是是段段页页式式存存储储管管理方式理方式 第第1 1章章 汇编语言基础汇编语言基础分页分页线性地址空间线性地址空间页页物理地址物理地址物理地址空间线性地址线性地址页目录页目录 页表页表 偏移量偏移量 入口入口页目录页目录页表页表入口入口 段段1 1 段段2 2 段段3 3页页+第第1 1章章 汇编语言基础汇编语言基础存储器模型与任务方式存储器模型与任务方式 维护方式维护方式任务方式任务方式实方式实方式虚拟虚拟80868086方式方式平展模型平展模型存储器模型存储器模型实地址模型实
26、地址模型分段模型分段模型段页模型段页模型第第1 1章章 汇编语言基础汇编语言基础5. Win325. Win32的虚拟地址分配的虚拟地址分配运用程序起始地址运用程序起始地址第第1 1章章 汇编语言基础汇编语言基础1.2.4 1.2.4 程序设计言语程序设计言语机器言机器言语Machine LanguageMachine Language底底层的的计算机言算机言语,对应机器指令机器指令构成目的代构成目的代码程序程序汇编言言语Assembly LanguageAssembly Language将机器指令用助将机器指令用助记符号替代而构成的一种言符号替代而构成的一种言语本本质上是机器言上是机器言语需
27、求需求汇编程序程序“汇编( (翻翻译) )高高级言言语High Level LanguageHigh Level Language面向面向问题的程序的程序设计言言语需求需求“编译或或“解解释后后执行行指令是指令是处处置器的母置器的母语语mov eax,100add eax,256第第1 1章章 汇编语言基础汇编语言基础汇编言语和高级言语的比较汇编言语和高级言语的比较汇编言语与处置器亲密相关,可移植性较差汇编言语与处置器亲密相关,可移植性较差高级言语与详细计算机无关,便于移植高级言语与详细计算机无关,便于移植汇编言语功能有限、涉及硬件细节,编写繁琐困难汇编言语功能有限、涉及硬件细节,编写繁琐困难
28、高级言语功能强大,语法自然,容易掌握和运用高级言语功能强大,语法自然,容易掌握和运用汇汇编编言言语语的的优优势势:直直接接、有有效效地地控控制制硬硬件件,容容易易产产生生运转速度快、指令序列短小的高效率目的程序运转速度快、指令序列短小的高效率目的程序高高级级言言语语不不易易直直接接控控制制计计算算机机的的各各种种操操作作,编编译译程程序序产生的目的程序往往比较庞大产生的目的程序往往比较庞大混合混合编编程、取程、取长补长补短短学习汇编言语的意义学习汇编言语的意义第第1 1章章 汇编语言基础汇编语言基础汇编言语的主要运用场所汇编言语的主要运用场所程程序序要要具具有有较较快快的的执执行行时时间间,或
29、或者者只只能能占占用用较较小的存储容量小的存储容量程程序序与与计计算算机机硬硬件件亲亲密密相相关关,程程序序要要直直接接、有有效地控制硬件效地控制硬件大型软件需求提高性能、优化处置的部分大型软件需求提高性能、优化处置的部分没没有有适适宜宜的的高高级级言言语语、或或只只能能采采用用汇汇编编言言语语的的时候时候分分析析详详细细系系统统尤尤其其是是该该系系统统的的低低层层软软件件、加加密密解密软件、分析和防治计算机病毒等等解密软件、分析和防治计算机病毒等等第第1 1章章 汇编语言基础汇编语言基础1.2.5 1.2.5 软件系统软件系统WindowsWindows操作系统平台操作系统平台MASM 6.
30、15MASM 6.15汇编程序汇编程序硬件硬件BIOS运用程序运用程序*.ASM, *.OBJ*.LST, *.EXE操作系统操作系统编辑程序,汇编程序编辑程序,汇编程序衔接程序,调试程序衔接程序,调试程序第第1 1章章 汇编语言基础汇编语言基础1. 1. 操作系统操作系统Operating SystemOperating System操作系统管理着系统的软硬件资源操作系统管理着系统的软硬件资源为用户提供运用机器的交互界面为用户提供运用机器的交互界面为程序员运用资源提供可供调用的驱动程序为程序员运用资源提供可供调用的驱动程序为其他程序构建稳定的运转平台为其他程序构建稳定的运转平台3232位控制
31、台环境位控制台环境%SystemRoot%system32cmd.exe%SystemRoot%system32cmd.exe1616位模拟位模拟DOSDOS环境环境%SystemRoot%system32command%SystemRoot%system32command32位控制台位控制台环环境和境和16位模位模拟拟DOS环环境境两种根本功能和界面一致,但本两种根本功能和界面一致,但本质质不同不同第第1 1章章 汇编语言基础汇编语言基础2. 2. 汇编程序汇编程序AssemblerAssembler将汇编言语源程序转换为机器代码将汇编言语源程序转换为机器代码微软宏汇编程序微软宏汇编程序MA
32、SMMASMMASM 6.11MASM 6.11是最后一个独立发行的是最后一个独立发行的MASMMASM软件包软件包 MASM MASM 6.156.15来来 自自 Visual Visual C+6.0C+6.0, 支支 持持 到到Pentium 4Pentium 4的的SSE2SSE2指令系统指令系统Visual C+.NET 2005Visual C+.NET 2005提供提供支持支持SSE3SSE3指令的指令的MASM 8.0MASM 8.0支持支持6464位指令的位指令的ML64.EXEML64.EXE程序程序汇编汇编言言语语程序与程序与汇编汇编程序程序是两个不同的概念是两个不同的概
33、念第第1 1章章 汇编语言基础汇编语言基础3. 3. 文件途径文件途径目录目录DirectoryDirectory:管理磁盘上文件的文件夹:管理磁盘上文件的文件夹途径途径PathPath:分区:分区:根目录根目录 子目录子目录 文件名文件名绝对途径:文件的完好途径绝对途径:文件的完好途径d:masmprogseg0101.asmd:masmprogseg0101.asm相对途径:相对当前目录的途径相对途径:相对当前目录的途径progseg0101.asmprogseg0101.asm.binml.exe.binml.exe转换分区转换分区d:d:进入当前目录进入当前目录Current Dire
34、ctoryCurrent Directorycd masmcd masm第第1 1章章 汇编语言基础汇编语言基础4. 4. 内部命令和外部命令内部命令和外部命令内内部部命命令令:3232位位控控制制台台或或DOSDOS环环境境本本身身具具有有的的、直接支持的命令,即驻留主存的命令直接支持的命令,即驻留主存的命令运用方法:命令关键字运用方法:命令关键字 参数选项参数选项外外部部命命令令:与与其其他他可可执执行行文文件件一一样样, ,以以文文件件方方式保管在磁盘上的命令式保管在磁盘上的命令执行方法:途径执行方法:途径 文件名文件名 参数参数途径搜索顺序途径搜索顺序先当前目录先当前目录后搜索途径后搜
35、索途径内部命令内部命令PATHPATH查看和设置当前的搜索途径查看和设置当前的搜索途径他所他所执行的命令行的命令不是内部或外部命令,不是内部或外部命令,也不是可运也不是可运转的程序或批的程序或批处置文件置文件 第第1 1章章 汇编语言基础汇编语言基础5. 5. 进入进入MASMMASM目录的批处置文件目录的批处置文件为便于进入为便于进入MASMMASM目录,可创建批处置文件目录,可创建批处置文件3232位位WindowsWindows控制台:控制台:WIN32.BATWIN32.BAT1616位位DOSDOS环境:环境:DOS16.BATDOS16.BAT为便于访问其中文件,添加搜索途径:为便
36、于访问其中文件,添加搜索途径:set PATH=D:MASM;D:MASMBIN;%PATH%set PATH=D:MASM;D:MASMBIN;%PATH%在在Windows资资源管理器翻开文件源管理器翻开文件夹夹“D:MASM,双双击该击该批批处处置文件,就可以置文件,就可以进进入入MASM环环境境第第1 1章章 汇编语言基础汇编语言基础1.3 1.3 汇编言语程序格式汇编言语程序格式程序用程序设计言语编写,由指令构成程序用程序设计言语编写,由指令构成指令由操作码和操作数地址码组成指令由操作码和操作数地址码组成操作码操作码OpcodeOpcode阐明处置器执行的操作阐明处置器执行的操作例如
37、数据传送、加法运算、跳转等操作。例如数据传送、加法运算、跳转等操作。操作数操作数OperandOperand是参与操作的数据对象是参与操作的数据对象主要以存放器名或地址方式指明数据的来源主要以存放器名或地址方式指明数据的来源通常的指令都有一个或两个操作数通常的指令都有一个或两个操作数有些指令无操作数,个别指令有有些指令无操作数,个别指令有3 3或或4 4个操作数个操作数多多数数操操作作数数需需求求显显式式指指明明,有有些些操操作作数数隐隐含含运运用用第第1 1章章 汇编语言基础汇编语言基础1.3.1 1.3.1 指令的代码格式指令的代码格式Instruction FormatInstructi
38、on FormatIA-32IA-32处置器采用可变长度指令格式处置器采用可变长度指令格式操作码操作码可选的指令前缀用于扩展指令功能可选的指令前缀用于扩展指令功能1 13 3字节的主要操作码字节的主要操作码操作数操作数可选的寻址方式域包括可选的寻址方式域包括ModR/MModR/M和和SIBSIB字段字段可选的位移量可选的位移量可选的立刻数可选的立刻数第第1 1章章 汇编语言基础汇编语言基础运用最多、最根本的数据传送指令运用最多、最根本的数据传送指令传送指令的助记符:传送指令的助记符:MOVMOV取自取自MoveMove将数据从一个位置传送到另一个位置将数据从一个位置传送到另一个位置类似高级言
39、语的赋值语句类似高级言语的赋值语句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章章 汇编语言基础汇编语言基础1.3.2 1.3.2 语句格式语句格式源程序由源程序由语句句组成成一个
40、一个语句常占一行句常占一行MASMMASM有有续行符行符“一个一个语句不超越句不超越132132个字符,个字符,4 4个部分个部分执行性行性语句:表达句:表达处置器指令硬指令置器指令硬指令标号号: : 硬指令助硬指令助记符符 操作数操作数, ,操作数操作数 ; ;注注释阐明性明性语句:表达句:表达伪指令,控制指令,控制汇编方式方式名字名字 伪指令助指令助记符符 参数参数, ,参数参数, ;, ;注注释这是是MASM语法,但具有普通性法,但具有普通性第第1 1章章 汇编语言基础汇编语言基础1. 1. 标号与名字标号与名字标号:执行性语句中标号:执行性语句中冒号分隔冒号分隔表示处置器指令在主存中的
41、逻辑地址表示处置器指令在主存中的逻辑地址指示分支、循环等程序的目的地址指示分支、循环等程序的目的地址名字:阐明性语句中名字:阐明性语句中空格或制表符分隔空格或制表符分隔变量名、段名、子程序名等变量名、段名、子程序名等反映变量、段和子程序等的逻辑地址反映变量、段和子程序等的逻辑地址标号和名字是用号和名字是用户自定自定义的的标识符符第第1 1章章 汇编语言基础汇编语言基础标识符标识符IdentifierIdentifier最最多多由由3131个个字字母母、数数字字及及规规定定的的特特殊殊符符号号如如 _ _、$ $、? ?、 组成,不能以数字开头组成,不能以数字开头一个源程序中,用户定义的每个标识
42、符必需独一一个源程序中,用户定义的每个标识符必需独一不能是汇编程序采用的保管字不能是汇编程序采用的保管字保保管管字字Reserved Reserved WordWord是是编编程程言言语语本本身身需需求求运运用用的各种具有特定含义的标识符、也称为关键字的各种具有特定含义的标识符、也称为关键字硬指令助记符:硬指令助记符: MOV MOV伪指令助记符:伪指令助记符: BYTE BYTE操作符:操作符: OFFSET OFFSET存放器名:存放器名: EAX EAX取名原那么取名原那么类似高似高级言言语但默但默许不区不区别大小写字母大小写字母第第1 1章章 汇编语言基础汇编语言基础2. 2. 助记符
43、助记符助记符是协助记忆指令功能的符号助记符是协助记忆指令功能的符号硬指令助记符表示处置器指令硬指令助记符表示处置器指令伪指令助记符表达一个汇编命令伪指令助记符表达一个汇编命令处置器指令例如:传送指令处置器指令例如:传送指令 MOV MOV伪指令例如:字节变量定义伪指令例如:字节变量定义助记符:助记符:BYTE BYTE 或或DBDB功功能能:在在主主存存中中占占用用假假设设干干的的存存储储空空间间,用用于于保管变量值,该变量以字节为单位存取保管变量值,该变量以字节为单位存取msg byte Hello, Assembly !,13,10,0第第1 1章章 汇编语言基础汇编语言基础3. 3. 操
44、作数和参数操作数和参数处置器指令的操作数:表示参与操作的对象处置器指令的操作数:表示参与操作的对象详细的常量详细的常量保管在存放器的数据保管在存放器的数据保管在存储器中的变量保管在存储器中的变量逗号前常是目的操作数,逗号后常是源操作数逗号前常是目的操作数,逗号后常是源操作数伪指令的参数:伪指令的参数:常量、变量名、表达式等常量、变量名、表达式等可以有多个,参数之间用逗号分隔可以有多个,参数之间用逗号分隔msg byte Hello, Assembly !,13,10,0mov eax,offset msg第第1 1章章 汇编语言基础汇编语言基础4. 4. 注释和分隔符注释和分隔符语句中分号后的
45、内容是注释语句中分号后的内容是注释对指令或程序进展阐明对指令或程序进展阐明汇编程序不对它们做任何处置汇编程序不对它们做任何处置注释利于阅读,应养成书写注释的好习惯注释利于阅读,应养成书写注释的好习惯语句的语句的4 4个组成部分要用分隔符分开个组成部分要用分隔符分开标号后的冒号标号后的冒号注释前的分号注释前的分号操作数间和参数间的逗号操作数间和参数间的逗号分隔其他部分采用一个或多个空格或制表符分隔其他部分采用一个或多个空格或制表符注释运用英文或中文均可注释运用英文或中文均可分隔符都是英文分隔符都是英文标点点良好的良好的语句格式有利于句格式有利于编程程第第1 1章章 汇编语言基础汇编语言基础1.3
46、.3 1.3.3 源程序框架源程序框架;eg0000.asm in Windows Console;eg0000.asm in Windows Consoleinclude io32.incinclude io32.inc ; ;包含包含3232位位输输入入输输出文件出文件.data.data; ;定定义义数据段数据段; ;数据定数据定义义 数据待填数据待填 .code.code; ;定定义义代代码码段段start:start:; ;程序程序执执行起始位置行起始位置; ;主程序主程序 指令待填指令待填 exit 0(exit 0(或或ret)ret); ;程序正常程序正常执执行行终终了了; ;
47、子程序子程序 指令待填指令待填 end startend start; ;汇编终汇编终了了第第1 1章章 汇编语言基础汇编语言基础1. 1. 包含伪指令包含伪指令INCLUDEINCLUDE将将常常用用的的常常量量定定义义、过过程程阐阐明明、共共享享的的子子程程序序库库等等内内容容进进展展声声明明相相当当于于C C和和C+C+言言语语中中,包包含头文件的作用含头文件的作用IO32.INCIO32.INC是配合本书的包含文件是配合本书的包含文件前前3 3个语句:个语句:.686.686;32;32位指令位指令.model flat,stdcall.model flat,stdcall; ;选择平
48、展模型,规范调用规范选择平展模型,规范调用规范 option casemap:noneoption casemap:none; ;告告知知MASMMASM区区分分用用户户定定义义标标识识符符的的大大小小写写第第1 1章章 汇编语言基础汇编语言基础2. 2. 段的简化定义段的简化定义数据段定数据段定义伪指令指令.DATA.DATA创建一个数据段建一个数据段代代码段定段定义伪指令指令.CODE.CODE创建一个代建一个代码段段堆堆栈段由段由WindowsWindows维护,用,用户不用不用设置置程序开程序开场执行的位置行的位置运用一个运用一个标号例如:号例如:STARTSTART汇编终了了ENDE
49、ND指令的参数指令的参数运用程序运用程序执行行终了了语句句“EXIT 0“EXIT 0将控制将控制权交交还操作系操作系统提供提供应操作系一致个前往代操作系一致个前往代码通常用通常用0 0表示表示执行正确行正确源程序源程序汇编终了了ENDEND语句句执行行终了了汇编终了了第第1 1章章 汇编语言基础汇编语言基础例例1-11-1信息显示程序信息显示程序在数据段给出这个字符串方式的信息:在数据段给出这个字符串方式的信息:; ;数据段数据段msgmsgbyte byte Hello, Hello, Assembly!,13,10,0Assembly!,13,10,0; ;定义要显示的字符串定义要显示的
50、字符串在代码段编写显示字符串的程序:在代码段编写显示字符串的程序:; ;代码段代码段mov eax,offset msgmov eax,offset msg; ;指定字符串的偏移地址指定字符串的偏移地址call dispmsgcall dispmsg; ;调用调用I/OI/O子程序显示信息子程序显示信息完好程序完好程序第第1 1章章 汇编语言基础汇编语言基础3. 3. 输入输出子程序库输入输出子程序库汇编程序通常不提供任何函数或程序库汇编程序通常不提供任何函数或程序库必需利用操作系统的编程资源必需利用操作系统的编程资源本书配套键盘输入和显示器输出的本书配套键盘输入和显示器输出的I/OI/O子程
51、序子程序含含IO32.INCIO32.INC和和IO32.LIBIO32.LIB,需求包含文件声明,需求包含文件声明源程序文件开场运用包含命令声明源程序文件开场运用包含命令声明INCLUDE IO32.INCINCLUDE IO32.INC子程序调用方法子程序调用方法MOV EAX,MOV EAX,入口参数入口参数CALL CALL 子程序名子程序名子程序名子程序名 DISPMSGDISPMSG入口参数入口参数 EAXEAX字符串地址字符串地址功能说明功能说明 显示字符串(以显示字符串(以0 0结尾)结尾)输入子程序入子程序输出子程序出子程序第第1 1章章 汇编语言基础汇编语言基础1.3.4
52、1.3.4 开发过程开发过程第第1 1章章 汇编语言基础汇编语言基础1. 1. 开发软件开发软件抽抽取取MASM MASM 6.116.11和和Visual Visual C+ C+ 6.06.0集集成成开开发环境境中中有有关文件构造根本开关文件构造根本开发软件包件包MASMMASM主目主目录:I/OI/O库、包含文件及批、包含文件及批处置文件置文件BINBIN子目子目录:进展展汇编、衔接及配套程序文件接及配套程序文件WINDBGWINDBG子目子目录:调试程序程序WinDbg.EXEWinDbg.EXE默默许安装到安装到D D分区的分区的MASMMASM目目录快速开快速开发方法方法 进入入M
53、ASMMASM目目录双双击批批处置文件置文件WIN32.BATWIN32.BAT 生成可生成可执行文件行文件MAKE32 eg0101MAKE32 eg0101快速开快速开发过程程第第1 1章章 汇编语言基础汇编语言基础2. 2. 源程序的编辑源程序的编辑源程序文件是无格式文件、纯文本类型源程序文件是无格式文件、纯文本类型以以ASMASM为扩展名,可运用任何文本编辑器为扩展名,可运用任何文本编辑器WindowsWindows的记事本的记事本NotepadNotepad其他程序开发工具中的编辑环境其他程序开发工具中的编辑环境专专 注注 于于 源源 程程 序序 编编 写写 的的 编编 辑辑 软软
54、件件 , 例例 如如UltraEdit32UltraEdit32本书配套开发软件本书配套开发软件MASMMASM主目录提供主目录提供Notepad2.exeNotepad2.exe程序程序本本书书源程序文件的命名源程序文件的命名规规那么那么 EG例例题题,EX习题习题 前前2位数字章号,后位数字章号,后2位数字序号位数字序号第第1 1章章 汇编语言基础汇编语言基础3. 3. 源程序的汇编源程序的汇编生成目的模生成目的模块文件文件.OBJ.OBJMASM 6.xMASM 6.x的的汇编程序是程序是ML.EXEML.EXEBINML /c /coff eg0101.asmBINML /c /cof
55、f eg0101.asm参数参数“/c“/c小写字母小写字母实现源程序的源程序的汇编参参数数“/coff“/coff小小写写字字母母表表示示生生成成COFFCOFF格格式式的目的模的目的模块文件文件温馨提示:将源文件放在温馨提示:将源文件放在MASM目目录温馨提示:温馨提示:ML.EXE的参数区的参数区别大小写大小写第第1 1章章 汇编语言基础汇编语言基础4. 4. 目的文件的衔接目的文件的衔接把把一一个个或或多多个个目目的的文文件件和和库文文件件合合成成一一个个可可执行文件行文件.EXE.EXE3232位位衔接程序被更名接程序被更名为LINK32.EXELINK32.EXEBINLINK32
56、 BINLINK32 /subsystem:console /subsystem:console eg0201.objeg0201.obj“/subsystem:console“/subsystem:console表表示示生生成成WindowsWindows控控制台制台ConsoleConsole环境的可境的可执行文件行文件“/subsystem:windows“/subsystem:windows生生成成WindowsWindows图形形窗窗口的可口的可执行文件行文件温馨提示:运用批温馨提示:运用批处置文件方便操作置文件方便操作温馨提示:温馨提示:汇编程序只指出程序只指出语法法错误第第1 1
57、章章 汇编语言基础汇编语言基础5. 5. 可执行文件的运转可执行文件的运转进入控制台或模拟进入控制台或模拟DOSDOS环境环境在在命命令令行行提提示示符符下下输输入入文文件件名名可可以以省省略略扩扩展展名、按下回车键运转名、按下回车键运转eg0201.exeeg0201.exe运转错误,就需求运转错误,就需求静态排错:阅读分析源程序静态排错:阅读分析源程序动态排错:利用调试程序动态排错:利用调试程序温馨提示:不要在温馨提示:不要在Windows下双下双击运运转第第1 1章章 汇编语言基础汇编语言基础6. 6. 列表文件列表文件列表文件列表文件.LST.LST含有源程序和目的代含有源程序和目的代
58、码ML /c /coff /Fl eg0201.asmML /c /coff /Fl eg0201.asm“/Fl“/Fl创建列表文件建列表文件大写大写F F、小写、小写l l,不是数字,不是数字1 1列表文件有两部分内容列表文件有两部分内容第一部分:源程序及其代第一部分:源程序及其代码第二部分:各种第二部分:各种标识符符错误ErrorError:比:比较严重的重的语法法错误警告警告WarningWarning:不太关:不太关键的的语法法错误第第1 1章章 汇编语言基础汇编语言基础7. 7. 调试程序调试程序WinDbgWinDbg是微是微软软提供的提供的WindowsWindows调试调试程
59、序程序 WinDbgWinDbg支支持持源源程程序序级级调调试试,但但需需求求在在汇汇编编、衔衔接接过过程中参与参数程中参与参数 汇编时汇编时用用“/Zi“/Zi 大写大写Z Z、小写、小写i i 参数参数ML /c /coff /Fl /Zi eg0101.asmML /c /coff /Fl /Zi eg0101.asm衔衔接接时时用用“/debug“/debug参数参数LINK32 LINK32 /subsystem:console /subsystem:console /debug /debug eg0101.objeg0101.obj双双击击WinDbgWinDbg快捷方式翻开快捷方
60、式翻开调试调试程序程序源程序源程序可执行文件可执行文件目的模块目的模块文本编辑器文本编辑器汇编程序汇编程序衔接程序衔接程序调试程序调试程序第第1 1章章 汇编语言基础汇编语言基础汇编言语集成开发环境汇编言语集成开发环境(2)(2)运运转作作者者组织的的“开开发工工具具.EXE可可以以生生成成一一个个汇编言言语集成开集成开发环境境MASM615LINK16.EXE,LIB16.EXEMASM32调试工具工具WINDBG, DEBUG作者作者编写的写的输入入输出文件出文件IO16.LIB, LIB32.LIB, IO.INC, IO16.INC, IO32.INC 第第1 1章章 汇编语言基础汇编
61、语言基础安装方法安装方法双双击“m32v10r.EXE“m32v10r.EXE安装安装masm32masm32masm32masm32只能安装在根目只能安装在根目录再双再双击“Exmasm32“Exmasm32安装其他安装其他软件件安安 装装 目目 录 为 masm32masm32所所 在在 目目 录 , ,默默 以以 为C:masm32C:masm32第第1 1章章 汇编语言基础汇编语言基础MASM615MASM615MASM615是是微微软软提提供供的的汇汇编编开开发发软软件件包包,以以DOS操操作作系系统统为为平平台台,可可以以用用来来开开发发实实方方式式下下的的程程序序和和系系统统程程
62、序序,但但是是无无法法开开发发维维护护方方式式下下的的32位位运运用程序用程序 WINDOWS XP/2000环环境境下下可可在在模模拟拟DOS窗窗口口下下运用运用在在教教材材配配套套的的开开发发环环境境中中运运用用了了MASM615中中的的链链接器接器 第第1 1章章 汇编语言基础汇编语言基础MASM32MASM32免免费费软软件件开开发发包包MASM32MASM32是是WINDOWSWINDOWS窗窗口口运运用用程程序序,可以非常方便地开发可以非常方便地开发3232位运用程序。位运用程序。编辑器编辑器MASM 6.14MASM 6.14汇编程序汇编程序3232位增量式链接程序位增量式链接程
63、序Win32Win32的包含文件、库文件的包含文件、库文件MASM32MASM32是配套开发环境的主体是配套开发环境的主体为为了了运运用用方方便便,建建议议在在桌桌面面建建立立masm32masm32的的启启动动图图标标 第第1 1章章 汇编语言基础汇编语言基础链接软件链接软件MASM614MASM614中中的的链链接接软软件件是是段段式式可可执执行行程程序序链链接接器器 Segmented Segmented Executable Executable LinkerLinker ,用用于于生生成成1616位位DOSDOS程序,不能程序,不能链链接生成接生成3232位位WindowsWindo
64、ws运用程序;运用程序;MASM32MASM32中中的的衔衔接接器器LINK.EXELINK.EXE是是3232位位增增量量式式链链接接器器 incremental incremental linkerlinker 用用于于链链接接生生成成3232位位运运用用程程序序 第第1 1章章 汇编语言基础汇编语言基础编写源程序编写源程序双双击击桌桌面面上上的的 ,启启动动MASM32MASM32编编辑辑窗窗口口,书书写写源程序。源程序。输输入入终终了了之之后后,选选择择菜菜单单File/Save, File/Save, 弹弹出出保保管对话框,保管文件。管对话框,保管文件。汇编源程序的扩展名是汇编源程序的扩展名是ASMASM在在DOSDOS模拟窗口中对源程序进展汇编和衔接模拟窗口中对源程序进展汇编和衔接 第第1 1章章 汇编语言基础汇编语言基础32位运用程序的汇编衔接位运用程序的汇编衔接第第1 1章习题:汇编言语根底章习题:汇编言语根底1.1 1.1 简答题简答题1 1、3 3、6 6、7 7、8 81.2 1.2 判别题判别题1 1、6 6、7 7、8 8、9 91.3 1.3 填空题填空题3 3、4 4、5 5、7 7、10101.91.9、1.131.13、1.151.15、1.161.16