1、第第1 1章章 汇编语言基础汇编语言基础1.1 1.1 英特尔英特尔80 x8680 x86处理器处理器1.2 1.2 个人计算机系统个人计算机系统1.3 1.3 汇编语言程序格式汇编语言程序格式第第1 1章章 汇编语言基础汇编语言基础了解软硬件开发环境了解软硬件开发环境熟悉通用寄存器和存储器组织熟悉通用寄存器和存储器组织掌握汇编语言的掌握汇编语言的语句格式、程序框架和开发方法语句格式、程序框架和开发方法第第1 1章章 汇编语言基础汇编语言基础3 3Intel 80861.1 1.1 英特尔英特尔80 x8680 x86处理器处理器80386803868048680486奔腾奔腾奔腾奔腾II奔
2、腾奔腾4802868028680868086奔腾奔腾III酷睿多核系列酷睿多核系列40044004IA-32处理器处理器16位位80 x86处理器处理器奔腾多核系列奔腾多核系列Intel 64处理器处理器第第1 1章章 汇编语言基础汇编语言基础4 41.1.1 161.1.1 16位位80 x8680 x86处理器处理器1616位结构处理器位结构处理器8086/80888086/8088指令系统提供指令系统提供1616位基本指令集位基本指令集80186/8018880186/80188增加若干条实用指令增加若干条实用指令 80868086的工作方式是实方式(的工作方式是实方式(Real Mod
3、eReal Mode)8028680286增加保护方式(增加保护方式(Protected ModeProtected Mode)8028680286引入了系统指令引入了系统指令n为操作系统等核心程序提供处理器控制功能为操作系统等核心程序提供处理器控制功能指令系统、指令集(指令系统、指令集(Instruction Set)第第1 1章章 汇编语言基础汇编语言基础5 51.1.2 IA-321.1.2 IA-32处理器处理器8038680386引入英特尔引入英特尔3232位指令集结构位指令集结构ISAISAn兼容原兼容原1616位位8028680286指令系统指令系统n全面升级为全面升级为3232
4、位位n提供虚拟提供虚拟80868086工作方式(工作方式(Virtual 8086 ModeVirtual 8086 Mode)8048680486集成浮点处理单元支持浮点指令集成浮点处理单元支持浮点指令PentiumPentium系列系列n陆续增加若干整数指令、完善浮点指令陆续增加若干整数指令、完善浮点指令n增加一系列多媒体指令(增加一系列多媒体指令(SIMDSIMD指令)指令)IA-32(Intel Architecture-32)第第1 1章章 汇编语言基础汇编语言基础6 61.1.3 Intel 641.1.3 Intel 64处理器处理器引入引入6464位英特尔指令集结构位英特尔指令
5、集结构n兼容兼容3232位指令系统位指令系统n新增新增6464位工作方式位工作方式继续丰富多媒体指令继续丰富多媒体指令处理器集成多核(处理器集成多核(Multi-coreMulti-core)技术)技术处理器进入多核时代处理器进入多核时代Many core第第1 1章章 汇编语言基础汇编语言基础7 71.2 1.2 个人计算机系统个人计算机系统硬件(硬件(HardwareHardware):物理设备):物理设备软件(软件(SoftwareSoftware):程序和文档):程序和文档运算器运算器 控制器控制器寄存器组寄存器组 主存储器主存储器 总线总线输入输出接口电路输入输出接口电路外部设备外部
6、设备 软件软件微处理器微处理器微型计算机微型计算机微型计算机系统微型计算机系统第第1 1章章 汇编语言基础汇编语言基础8 81.2.1 1.2.1 硬件组成硬件组成I/O接接口口主存储器主存储器系统总线系统总线CPU寄存器寄存器控制器控制器运算器运算器辅助存储器辅助存储器输入设备输入设备输出设备输出设备汇编语言程序员将硬件抽象为:汇编语言程序员将硬件抽象为:寄存器寄存器、存储器地址存储器地址和和输入输出地址输入输出地址第第1 1章章 汇编语言基础汇编语言基础9 91.2.2 1.2.2 寄存器(寄存器(RegisterRegister)处理器内部的高速存储单元处理器内部的高速存储单元用于暂时存
7、放程序执行过程中的代码和数据用于暂时存放程序执行过程中的代码和数据透明寄存器透明寄存器n对应用人员不可见、不能编程直接控制对应用人员不可见、不能编程直接控制可编程(可编程(ProgrammableProgrammable)寄存器)寄存器n具有引用名称、供编程使用具有引用名称、供编程使用n通用寄存器(通用寄存器(General-Purpose RegisterGeneral-Purpose Register)n具有多种用途具有多种用途n数量较多、使用频度较高数量较多、使用频度较高n专用寄存器专用寄存器n各自只用于特定目的各自只用于特定目的第第1 1章章 汇编语言基础汇编语言基础1010IA-32
8、IA-32常用寄存器常用寄存器8个个32位通用寄存器位通用寄存器6个个16位段寄存器位段寄存器1个个32位标志寄存器位标志寄存器1个个32位指令指针位指令指针第第1 1章章 汇编语言基础汇编语言基础11111.1.通用寄存器通用寄存器处理器最常使用的整数通用寄存器处理器最常使用的整数通用寄存器可用于保存整数数据、地址等可用于保存整数数据、地址等 8 8个个3232位通用寄存器位通用寄存器EAXEAX,EBXEBX,ECXECX,EDXEDXESIESI,EDIEDI,EBPEBP,ESPESP8 8个个1616位通用寄存器位通用寄存器AXAX,BXBX,CXCX,DXDXSISI,DIDI,B
9、PBP,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源变址寄存器源
10、变址寄存器E EDIDIDestination IndexDestination Index目的变址寄存器目的变址寄存器E EBPBPBase PointerBase Pointer基址指针基址指针E ESPSPStack PointerStack Pointer堆栈指针堆栈指针第第1 1章章 汇编语言基础汇编语言基础13132.2.标志寄存器标志寄存器标志(标志(FlagFlag)n反映指令执行结果或控制指令执行形式反映指令执行结果或控制指令执行形式n用一个或多个二进制位表示一种标志用一个或多个二进制位表示一种标志n用用0 0和和1 1的不同组合表达标志的不同状态的不同组合表达标志的不同状态
11、80868086支持支持1616位标志寄存器位标志寄存器FLAGSFLAGSIA-32IA-32处理器形成处理器形成3232位位EFLAGSEFLAGS标志寄存器标志寄存器n状态标志:状态标志:记录指令执行结果的辅助信息记录指令执行结果的辅助信息n控制标志:方向标志控制标志:方向标志DFDF,仅用于串操作指令,仅用于串操作指令n系统标志:系统标志:控制操作系统或核心管理程序的操作控制操作系统或核心管理程序的操作方式方式示意图示意图第第1 1章章 汇编语言基础汇编语言基础1414标志寄存器标志寄存器EFLAGSEFLAGS返回返回第第1 1章章 汇编语言基础汇编语言基础1515处理器最基本的标志
12、:状态标志处理器最基本的标志:状态标志用来记录指令执行结果的辅助信息用来记录指令执行结果的辅助信息加减运算和逻辑运算指令主要设置它们加减运算和逻辑运算指令主要设置它们其他有些指令的执行也会相应地设置它们其他有些指令的执行也会相应地设置它们处理器主要使用其中处理器主要使用其中5 5个构成各种条件,分支个构成各种条件,分支指令判断这些条件实现程序分支指令判断这些条件实现程序分支 8086的标志的标志OF1115 12DF10IF9TF8SF7ZF605AF403PF211CF0第第1 1章章 汇编语言基础汇编语言基础16163.3.指令指针寄存器指令指针寄存器EIPEIP保存将要执行的指令在主存的
13、存储器地址保存将要执行的指令在主存的存储器地址EIPEIP是专用寄存器是专用寄存器n顺序执行时自动增量顺序执行时自动增量(加上该指令的字节数),(加上该指令的字节数),指向下一条指令指向下一条指令n分支、调用等操作时执行控制转移指令修改分支、调用等操作时执行控制转移指令修改,引,引起程序转移到指定的指令执行起程序转移到指定的指令执行n出现中断或异常时被处理器赋值而相应改变出现中断或异常时被处理器赋值而相应改变3116 15IP0EIP第第1 1章章 汇编语言基础汇编语言基础17174.4.段寄存器段寄存器段(段(SegmentSegment)是用于安排相关代码或数据的)是用于安排相关代码或数据
14、的一个主存区域一个主存区域段寄存器表明某个段在主存中的位置段寄存器表明某个段在主存中的位置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)指明程序使用的堆栈区域指明程序使用的堆栈区域主存空间主存空间
15、指令段指令段数据段数据段堆栈段堆栈段程程序序第第1 1章章 汇编语言基础汇编语言基础18181.2.3 1.2.3 存储器组织存储器组织主存储器容量很大,被划分成许多存储单元主存储器容量很大,被划分成许多存储单元每个存储单元被编排一个号码每个存储单元被编排一个号码n即存储单元地址即存储单元地址n称为存储器地址(称为存储器地址(Memory AddressMemory Address)每个存储单元以字节为基本存储单位每个存储单元以字节为基本存储单位n即字节编址(即字节编址(Byte AddressableByte Addressable)n一个字节(一个字节(ByteByte)等于)等于8 8个
16、二进制位(个二进制位(BitBit)n二进制位是计算机存储信息的最小单位二进制位是计算机存储信息的最小单位n1616位(位(2 2个字节)构成一个字(个字节)构成一个字(WordWord)n3232位(位(4 4个字节)构成一个双字(个字节)构成一个双字(Double WordDouble Word)示意图示意图第第1 1章章 汇编语言基础汇编语言基础1919数据的位格式数据的位格式返回返回D7D6D5D4D3D2D1D0字节字节LSBMSBD15D1D0字字LSBMSBD31D1D0双字双字LSBMSB318 716 15高字节高字节低字节低字节0字字双字双字第第1 1章章 汇编语言基础汇编
17、语言基础20201.1.存储模型存储模型物理存储器以字节为基本存储单位物理存储器以字节为基本存储单位每个存储单元被分配一个唯一的地址每个存储单元被分配一个唯一的地址这个地址就是物理地址这个地址就是物理地址物理地址空间从物理地址空间从0 0开始顺序编排,直到处理器支持的开始顺序编排,直到处理器支持的最大存储单元最大存储单元n80868086处理器支持处理器支持1MB1MB存储器:存储器:00000H00000HFFFFFHFFFFFHnIA-32IA-32处理器支持处理器支持4GB4GB存储器:存储器:00000000H00000000HFFFFFFFFHFFFFFFFFH操作系统利用存储管理单
18、元进行存储管理,程序并操作系统利用存储管理单元进行存储管理,程序并不直接寻址物理存储器不直接寻址物理存储器IA-32IA-32处理器提供处理器提供3 3种存储模型,用于程序访问存储种存储模型,用于程序访问存储器器示意图示意图第第1 1章章 汇编语言基础汇编语言基础2121存储器地址空间存储器地址空间返回返回FFFFFFFFH00000000H00000001H00000002H00000003H00000004H双字双字字节字节字字字节字节字节字节字字字节字节第第1 1章章 汇编语言基础汇编语言基础2222IA-32IA-32处理器的存储模型处理器的存储模型(1 1)平展存储模型()平展存储模
19、型(Flat Memory Flat Memory M Modelodel)n存储器是一个连续的地址空间:线性地址空间存储器是一个连续的地址空间:线性地址空间nIA-32IA-32处理器支持处理器支持4GB4GB容量线性地址空间容量线性地址空间(2 2)段式存储模型()段式存储模型(Segmented Segmented M Memory Modelemory Model)n存储器由一组独立的地址空间:段(存储器由一组独立的地址空间:段(SegmentSegment)n每个段都可以达到每个段都可以达到4GB4GB容量容量n在处理器内部,所有的段都被映射到线性地址空间在处理器内部,所有的段都被映
20、射到线性地址空间(3 3)实地址存储模型()实地址存储模型(Real-address Real-address M Memory Modelemory Model)n80868086处理器的存储模型处理器的存储模型n段式存储模型的特例段式存储模型的特例n线性地址空间最大为线性地址空间最大为1MB1MB容量,段最大为容量,段最大为64KB64KB第第1 1章章 汇编语言基础汇编语言基础23232.2.工作方式工作方式(1 1)保护方式()保护方式(Protected Protected M Modeode)nIA-32IA-32处理器固有的工作状态处理器固有的工作状态n具有强大的段页式存储管理和
21、特权与保护能力具有强大的段页式存储管理和特权与保护能力n使用全部使用全部3232条地址总线,可寻址条地址总线,可寻址4GB4GB物理存储器物理存储器n使用平展或段式存储模型使用平展或段式存储模型n利用虚拟利用虚拟80868086方式支持实地址方式支持实地址80868086软件软件(2 2)实地址方式()实地址方式(Real-address ModeReal-address Mode)n可以进行可以进行3232位处理的快速位处理的快速80868086n只能寻址只能寻址1MB1MB物理存储器空间,每个段不超过物理存储器空间,每个段不超过64KB64KBn可以使用可以使用3232位寄存器、位寄存器、
22、3232位操作数和位操作数和3232位寻址方式位寻址方式n只能支持实地址存储模型只能支持实地址存储模型(3 3)系统管理方式()系统管理方式(System Management ModeSystem Management Mode)n实现供节能和系统安全管理实现供节能和系统安全管理第第1 1章章 汇编语言基础汇编语言基础24243.3.逻辑地址(逻辑地址(Logical AddressLogical Address)在处理器内部、程序员编程时采用的地址在处理器内部、程序员编程时采用的地址逻辑地址逻辑地址段基地址段基地址偏移地址偏移地址n段基地址段基地址在主存中的起始地址在主存中的起始地址n偏移
23、地址偏移地址距离段基地址的位移量距离段基地址的位移量某个存储单元可以有多个逻辑地址,但只有一某个存储单元可以有多个逻辑地址,但只有一个唯一的物理地址个唯一的物理地址编程使用编程使用处理器转换处理器转换地址总线输出地址总线输出示意图示意图第第1 1章章 汇编语言基础汇编语言基础2525逻辑地址与物理地址逻辑地址与物理地址返回返回1081082082083083081061062062063063061071072072073073071091092092093093091101101051051041041031031021021011012102102052052042042032032022
24、02201201310310305305304304303303302302301301080818182828060616162626070717172727090919192929101005050404030302020101202015151414131312121111303025252424232322222121逻辑地址相对地址:逻辑地址相对地址:205(2层层05号房间)号房间)物理地址绝对地址:物理地址绝对地址:15(第(第15号房间)号房间)第第1 1章章 汇编语言基础汇编语言基础2626基本段的逻辑地址基本段的逻辑地址代码段代码段(Code SegmentCode Seg
25、ment)n段基地址:代码段寄存器段基地址:代码段寄存器CSCS指示指示n偏移地址:指令指针寄存器偏移地址:指令指针寄存器EIPEIP保存保存数据段数据段(Data SegmentData Segment)n段基地址:数据段寄存器段基地址:数据段寄存器DSDS指示指示n有时也用附加段寄存器有时也用附加段寄存器ESES,段寄存器段寄存器FSFS和和GSGS指示指示n偏移地址:各种存储器寻址方式计算出来偏移地址:各种存储器寻址方式计算出来堆栈段堆栈段(Stack SegmentStack Segment)n段基地址:堆栈段寄存器段基地址:堆栈段寄存器SSSS指示指示n偏移地址:堆栈指针寄存器偏移地
26、址:堆栈指针寄存器ESPESP保存保存主存空间主存空间指令段指令段数据段数据段堆栈段堆栈段程程序序第第1 1章章 汇编语言基础汇编语言基础27274.4.段选择器段选择器1616位段寄存器保存位段寄存器保存1616位段选择器位段选择器段选择器指向段选择器指向6464位段描述符(位段描述符(DescriptorDescriptor)段描述符包括段基地址段描述符包括段基地址n平展存储模型:指向地址平展存储模型:指向地址0 0位置位置n段式存储模型:指向线性地址空间不同的段段式存储模型:指向线性地址空间不同的段n实地址存储模型:保存段基地址的高实地址存储模型:保存段基地址的高1616位位段寄存器段寄
27、存器段描述符段描述符主存空间主存空间第第1 1章章 汇编语言基础汇编语言基础2828平展模型平展模型平展存储模型是分段存储模型的一种平展存储模型是分段存储模型的一种特例特例 所有的段都有相同的段基地址(基地所有的段都有相同的段基地址(基地址为址为0),都重合于同一个线性地址空),都重合于同一个线性地址空间间 IA-32微处理器上运行的应用程序,微处理器上运行的应用程序,广泛采用平展存储模型。广泛采用平展存储模型。第第1 1章章 汇编语言基础汇编语言基础2929分页机制分页机制不采用分页管理机制,线性地址就是不采用分页管理机制,线性地址就是对应的物理地址空间对应的物理地址空间 采用了分页管理机制
28、,则要将线性空采用了分页管理机制,则要将线性空间地址映射到物理地址间地址映射到物理地址 当微处理器既采用段式存储管理,又当微处理器既采用段式存储管理,又采用页式存储管理就是采用页式存储管理就是段页式存储管段页式存储管理方式理方式 第第1 1章章 汇编语言基础汇编语言基础3030分页分页线性地址空间线性地址空间页页物理地址物理地址物理地址空间线性地址线性地址页目录页目录 页表页表 偏移量偏移量 入口入口页页目录目录页表页表入口入口 段段1 1 段段2 2 段段3 3页页+第第1 1章章 汇编语言基础汇编语言基础3131存储器模型与工作模式存储器模型与工作模式 保护模式保护模式工作模式工作模式实模
29、式实模式虚拟虚拟80868086模式模式平展模型平展模型存储器模型存储器模型实实地址模型地址模型分段模型分段模型段页模型段页模型第第1 1章章 汇编语言基础汇编语言基础32325.Win325.Win32的虚拟地址分配的虚拟地址分配应用程序起始地址应用程序起始地址第第1 1章章 汇编语言基础汇编语言基础33331.2.4 1.2.4 程序设计语言程序设计语言机器语言(机器语言(Machine LanguageMachine Language)n底层的计算机语言,对应机器指令底层的计算机语言,对应机器指令n形成目标(代码)程序形成目标(代码)程序汇编语言(汇编语言(Assembly Langua
30、geAssembly Language)n将机器指令用助记符号代替而形成的一种语言将机器指令用助记符号代替而形成的一种语言n本质上是机器语言本质上是机器语言n需要汇编程序需要汇编程序“汇编汇编”(翻译翻译)高级语言(高级语言(High Level LanguageHigh Level Language)n面向问题的程序设计语言面向问题的程序设计语言n需要需要“编译编译”或或“解释解释”后执行后执行mov eax,100add eax,256第第1 1章章 汇编语言基础汇编语言基础3434Instructions:Language of the MachineInstructions:Langu
31、age of the MachineTo command a computers hardware,you To command a computers hardware,you must speak its language.The words of a must speak its language.The words of a machines language are called machines language are called instructions,and its vocabulary is instructions,and its vocabulary is call
32、ed an instruction set.called an instruction set.为了控制计算机硬件,必须使用它的语言。机器为了控制计算机硬件,必须使用它的语言。机器语言的单词称为指令,它的词汇表称为指令集。语言的单词称为指令,它的词汇表称为指令集。“Computer Organization&Design“Computer Organization&Design-The Hardware/Software Interface(2nd Edition)”-The Hardware/Software Interface(2nd Edition)”by John L.Hennessy
33、 and David A.Patterson by John L.Hennessy and David A.Patterson Morgan Kaufmann Publishers,Inc.1998 Morgan Kaufmann Publishers,Inc.1998返回返回第第1 1章章 汇编语言基础汇编语言基础3535汇编语言和高级语言的比较汇编语言和高级语言的比较汇编语言与处理器密切相关,可移植性较差汇编语言与处理器密切相关,可移植性较差n高级语言与具体计算机无关,便于移植高级语言与具体计算机无关,便于移植汇编语言功能有限、涉及硬件细节,编写繁琐困难汇编语言功能有限、涉及硬件细节,编写
34、繁琐困难n高级语言功能强大,语法自然,容易掌握和应用高级语言功能强大,语法自然,容易掌握和应用汇编语言的优势:直接、有效地控制硬件,容易产汇编语言的优势:直接、有效地控制硬件,容易产生运行速度快、指令序列短小的高效率目标程序生运行速度快、指令序列短小的高效率目标程序n高级语言不易直接控制计算机的各种操作,编译高级语言不易直接控制计算机的各种操作,编译程序产生的目标程序往往比较庞大程序产生的目标程序往往比较庞大学习汇编语言的意义学习汇编语言的意义第第1 1章章 汇编语言基础汇编语言基础3636汇编语言的主要应用场合汇编语言的主要应用场合程序要具有较快的执行时间,或者只能占用较程序要具有较快的执行
35、时间,或者只能占用较小的存储容量小的存储容量程序与计算机硬件密切相关,程序要直接、有程序与计算机硬件密切相关,程序要直接、有效地控制硬件效地控制硬件大型软件需要提高性能、优化处理的部分大型软件需要提高性能、优化处理的部分没有合适的高级语言、或只能采用汇编语言的没有合适的高级语言、或只能采用汇编语言的时候时候分析具体系统尤其是该系统的低层软件、加密分析具体系统尤其是该系统的低层软件、加密解密软件、分析和防治计算机病毒等等解密软件、分析和防治计算机病毒等等第第1 1章章 汇编语言基础汇编语言基础37371.2.5 1.2.5 软件系统软件系统WindowsWindows操作系统平台操作系统平台MA
36、SM 6.15MASM 6.15汇编程序汇编程序硬件硬件BIOS应用程序应用程序*.ASM,*.OBJ*.LST,*.EXE操作系统操作系统编辑程序,汇编程序编辑程序,汇编程序连接程序,调试程序连接程序,调试程序第第1 1章章 汇编语言基础汇编语言基础38381.1.操作系统(操作系统(Operating SystemOperating System)操作系统管理着系统的软硬件资源操作系统管理着系统的软硬件资源n为用户提供使用机器的交互界面为用户提供使用机器的交互界面n为程序员使用资源提供可供调用的驱动程序为程序员使用资源提供可供调用的驱动程序n为其他程序构建稳定的运行平台为其他程序构建稳定的
37、运行平台3232位控制台环境位控制台环境%SystemRoot%system32cmd.exe%SystemRoot%system32cmd.exe1616位模拟位模拟DOSDOS环境环境%SystemRoot%SystemRoot%32位控制台环境和位控制台环境和16位模拟位模拟DOS环境环境两种基本功能和界面一致,但本质不同两种基本功能和界面一致,但本质不同第第1 1章章 汇编语言基础汇编语言基础39392.2.汇编程序(汇编程序(AssemblerAssembler)将汇编语言源程序转换为机器代码将汇编语言源程序转换为机器代码微软宏汇编程序微软宏汇编程序MASMMASMnMASM 6.1
38、1MASM 6.11是最后一个独立发行的是最后一个独立发行的MASMMASM软件包软件包 nMASM 6.15MASM 6.15来自来自Visual C+6.0Visual C+6.0,支持到,支持到Pentium 4Pentium 4的的SSE2SSE2指令系统指令系统nVisual C+.NET 2005Visual C+.NET 2005提供提供n支持支持SSE3SSE3指令的指令的MASM 8.0MASM 8.0n支持支持6464位指令的位指令的ML64.EXEML64.EXE程序程序汇编语言程序与汇编程序汇编语言程序与汇编程序是两个是两个不同的概念不同的概念第第1 1章章 汇编语言基
39、础汇编语言基础40403.3.文件路径文件路径目录目录(DirectoryDirectory):管理磁盘上文件的):管理磁盘上文件的文件夹文件夹路径路径(PathPath):分区):分区:根目录根目录 子目录子目录 文件名文件名n绝对路径:文件的完整路径绝对路径:文件的完整路径d:masmprogseg0101.asmd:masmprogseg0101.asmn相对路径:相对当前目录的路径相对路径:相对当前目录的路径progseg0101.asmprogseg0101.asm.bin.binml.exeml.exe转换分区转换分区d:d:进入进入当前目录当前目录(Current Directo
40、ryCurrent Directory)cdcd masmmasm第第1 1章章 汇编语言基础汇编语言基础41414.4.内部命令和外部命令内部命令和外部命令内部命令:内部命令:3232位控制台或位控制台或DOSDOS环境本身具有的、环境本身具有的、直接支持的命令,即驻留主存的命令直接支持的命令,即驻留主存的命令n使用方法:使用方法:命令关键字命令关键字 参数选项参数选项外部命令:与其他可执行文件一样外部命令:与其他可执行文件一样,以文件形以文件形式保存在磁盘上的命令式保存在磁盘上的命令n执行方法:执行方法:路径路径 文件名文件名 参数参数路径搜索顺序路径搜索顺序n先先当前目录当前目录n后后搜
41、索路径搜索路径n内部命令内部命令PATHPATH查看和设置当前的搜索路径查看和设置当前的搜索路径你所执行的命令你所执行的命令不是内部或外部命令,不是内部或外部命令,也不是可运行的程序或批处理文件也不是可运行的程序或批处理文件 第第1 1章章 汇编语言基础汇编语言基础42425.5.进入进入MASMMASM目录的批处理文件目录的批处理文件为便于进入为便于进入MASMMASM目录,可创建目录,可创建批处理文件批处理文件n3232位位WindowsWindows控制台:控制台:WIN32.BATWIN32.BATn1616位位DOSDOS环境:环境:DOS16.BATDOS16.BAT为便于访问其中
42、文件,增加搜索路径:为便于访问其中文件,增加搜索路径:set PATH=D:MASM;D:MASMBIN;%PATH%set PATH=D:MASM;D:MASMBIN;%PATH%在在Windows资源管理器打开文件夹资源管理器打开文件夹“D:MASM”,双击该批处理文件,就可以进入双击该批处理文件,就可以进入MASM环境环境第第1 1章章 汇编语言基础汇编语言基础4343具有搜索路径的批处理文件具有搜索路径的批处理文件返回返回echo offset PATH=D:MASM;D:MASMBIN;%PATH%SystemRoot%system32cmd.exeecho onWIN32.BATe
43、cho offset PATH=D:MASM;D:MASMBIN;%PATH%SystemRoot%echo onDOS16.BAT第第1 1章章 汇编语言基础汇编语言基础44441.3 1.3 汇编语言程序格式汇编语言程序格式程序用程序设计语言编写,由指令构成程序用程序设计语言编写,由指令构成指令由操作码和操作数(地址码)组成指令由操作码和操作数(地址码)组成操作码(操作码(OpcodeOpcode)表明处理器执行的操作)表明处理器执行的操作n例如数据传送、加法运算、跳转等操作。例如数据传送、加法运算、跳转等操作。操作数(操作数(OperandOperand)是参与操作的数据对象)是参与操作
44、的数据对象n主要以寄存器名或地址形式指明数据的来源主要以寄存器名或地址形式指明数据的来源n通常的指令都有一个或两个操作数通常的指令都有一个或两个操作数n有些指令无操作数,个别指令有有些指令无操作数,个别指令有3 3或或4 4个操作数个操作数n多数操作数需要显式指明,有些操作数隐含使用多数操作数需要显式指明,有些操作数隐含使用第第1 1章章 汇编语言基础汇编语言基础45451.3.1 1.3.1 指令的代码格式(指令的代码格式(Instruction FormatInstruction Format)IA-32IA-32处理器采用可变长度指令格式处理器采用可变长度指令格式操作码操作码n可选的指令
45、前缀(用于扩展指令功能)可选的指令前缀(用于扩展指令功能)n1 13 3字节的主要操作码字节的主要操作码操作数操作数n可选的寻址方式域(包括可选的寻址方式域(包括ModRModR/M/M和和SIBSIB字段)字段)n可选的位移量可选的位移量n可选的立即数可选的立即数第第1 1章章 汇编语言基础汇编语言基础4646使用最多、最基本的数据传送指令使用最多、最基本的数据传送指令传送指令的助记符:传送指令的助记符:MOVMOV(取自(取自MoveMove)n将数据从一个位置传送到另一个位置将数据从一个位置传送到另一个位置n类似高级语言的赋值语句类似高级语言的赋值语句movmov dest,srcdes
46、t,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章章 汇编语言基础汇编语言基础4747传送指令传送指令MOVMOV的功能演示的功能演示返回返回源操作数源操作数 src目的操作数目的操作数 dest30H30H被传送的数据被传送的
47、数据第第1 1章章 汇编语言基础汇编语言基础48481.3.2 1.3.2 语句格式语句格式源程序由语句组成源程序由语句组成一个语句常占一行(一个语句常占一行(MASMMASM有续行符有续行符“”)一个语句不超过一个语句不超过132132个字符,个字符,4 4个部分个部分执行性语句执行性语句:表达处理器指令(硬指令)表达处理器指令(硬指令)标号标号:硬指令助记符硬指令助记符 操作数操作数,操作数操作数 ;注释注释说明性语句说明性语句:表达伪指令,控制汇编方式表达伪指令,控制汇编方式名字名字 伪指令助记符伪指令助记符 参数参数,参数参数,;注释注释这是这是MASM语法,但具有一般性语法,但具有一
48、般性第第1 1章章 汇编语言基础汇编语言基础49491.1.标号与名字标号与名字标号标号:执行性语句中:执行性语句中n冒号分隔冒号分隔n表示处理器指令在主存中的逻辑地址表示处理器指令在主存中的逻辑地址n指示分支、循环等程序的目的地址指示分支、循环等程序的目的地址名字名字:说明性语句中:说明性语句中n空格或制表符分隔空格或制表符分隔n变量名、段名、子程序名等变量名、段名、子程序名等n反映变量、段和子程序等的逻辑地址反映变量、段和子程序等的逻辑地址标号和名字是用户自定义的标识符标号和名字是用户自定义的标识符第第1 1章章 汇编语言基础汇编语言基础5050标识符(标识符(IdentifierIden
49、tifier)最多由最多由3131个字母、数字及规定的特殊符号(如个字母、数字及规定的特殊符号(如 _ _、$、?、)组成,)组成,不能以数字开头不能以数字开头一个源程序中,用户定义的每个标识符一个源程序中,用户定义的每个标识符必须唯一必须唯一不能是不能是汇编程序采用的汇编程序采用的保留字保留字保留字(保留字(Reserved WordReserved Word)是编程语言本身需要使用)是编程语言本身需要使用的各种具有特定含义的标识符、也称为关键字的各种具有特定含义的标识符、也称为关键字n硬指令助记符:硬指令助记符:MOVMOVn伪指令助记符:伪指令助记符:BYTEBYTEn操作符:操作符:OFFSETOFFSETn寄存器名:寄存器名:EAXEAX取名原则类似高级语言取名原则类似高级语言但默认不区别大小写字母但默认不区别大小写字母第第1 1章章 汇编语言基础汇编语言基础51512.2.助记符助记符助记符是帮助记忆指令功能的符号助记符是帮助记忆指令功能的符号n硬指令助记符表示处理器指令硬指令助记符表示处理器指令n伪指令助记符表达一个汇编命令伪指令助记符表达一个汇编命令处理器指令示例:传送指令处理器指令示例:传送指令 MOVMOV伪指令示例:字节变量定义伪指令示例:字节变量定义n助记符:助记符:BYTEBYTE (或(或DBDB)n功能:在主存中占用若干的存储空间,用于保存功能:在主