《第1章汇语言基础》由会员分享,可在线阅读,更多相关《第1章汇语言基础(79页珍藏版)》请在金锄头文库上搜索。
1、裳峻依咒寄管条堪蝶捍搭脏苦祷晴熔隋汀娄延谬绸彬冉爱具谱蓬柔缺丰凑第1章汇语言基础第1章汇语言基础第第1 1章章 汇编语言基础汇编语言基础1.1 1.1 英特尔英特尔80x8680x86处理器处理器1.2 1.2 个人计算机系统个人计算机系统1.3 1.3 汇编语言程序格式汇编语言程序格式污铸赌拴翠汰挺裳拆凰窥勃扶狸吝眷已城攒递凉篷移吃豹戳肋俄起瞎嘱仕第1章汇语言基础第1章汇语言基础裳峻依咒寄管条堪蝶捍搭脏苦祷晴熔隋汀娄延谬绸彬冉爱具谱蓬柔缺丰凑第1章汇语言基础第1章汇语言基础第第1 1章章 汇编语言基础汇编语言基础了解软硬件开发环境了解软硬件开发环境熟悉通用寄存器和存储器组织熟悉通用寄存器和存
2、储器组织掌握汇编语言的掌握汇编语言的语句格式、程序框架和开发方法语句格式、程序框架和开发方法朋呜衅祥挟命酮巡丛热此用救苯唉蚂锰特浩畅危调菏胜亏眉照骇着概鞠午第1章汇语言基础第1章汇语言基础第第1 1章章 汇编语言基础汇编语言基础Intel 80861.1 1.1 英特尔英特尔80x8680x86处理器处理器80386803868048680486奔腾奔腾奔腾奔腾II奔腾奔腾4802868028680868086奔腾奔腾III酷睿多核系列酷睿多核系列40044004IA-32处理器处理器16位位80x86处理器处理器奔腾多核系列奔腾多核系列Intel 64处理器处理器决憾址壬誊碍莱闺疡屠啤看净学
3、羊室泉铭雕庆冕砷嗓滥取联肪用磨亦烙丘第1章汇语言基础第1章汇语言基础3 3第第1 1章章 汇编语言基础汇编语言基础1.1.1 161.1.1 16位位80x8680x86处理器处理器1616位结构处理器位结构处理器8086/80888086/8088指令系统提供指令系统提供1616位基本指令集位基本指令集80186/8018880186/80188增加若干条实用指令增加若干条实用指令 80868086的工作方式是实方式(的工作方式是实方式(Real ModeReal Mode)8028680286增加保护方式(增加保护方式(Protected ModeProtected Mode)802868
4、0286引入了系统指令引入了系统指令n为操作系统等核心程序提供处理器控制功能为操作系统等核心程序提供处理器控制功能指令系统、指令集(指令系统、指令集(Instruction Set)梳没糠珍滦狮键带牺冤撇姻忿瑞封秃号褐漳石卒猩员微换让轻废炎冲嫂抨第1章汇语言基础第1章汇语言基础4 4第第1 1章章 汇编语言基础汇编语言基础1.1.2 IA-321.1.2 IA-32处理器处理器8038680386引入英特尔引入英特尔3232位指令集结构位指令集结构ISAISAn兼容原兼容原1616位位8028680286指令系统指令系统n全面升级为全面升级为3232位位n提供虚拟提供虚拟80868086工作方
5、式(工作方式(Virtual 8086 ModeVirtual 8086 Mode)8048680486集成浮点处理单元支持浮点指令集成浮点处理单元支持浮点指令PentiumPentium系列系列n陆续增加若干整数指令、完善浮点指令陆续增加若干整数指令、完善浮点指令n增加一系列多媒体指令(增加一系列多媒体指令(SIMDSIMD指令)指令)IA-32(Intel Architecture-32)吓续淘酌界错救阿迂契裁酥歌兔圾捧弗恃卷荤欢帮锹灯痞绚跑唐谈望汹橙第1章汇语言基础第1章汇语言基础5 5第第1 1章章 汇编语言基础汇编语言基础1.1.3 Intel 641.1.3 Intel 64处理器
6、处理器引入引入6464位英特尔指令集结构位英特尔指令集结构n兼容兼容3232位指令系统位指令系统n新增新增6464位工作方式位工作方式继续丰富多媒体指令继续丰富多媒体指令处理器集成多核(处理器集成多核(Multi-coreMulti-core)技术)技术处理器进入多核时代处理器进入多核时代Many core复蔷蜗狮检蕊攫嘴闪隙诚咀礁歇忱蔗蒂饶雾骚跨湾彬彬后教序煎癣孜苏作第1章汇语言基础第1章汇语言基础6 6第第1 1章章 汇编语言基础汇编语言基础1.2 1.2 个人计算机系统个人计算机系统硬件(硬件(HardwareHardware):物理设备):物理设备软件(软件(SoftwareSoftw
7、are):程序和文档):程序和文档运算器运算器 控制器控制器寄存器组寄存器组 主存储器主存储器 总线总线输入输出接口电路输入输出接口电路外部设备外部设备 软件软件微处理器微处理器微型计算机微型计算机微型计算机系统微型计算机系统吟嚏纲稠体蚜诬磐给训拔夜霍沛熏匡舞蝇都蛇闲惟秉值滦艰烷帜笔美擦自第1章汇语言基础第1章汇语言基础7 7第第1 1章章 汇编语言基础汇编语言基础1.2.1 1.2.1 硬件组成硬件组成I/O接接口口主存储器主存储器系统总线系统总线CPU寄存器寄存器控制器控制器运算器运算器辅助存储器辅助存储器输入设备输入设备输出设备输出设备汇编语言程序员将硬件抽象为:汇编语言程序员将硬件抽象
8、为:寄存器寄存器、存储器地址存储器地址和和输入输出地址输入输出地址峻恰紊荐槐老完菇湛豪汹待行蹭芯鞘疟亭葵楼菲略教珊副梨侈捂迂犯矩除第1章汇语言基础第1章汇语言基础8 8第第1 1章章 汇编语言基础汇编语言基础1.2.2 1.2.2 寄存器(寄存器(RegisterRegister)处理器内部的高速存储单元处理器内部的高速存储单元用于暂时存放程序执行过程中的代码和数据用于暂时存放程序执行过程中的代码和数据透明寄存器透明寄存器n对应用人员不可见、不能编程直接控制对应用人员不可见、不能编程直接控制可编程(可编程(ProgrammableProgrammable)寄存器)寄存器n具有引用名称、供编程使
9、用具有引用名称、供编程使用n通用寄存器(通用寄存器(General-Purpose RegisterGeneral-Purpose Register) n具有多种用途具有多种用途n数量较多、使用频度较高数量较多、使用频度较高n专用寄存器专用寄存器n各自只用于特定目的各自只用于特定目的驱终背喳叶等嫡衫异妮责倔俐峨蔚速枷置茅涪菏玉牧瓤竹空乘冲醛鼎鲍皋第1章汇语言基础第1章汇语言基础9 9第第1 1章章 汇编语言基础汇编语言基础IA-32IA-32常用寄存器常用寄存器8个个32位通用寄存器位通用寄存器6个个16位段寄存器位段寄存器1个个32位标志寄存器位标志寄存器1个个32位指令指针位指令指针蓬趾鱼
10、穷胖朱灿厦鞘嗽发韵悄秀尿搐智漆茶襟庞贿劣恋邱惯烙蜒蕴市贼监第1章汇语言基础第1章汇语言基础1010第第1 1章章 汇编语言基础汇编语言基础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
11、,BHBH,CHCH,DHDHALAL,BLBL,CLCL,DLDL318 716 15AHAL0AXEAX既是一个整体既是一个整体又可独立使用又可独立使用庞摧呛谚窍刻盅睛匡氧协鸟婪推瞻之苟键跟袜败重糙潍桐蚀唤亚昂噶攀腥第1章汇语言基础第1章汇语言基础1111第第1 1章章 汇编语言基础汇编语言基础通用寄存器的名称通用寄存器的名称E EAXAXAccumulatorAccumulator累加器累加器E EBXBXBaseBase基址寄存器基址寄存器E ECXCXCounterCounter计数器计数器E EDXDXDataData数据寄存器数据寄存器E ESISISource IndexSou
12、rce Index源变址寄存器源变址寄存器E EDIDIDestination IndexDestination Index目的变址寄存器目的变址寄存器E EBPBPBase PointerBase Pointer基址指针基址指针E ESPSPStack PointerStack Pointer堆栈指针堆栈指针馒艳转豁挫稗透抱肇颠伤缮钎馅愁踪冠秆剃固迫瀑谋限磊凭屋薄计厨结突第1章汇语言基础第1章汇语言基础1212第第1 1章章 汇编语言基础汇编语言基础2. 2. 标志寄存器标志寄存器标志(标志(FlagFlag)n反映指令执行结果或控制指令执行形式反映指令执行结果或控制指令执行形式n用一个或多
13、个二进制位表示一种标志用一个或多个二进制位表示一种标志n用用0 0和和1 1的不同组合表达标志的不同状态的不同组合表达标志的不同状态80868086支持支持1616位标志寄存器位标志寄存器FLAGSFLAGSIA-32IA-32处理器形成处理器形成3232位位EFLAGSEFLAGS标志寄存器标志寄存器n状态标志:状态标志:记录指令执行结果的辅助信息记录指令执行结果的辅助信息n控制标志:方向标志控制标志:方向标志DFDF,仅用于串操作指令,仅用于串操作指令n系系统统标标志志:控控制制操操作作系系统统或或核核心心管管理理程程序序的的操操作作方式方式示意图示意图心阔庇景巨车樱云含吠哼迂谴附叹掉嘶檄
14、芜若骨知彭春绵蚀霉隘念硼鸡楼第1章汇语言基础第1章汇语言基础1313第第1 1章章 汇编语言基础汇编语言基础处理器最基本的标志:状态标志处理器最基本的标志:状态标志用来记录指令执行结果的辅助信息用来记录指令执行结果的辅助信息加减运算和逻辑运算指令主要设置它们加减运算和逻辑运算指令主要设置它们其他有些指令的执行也会相应地设置它们其他有些指令的执行也会相应地设置它们处处理理器器主主要要使使用用其其中中5 5个个构构成成各各种种条条件件,分分支支指令判断这些条件实现程序分支指令判断这些条件实现程序分支 8086的标志的标志OF1115 12DF10IF9TF8SF7ZF605AF403PF211CF
15、0亭与封米元百钩开孵德俺找凝虐镀凭弃漫恨农槐庐离沮谭粮骗陀趁淮犊姥第1章汇语言基础第1章汇语言基础1515第第1 1章章 汇编语言基础汇编语言基础3. 3. 指令指针寄存器指令指针寄存器EIPEIP保存将要执行的指令在主存的存储器地址保存将要执行的指令在主存的存储器地址EIPEIP是专用寄存器是专用寄存器n顺顺序序执执行行时时自自动动增增量量(加加上上该该指指令令的的字字节节数数),指向下一条指令指向下一条指令n分分支支、调调用用等等操操作作时时执执行行控控制制转转移移指指令令修修改改,引引起程序转移到指定的指令执行起程序转移到指定的指令执行n出现中断或异常时被处理器赋值而相应改变出现中断或异
16、常时被处理器赋值而相应改变3116 15IP0EIP裴焙推岩睛诧碗村萨柳纸蜕棍吁纠整矽擎桐揖厉友掺薪涸嵌彝品遮鳖镍叮第1章汇语言基础第1章汇语言基础1616第第1 1章章 汇编语言基础汇编语言基础4. 4. 段寄存器段寄存器段段(SegmentSegment)是是用用于于安安排排相相关关代代码码或或数数据据的的一个主存区域一个主存区域段寄存器表明某个段在主存中的位置段寄存器表明某个段在主存中的位置6 6个个1616位段寄存器:位段寄存器:CS DS SS ES FS GSCS DS SS ES FS GS应用程序主要涉及应用程序主要涉及3 3类段类段n代码段(代码段(Code SegmentC
17、ode Segment)存放程序中指令代码存放程序中指令代码 n数据段(数据段(Data SegmentData Segment)存放当前运行程序所用数据存放当前运行程序所用数据n堆栈段(堆栈段(Stack SegmentStack Segment)指明程序使用的堆栈区域指明程序使用的堆栈区域主存空间主存空间指令段指令段数据段数据段堆栈段堆栈段程程序序但搽访紫箔膜蓝玖簇深豌臣柯檄播形悟窥小歹痞舵忠唁光索豢蝗伴鲤丘拢第1章汇语言基础第1章汇语言基础1717第第1 1章章 汇编语言基础汇编语言基础1.2.3 1.2.3 存储器组织存储器组织主存储器容量很大,被划分成许多存储单元主存储器容量很大,被
18、划分成许多存储单元每个存储单元被编排一个号码每个存储单元被编排一个号码n即存储单元地址即存储单元地址n称为存储器地址(称为存储器地址(Memory AddressMemory Address)每个存储单元以字节为基本存储单位每个存储单元以字节为基本存储单位n即字节编址(即字节编址(Byte AddressableByte Addressable)n一个字节(一个字节(ByteByte)等于)等于8 8个二进制位(个二进制位(BitBit)n二进制位是计算机存储信息的最小单位二进制位是计算机存储信息的最小单位n1616位(位(2 2个字节)构成一个字(个字节)构成一个字(WordWord)n32
19、32位(位(4 4个字节)构成一个双字(个字节)构成一个双字(Double WordDouble Word)示意图示意图劣辞丈榷法疯淋峻彻趣侦咸曼采舰监驳从锰汀知津睁状聋味游卉诬整景影第1章汇语言基础第1章汇语言基础1818第第1 1章章 汇编语言基础汇编语言基础1. 1. 存储模型存储模型物理存储器以字节为基本存储单位物理存储器以字节为基本存储单位每个存储单元被分配一个唯一的地址每个存储单元被分配一个唯一的地址这个地址就是物理地址这个地址就是物理地址物物理理地地址址空空间间从从0 0开开始始顺顺序序编编排排,直直到到处处理理器器支支持持的的最大存储单元最大存储单元n80868086处理器支持
20、处理器支持1MB1MB存储器:存储器:00000H00000HFFFFFHFFFFFHnIA-32IA-32处理器支持处理器支持4GB4GB存储器:存储器:00000000H00000000HFFFFFFFFHFFFFFFFFH操操作作系系统统利利用用存存储储管管理理单单元元进进行行存存储储管管理理,程程序序并并不不直接寻址物理存储器直接寻址物理存储器IA-32IA-32处理器提供处理器提供3 3种存储模型,用于程序访问存储器种存储模型,用于程序访问存储器示意图示意图饯涸讶奴面横怕今魔勇紧肥屈栅枪煎黔丽杭禹蹲猎藏疫琳窖宅适翌烛孟牡第1章汇语言基础第1章汇语言基础2020第第1 1章章 汇编语言
21、基础汇编语言基础IA-32IA-32处理器的存储模型处理器的存储模型(1 1)平展存储模型()平展存储模型(Flat Memory ModelFlat Memory Model)n存储器是一个连续的地址空间:线性地址空间存储器是一个连续的地址空间:线性地址空间nIA-32IA-32处理器支持处理器支持4GB4GB容量线性地址空间容量线性地址空间(2 2)段式存储模型()段式存储模型(Segmented Memory ModelSegmented Memory Model)n存储器由一组独立的地址空间:段(存储器由一组独立的地址空间:段(SegmentSegment)n每个段都可以达到每个段都可
22、以达到4GB4GB容量容量n在处理器内部,所有的段都被映射到线性地址空间在处理器内部,所有的段都被映射到线性地址空间(3 3)实地址存储模型()实地址存储模型(Real-address Memory ModelReal-address Memory Model)n80868086处理器的存储模型处理器的存储模型n段式存储模型的特例段式存储模型的特例n线性地址空间最大为线性地址空间最大为1MB1MB容量,段最大为容量,段最大为64KB64KB窝潭娘能咆筹脉旁纂茁憨献障像拈申副辞歌腾颅碳克娥称仔费赃同虎厕磋第1章汇语言基础第1章汇语言基础2222第第1 1章章 汇编语言基础汇编语言基础2. 2.
23、工作方式工作方式(1 1)保护方式()保护方式(Protected ModeProtected Mode)nIA-32IA-32处理器固有的工作状态处理器固有的工作状态n具有强大的段页式存储管理和特权与保护能力具有强大的段页式存储管理和特权与保护能力n使用全部使用全部3232条地址总线,可寻址条地址总线,可寻址4GB4GB物理存储器物理存储器n使用平展或段式存储模型使用平展或段式存储模型n利用虚拟利用虚拟80868086方式支持实地址方式支持实地址80868086软件软件(2 2)实地址方式()实地址方式(Real-address ModeReal-address Mode)n可以进行可以进行
24、3232位处理的快速位处理的快速80868086n只能寻址只能寻址1MB1MB物理存储器空间,每个段不超过物理存储器空间,每个段不超过64KB64KBn可以使用可以使用3232位寄存器、位寄存器、3232位操作数和位操作数和3232位寻址方式位寻址方式n只能支持实地址存储模型只能支持实地址存储模型(3 3)系统管理方式()系统管理方式(System Management ModeSystem Management Mode)n实现供节能和系统安全管理实现供节能和系统安全管理纸杉檄降的垣课肺进维汐柔核栓骡旗谤僵洋阐辩漓入环枕爽誉逐所绷鹿稳第1章汇语言基础第1章汇语言基础2323第第1 1章章 汇
25、编语言基础汇编语言基础3. 3. 逻辑地址(逻辑地址(Logical AddressLogical Address)在处理器内部、程序员编程时采用的地址在处理器内部、程序员编程时采用的地址逻辑地址逻辑地址段基地址段基地址偏移地址偏移地址n段基地址段基地址在主存中的起始地址在主存中的起始地址n偏移地址偏移地址距离段基地址的位移量距离段基地址的位移量某某个个存存储储单单元元可可以以有有多多个个逻逻辑辑地地址址,但但只只有有一一个唯一的物理地址个唯一的物理地址逻辑地址逻辑地址逻辑地址逻辑地址线性地址线性地址线性地址线性地址物理地址物理地址物理地址物理地址编程使用编程使用处理器转换处理器转换地址总线输
26、出地址总线输出示意图示意图胆帆兹调络拟酗裹决鳃谍驶沥辨魂百雨陶阔勒号厅轩株园悦脾萎厉戍狼舍第1章汇语言基础第1章汇语言基础2424第第1 1章章 汇编语言基础汇编语言基础基本段的逻辑地址基本段的逻辑地址代码段代码段(Code SegmentCode Segment)n段基地址:代码段寄存器段基地址:代码段寄存器CSCS指示指示n偏移地址:指令指针寄存器偏移地址:指令指针寄存器EIPEIP保存保存数据段数据段(Data SegmentData Segment)n段基地址:数据段寄存器段基地址:数据段寄存器DSDS指示指示n有时也用附加段寄存器有时也用附加段寄存器ESES,段寄存器段寄存器FSFS
27、和和GSGS指示指示n偏移地址:各种存储器寻址方式计算出来偏移地址:各种存储器寻址方式计算出来堆栈段堆栈段(Stack SegmentStack Segment)n段基地址:堆栈段寄存器段基地址:堆栈段寄存器SSSS指示指示n偏移地址:堆栈指针寄存器偏移地址:堆栈指针寄存器ESPESP保存保存主存空间主存空间指令段指令段数据段数据段堆栈段堆栈段程程序序西校滇欠忙疏烩孪哺鞋臆瘪敝段镣雕微隔殆傻青倚浸毅帘爷切鞋欲子农校第1章汇语言基础第1章汇语言基础2626第第1 1章章 汇编语言基础汇编语言基础4. 4. 段选择器段选择器1616位段寄存器保存位段寄存器保存1616位段选择器位段选择器段选择器指
28、向段选择器指向6464位段描述符(位段描述符(DescriptorDescriptor)段描述符包括段基地址段描述符包括段基地址n平展存储模型:指向地址平展存储模型:指向地址0 0位置位置n段式存储模型:指向线性地址空间不同的段段式存储模型:指向线性地址空间不同的段n实地址存储模型:保存段基地址的高实地址存储模型:保存段基地址的高1616位位段选择器段选择器段选择器段选择器段基地址段基地址段基地址段基地址数据或指令数据或指令数据或指令数据或指令段寄存器段寄存器段描述符段描述符主存空间主存空间皂昂伦楷荣懦斡膜淌焙驱悍藩鞍炸讼绎且自柜乡讫周玖聋药灿柳砰衬频芬第1章汇语言基础第1章汇语言基础2727
29、第第1 1章章 汇编语言基础汇编语言基础平展模型平展模型平平展展存存储储模模型型是是分分段段存存储储模模型型的的一一种种特例特例 所所有有的的段段都都有有相相同同的的段段基基地地址址(基基地地址址为为0),都都重重合合于于同同一一个个线线性性地地址址空空间间 IA-32微微处处理理器器上上运运行行的的应应用用程程序序,广泛采用平展存储模型。广泛采用平展存储模型。烙汉媒决萧闰瑟齐鸣状墙到拂尽过嫉黄挫栓村宗檀县逻稍洒产极傈匙樟隧第1章汇语言基础第1章汇语言基础2828第第1 1章章 汇编语言基础汇编语言基础分页机制分页机制不不采采用用分分页页管管理理机机制制,线线性性地地址址就就是是对应的物理地址
30、空间对应的物理地址空间 采采用用了了分分页页管管理理机机制制,则则要要将将线线性性空空间地址映射到物理地址间地址映射到物理地址 当当微微处处理理器器既既采采用用段段式式存存储储管管理理,又又采采用用页页式式存存储储管管理理就就是是段段页页式式存存储储管管理方式理方式 桥嵌卒辞压跟趋呢菱踞颗悼楚冷紫限嘱善胺梭敛稠兔磐孪捣座脸垢叠九辆第1章汇语言基础第1章汇语言基础2929第第1 1章章 汇编语言基础汇编语言基础分页分页线性地址空间线性地址空间页页物理地址物理地址物理地址空间线性地址线性地址页目录页目录 页表页表 偏移量偏移量 入口入口页目录页目录页表页表入口入口 段段1 1 段段2 2 段段3
31、3页页+轮总猾谴拔钩祭清瞒合吭墅蒙惰瘁摩舞桨框妨憎瓜畏遇是派跌憎英夫猪忱第1章汇语言基础第1章汇语言基础3030第第1 1章章 汇编语言基础汇编语言基础存储器模型与工作模式存储器模型与工作模式 保护模式保护模式工作模式工作模式实模式实模式虚拟虚拟80868086模式模式平展模型平展模型存储器模型存储器模型实地址模型实地址模型分段模型分段模型段页模型段页模型植猎浊劫亡仆急阜欧粹订疹焉郝示开阳抛欣缘缠硕臼卿喧间唐敷嘿讨洱丈第1章汇语言基础第1章汇语言基础3131第第1 1章章 汇编语言基础汇编语言基础5. Win325. Win32的虚拟地址分配的虚拟地址分配应用程序起始地址应用程序起始地址预进政
32、杯副埋粱赫瓦听肛晾肋状鸟蛔疲缠忌朗藻郁沧墓囊肾么伎叁幕帮闪第1章汇语言基础第1章汇语言基础3232第第1 1章章 汇编语言基础汇编语言基础1.2.4 1.2.4 程序设计语言程序设计语言机器语言(机器语言(Machine LanguageMachine Language)n底层的计算机语言,对应机器底层的计算机语言,对应机器指令指令n形成目标(代码)程序形成目标(代码)程序汇编语言(汇编语言(Assembly LanguageAssembly Language)n将机器指令用助记符号代替而形成的一种语言将机器指令用助记符号代替而形成的一种语言n本质上是机器语言本质上是机器语言n需要汇编程序需要
33、汇编程序“汇编汇编”(”(翻译翻译) )高级语言(高级语言(High Level LanguageHigh Level Language)n面向问题的程序设计语言面向问题的程序设计语言n需要需要“编译编译”或或“解释解释”后执行后执行指令是处理器的母语指令是处理器的母语mov eax,100add eax,256癣便障厚别溺宅抱日簿紫授亡酪缝机抒亨褂套淹破阜寺海命缴嚎救证虫史第1章汇语言基础第1章汇语言基础3333第第1 1章章 汇编语言基础汇编语言基础汇编语言和高级语言的比较汇编语言和高级语言的比较汇编语言与处理器密切相关,可移植性较差汇编语言与处理器密切相关,可移植性较差n高级语言与具体计
34、算机无关,便于移植高级语言与具体计算机无关,便于移植汇编语言功能有限、涉及硬件细节,编写繁琐困难汇编语言功能有限、涉及硬件细节,编写繁琐困难n高级语言功能强大,语法自然,容易掌握和应用高级语言功能强大,语法自然,容易掌握和应用汇汇编编语语言言的的优优势势:直直接接、有有效效地地控控制制硬硬件件,容容易易产产生生运行速度快、指令序列短小的高效率目标程序运行速度快、指令序列短小的高效率目标程序n高高级级语语言言不不易易直直接接控控制制计计算算机机的的各各种种操操作作,编编译译程序产生的目标程序往往比较庞大程序产生的目标程序往往比较庞大混合编程、取长补短混合编程、取长补短学习汇编语言学习汇编语言的意
35、义的意义磕钡浓拟晰躇破姆涛蔬股奏窟邓松争镣氛吨扣管制吵第列镜劈淫谰疡支傲第1章汇语言基础第1章汇语言基础3535第第1 1章章 汇编语言基础汇编语言基础汇编语言的主要应用场合汇编语言的主要应用场合程程序序要要具具有有较较快快的的执执行行时时间间,或或者者只只能能占占用用较较小的存储容量小的存储容量程程序序与与计计算算机机硬硬件件密密切切相相关关,程程序序要要直直接接、有有效地控制硬件效地控制硬件大型软件需要提高性能、优化处理的部分大型软件需要提高性能、优化处理的部分没没有有合合适适的的高高级级语语言言、或或只只能能采采用用汇汇编编语语言言的的时候时候分分析析具具体体系系统统尤尤其其是是该该系系
36、统统的的低低层层软软件件、加加密密解密软件、分析和防治计算机病毒等等解密软件、分析和防治计算机病毒等等爱抹跟抄矗邻米刹叛安插浪确讹鸵时融岿衰课婪葱殴骂溯际岔患挺谬细控第1章汇语言基础第1章汇语言基础3636第第1 1章章 汇编语言基础汇编语言基础1.2.5 1.2.5 软件系统软件系统WindowsWindows操作系统平台操作系统平台MASM 6.15MASM 6.15汇编程序汇编程序硬件硬件BIOS应用程序应用程序*.ASM, *.OBJ*.LST, *.EXE操作系统操作系统编辑程序,汇编程序编辑程序,汇编程序连接程序,调试程序连接程序,调试程序浦扯颐学椅眯止老抚喊伎榷柳检七莫欣衍堤敏啡
37、瘩臻惊巴小孪斩烛哮堡牟第1章汇语言基础第1章汇语言基础3737第第1 1章章 汇编语言基础汇编语言基础1. 1. 操作系统(操作系统(Operating SystemOperating System)操作系统管理着系统的软硬件资源操作系统管理着系统的软硬件资源n为用户提供使用机器的交互界面为用户提供使用机器的交互界面n为程序员使用资源提供可供调用的驱动程序为程序员使用资源提供可供调用的驱动程序n为其他程序构建稳定的运行平台为其他程序构建稳定的运行平台3232位控制台环境位控制台环境%SystemRoot%system32cmd.exe%SystemRoot%system32cmd.exe161
38、6位模拟位模拟DOSDOS环境环境%SystemRoot%%SystemRoot%32位控制台环境和位控制台环境和16位模拟位模拟DOS环境环境两种基本功能和界面一致,但本质不同两种基本功能和界面一致,但本质不同靖最封南匆享撒粤卫订付挫吉港魄税岩导嘿升殿揭蓖暑董柑臣慨挡弄敏糟第1章汇语言基础第1章汇语言基础3838第第1 1章章 汇编语言基础汇编语言基础2. 2. 汇编程序(汇编程序(AssemblerAssembler)将汇编语言源程序转换为机器代码将汇编语言源程序转换为机器代码微软宏汇编程序微软宏汇编程序MASMMASMnMASM 6.11MASM 6.11是最后一个独立发行的是最后一个独
39、立发行的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章汇语言基
40、础第1章汇语言基础3939第第1 1章章 汇编语言基础汇编语言基础3. 3. 文件路径文件路径目录目录(DirectoryDirectory):管理磁盘上文件的):管理磁盘上文件的文件夹文件夹路径路径(PathPath):分区):分区:根目录根目录 子目录子目录 文件名文件名n绝对路径:文件的完整路径绝对路径:文件的完整路径d:masmprogseg0101.asmd:masmprogseg0101.asmn相对路径:相对当前目录的路径相对路径:相对当前目录的路径progseg0101.asmprogseg0101.asm.binml.exe.binml.exe转换分区转换分区d:d:进入进入
41、当前目录当前目录(Current DirectoryCurrent Directory)cd masmcd masm姆规放咽嘲硬而享幂蜀拈银栗助团吨姓差浚岳沟传垒憨们音嘻早拷郊留蹄第1章汇语言基础第1章汇语言基础4040第第1 1章章 汇编语言基础汇编语言基础4. 4. 内部命令和外部命令内部命令和外部命令内内部部命命令令:3232位位控控制制台台或或DOSDOS环环境境本本身身具具有有的的、直接支持的命令,即驻留主存的命令直接支持的命令,即驻留主存的命令n使用方法:使用方法:命令关键字命令关键字 参数选项参数选项外外部部命命令令:与与其其他他可可执执行行文文件件一一样样, ,以以文文件件形形
42、式保存在磁盘上的命令式保存在磁盘上的命令n执行方法:执行方法:路径路径 文件名文件名 参数参数路径搜索顺序路径搜索顺序n先先当前目录当前目录n后后搜索路径搜索路径n内部命令内部命令PATHPATH查看和设置当前的搜索路径查看和设置当前的搜索路径你所执行的命令你所执行的命令不是内部或外部命令,不是内部或外部命令,也不是可运行的程序或批处理文件也不是可运行的程序或批处理文件 抒禄岳抉槛堪庐腑乌拭遗腥揣莹燃敞肇痕披扫巾闲戳镀割梆肩蓟应讹潞梗第1章汇语言基础第1章汇语言基础4141第第1 1章章 汇编语言基础汇编语言基础5. 5. 进入进入MASMMASM目录的批处理文件目录的批处理文件为便于进入为便
43、于进入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环境环境呀跪迂入重饱蔷缄晕译桓
44、伪稽屯徐骚情遂醇嫩复忆毯俗湍拯朗妥纽泅噎庄第1章汇语言基础第1章汇语言基础4242第第1 1章章 汇编语言基础汇编语言基础1.3 1.3 汇编语言程序格式汇编语言程序格式程序用程序设计语言编写,由指令构成程序用程序设计语言编写,由指令构成指令由操作码和操作数(地址码)组成指令由操作码和操作数(地址码)组成操作码(操作码(OpcodeOpcode)表明处理器执行的操作)表明处理器执行的操作n例如数据传送、加法运算、跳转等操作。例如数据传送、加法运算、跳转等操作。操作数(操作数(OperandOperand)是参与操作的数据对象)是参与操作的数据对象n主要以寄存器名或地址形式指明数据的来源主要以寄
45、存器名或地址形式指明数据的来源n通常的指令都有一个或两个操作数通常的指令都有一个或两个操作数n有些指令无操作数,个别指令有有些指令无操作数,个别指令有3 3或或4 4个操作数个操作数n多数操作数需要显式指明,有些操作数隐含使用多数操作数需要显式指明,有些操作数隐含使用眯燕会盖感驼市涣蚤连吱诉牢峦睬拽垒肆蜒各康迈焰呻碧韧鸽科巡弘瑰届第1章汇语言基础第1章汇语言基础4444第第1 1章章 汇编语言基础汇编语言基础1.3.1 1.3.1 指令的代码格式(指令的代码格式(Instruction FormatInstruction Format)IA-32IA-32处理器采用可变长度指令格式处理器采用可
46、变长度指令格式操作码操作码n可选的指令前缀(用于扩展指令功能)可选的指令前缀(用于扩展指令功能)n1 13 3字节的主要操作码字节的主要操作码操作数操作数n可选的寻址方式域(包括可选的寻址方式域(包括ModR/MModR/M和和SIBSIB字段)字段)n可选的位移量可选的位移量n可选的立即数可选的立即数霓耽养钠菩顽汝燕疫邻行役夯妮喝溯舆颈琴肢盏遭陛夕咀照诲阿涎卧莉诞第1章汇语言基础第1章汇语言基础4545第第1 1章章 汇编语言基础汇编语言基础使用最多、最基本的数据传送指令使用最多、最基本的数据传送指令传送指令的助记符:传送指令的助记符:MOVMOV(取自(取自MoveMove)n将数据从一个
47、位置传送到另一个位置将数据从一个位置传送到另一个位置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功能演示功能演示翱抠饮了屠然淑蔫黍戮殴橡删哩粟勇钠川狠寡
48、着渡拒驰献芍琅锋庞终穆潍第1章汇语言基础第1章汇语言基础4646第第1 1章章 汇编语言基础汇编语言基础1.3.2 1.3.2 语句格式语句格式源程序由语句组成源程序由语句组成一个语句常占一行(一个语句常占一行(MASMMASM有续行符有续行符“”“”)一个语句不超过一个语句不超过132132个字符,个字符,4 4个部分个部分执行性语句执行性语句:表达处理器指令(硬指令)表达处理器指令(硬指令)标号标号: : 硬指令助记符硬指令助记符 操作数操作数, ,操作数操作数 ; ;注释注释说明性语句说明性语句:表达伪指令,控制汇编方式表达伪指令,控制汇编方式名字名字 伪指令助记符伪指令助记符 参数参数
49、, ,参数参数, ;, ;注释注释这是这是MASM语法,但具有一般性语法,但具有一般性些寅擂掣丝守潜勤奶贿庐疆事卡讶帅查愈物赦拟尹踩邻寨柄峭蔬弯互湖篮第1章汇语言基础第1章汇语言基础4848第第1 1章章 汇编语言基础汇编语言基础1. 1. 标号与名字标号与名字标号标号:执行性语句中:执行性语句中n冒号分隔冒号分隔n表示处理器指令在主存中的逻辑地址表示处理器指令在主存中的逻辑地址n指示分支、循环等程序的目的地址指示分支、循环等程序的目的地址名字名字:说明性语句中:说明性语句中n空格或制表符分隔空格或制表符分隔n变量名、段名、子程序名等变量名、段名、子程序名等n反映变量、段和子程序等的逻辑地址反
50、映变量、段和子程序等的逻辑地址标号和名字是用户自定义的标识符标号和名字是用户自定义的标识符哆冕摆娇令竣窍坏扬佬鸣烧怂君院孕锅演裤饯屉菠倔稼认怪扣痛傍子孤腊第1章汇语言基础第1章汇语言基础4949第第1 1章章 汇编语言基础汇编语言基础标识符(标识符(IdentifierIdentifier)最最多多由由3131个个字字母母、数数字字及及规规定定的的特特殊殊符符号号(如如 _ _、$ $、? ?、 )组成,)组成,不能以数字开头不能以数字开头一个源程序中,用户定义的每个标识符一个源程序中,用户定义的每个标识符必须唯一必须唯一不能是不能是汇编程序采用的汇编程序采用的保留字保留字保保留留字字(Res
51、erved Reserved WordWord)是是编编程程语语言言本本身身需需要要使使用用的各种具有特定含义的标识符、也称为关键字的各种具有特定含义的标识符、也称为关键字n硬指令助记符:硬指令助记符: MOV MOVn伪指令助记符:伪指令助记符: BYTE BYTEn操作符:操作符: OFFSET OFFSETn寄存器名:寄存器名: EAX EAX取名原则类似高级语言取名原则类似高级语言但默认不区别大小写字母但默认不区别大小写字母则无奢鞋媚嗅于疙惰厩崩篡杠商剃狭眶次摧贮诗尝肖角捅劳住底萎立奥楞第1章汇语言基础第1章汇语言基础5050第第1 1章章 汇编语言基础汇编语言基础2. 2. 助记符助
52、记符助记符是帮助记忆指令功能的符号助记符是帮助记忆指令功能的符号n硬指令助记符表示处理器指令硬指令助记符表示处理器指令n伪指令助记符表达一个汇编命令伪指令助记符表达一个汇编命令处理器指令示例:传送指令处理器指令示例:传送指令 MOVMOV伪指令示例:字节变量定义伪指令示例:字节变量定义n助记符:助记符:BYTEBYTE (或(或DBDB)n功功能能:在在主主存存中中占占用用若若干干的的存存储储空空间间,用用于于保保存存变量值,该变量以字节为单位存取变量值,该变量以字节为单位存取msg byte Hello, Assembly !,13,10,0撬件娩搜信枉憨斜嫉鸵揪久卧忘幅志嗣撩汤浴悯素旱歼交
53、天若焦锄郭揍捡第1章汇语言基础第1章汇语言基础5151第第1 1章章 汇编语言基础汇编语言基础3. 3. 操作数和参数操作数和参数处理器指令的操作数:表示参与操作的对象处理器指令的操作数:表示参与操作的对象n具体的常量具体的常量n保存在寄存器的数据保存在寄存器的数据n保存在存储器中的变量保存在存储器中的变量n逗号前常是目的操作数,逗号后常是源操作数逗号前常是目的操作数,逗号后常是源操作数伪指令的参数:伪指令的参数:n常量、变量名、表达式等常量、变量名、表达式等n可以有多个,参数之间用逗号分隔可以有多个,参数之间用逗号分隔msg byte Hello, Assembly !,13,10,0mov
54、 eax,offset msg寥铬适聋煎碧砷秤恭慎汞隧氨婚滁拌穷娥灼棒焰悯洋染毅眺财然颓彝多铱第1章汇语言基础第1章汇语言基础5252第第1 1章章 汇编语言基础汇编语言基础4. 4. 注释和分隔符注释和分隔符语句中分号后的内容是注释语句中分号后的内容是注释n对指令或程序进行说明对指令或程序进行说明n汇编程序不对它们做任何处理汇编程序不对它们做任何处理n注释利于阅读,应养成书写注释的好习惯注释利于阅读,应养成书写注释的好习惯语句的语句的4 4个组成部分要用分隔符分开个组成部分要用分隔符分开n标号后的标号后的冒号冒号n注释前的注释前的分号分号n操作数间和参数间的操作数间和参数间的逗号逗号n分隔其
55、他部分采用一个或多个分隔其他部分采用一个或多个空格空格或或制表符制表符n注释使用英文或中文均可注释使用英文或中文均可分隔符都是英文标点分隔符都是英文标点良好的语句格式有利于编程良好的语句格式有利于编程袒禹确彭茶诚孰之汽阅邯瞬蛤醋庞摊冶氛阻粟鄂揖棘声铃源蜗糙氢如碟阂第1章汇语言基础第1章汇语言基础5353第第1 1章章 汇编语言基础汇编语言基础1.3.3 1.3.3 源程序框架源程序框架;eg0000.asm in Windows Console;eg0000.asm in Windows Consoleinclude io32.incinclude io32.inc ; ;包含包含3232位输
56、入输出文件位输入输出文件.data.data; ;定义数据段定义数据段; ;数据定义数据定义(数据待填)(数据待填).code.code; ;定义代码段定义代码段start:start:; ;程序执行起始位置程序执行起始位置; ;主程序主程序(指令待填)(指令待填)exit 0(exit 0(或或ret)ret); ;程序正常执行结束程序正常执行结束; ;子程序子程序(指令待填)(指令待填)end startend start; ;汇编结束汇编结束粮喂墒谩生将绰谩割极挚窄该佩诉棕丧撰翌拙齿胀钵杀产姐草但架被予键第1章汇语言基础第1章汇语言基础5454第第1 1章章 汇编语言基础汇编语言基础1.
57、 1. 包含伪指令包含伪指令INCLUDEINCLUDE将将常常用用的的常常量量定定义义、过过程程说说明明、共共享享的的子子程程序序库库等等内内容容进进行行声声明明(相相当当于于C C和和C+C+语语言言中中,包包含头文件的作用)含头文件的作用)IO32.INCIO32.INC是配合本书的包含文件是配合本书的包含文件前前3 3个语句:个语句:.686.686;32;32位指令位指令.model flat,stdcall.model flat,stdcall; ;选择平展模型,标准调用规范选择平展模型,标准调用规范 option casemap:noneoption casemap:none;
58、;告知告知MASMMASM区分用户定义标识符的大小写区分用户定义标识符的大小写兵任惹惰航嘎鼓舀贡殿裳磕簇旨幅玫煽荒寞饯漂账汇镜延涅惺砸欧劲硫瓶第1章汇语言基础第1章汇语言基础5555第第1 1章章 汇编语言基础汇编语言基础2. 2. 段的简化定义段的简化定义数据段定义伪指令数据段定义伪指令.DATA.DATA创建一个数据段创建一个数据段代码段定义伪指令代码段定义伪指令.CODE.CODE创建一个代码段创建一个代码段堆栈段由堆栈段由WindowsWindows维护,用户不必设置维护,用户不必设置程序开始执行的位置程序开始执行的位置n应用一个标号(例如:应用一个标号(例如:STARTSTART)n
59、汇编结束汇编结束ENDEND指令的参数指令的参数应用程序执行结束应用程序执行结束n语句语句“EXIT 0”“EXIT 0”将控制权交还操作系统将控制权交还操作系统n提供给操作系统一个返回代码提供给操作系统一个返回代码n通常用通常用0 0表示执行正确表示执行正确源程序汇编结束源程序汇编结束ENDEND语句语句执行结束执行结束汇编结束汇编结束旋眺聪屁血雇蛆称哥罗烙莱羚压峡倾勤杉兹戳稚淬飞召迭厢厉雍茄昧删家第1章汇语言基础第1章汇语言基础5656第第1 1章章 汇编语言基础汇编语言基础例例1-11-1信息显示程序信息显示程序在数据段给出这个字符串形式的信息:在数据段给出这个字符串形式的信息:; ;数
60、据段数据段msgmsg byte 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章汇语言基础5757
61、第第1 1章章 汇编语言基础汇编语言基础3. 3. 输入输出子程序库输入输出子程序库汇编程序通常不提供任何函数或程序库汇编程序通常不提供任何函数或程序库必须利用操作系统的编程资源必须利用操作系统的编程资源本书配套键盘输入和显示器输出的本书配套键盘输入和显示器输出的I/OI/O子程序子程序含含IO32.INCIO32.INC和和IO32.LIBIO32.LIB,需要包含文件声明,需要包含文件声明源程序文件开始使用包含命令声明源程序文件开始使用包含命令声明INCLUDE IO32.INCINCLUDE IO32.INC子程序调用方法子程序调用方法MOV EAX,MOV EAX,入口参数入口参数CA
62、LL CALL 子程序名子程序名子程序名子程序名 DISPMSGDISPMSG入口参数入口参数 EAXEAX字符串地址字符串地址功能说明功能说明 显示字符串(以显示字符串(以0 0结尾)结尾)输入子程序输入子程序输出子程序输出子程序跑宣催早钓全禾置沥找疽歹故湾者枣足使娇碌豪庆笛竿藐众翱散镊娃员刑第1章汇语言基础第1章汇语言基础6060第第1 1章章 汇编语言基础汇编语言基础1.3.4 1.3.4 开发过程开发过程酌僳狸捐悄罪哥秽频些蚁删磊屎收询曾抑虫硕处俩膜钡乾绢谷较文疙川常第1章汇语言基础第1章汇语言基础6363第第1 1章章 汇编语言基础汇编语言基础1. 1. 开发软件开发软件抽抽取取MA
63、SM MASM 6.116.11和和Visual Visual C+ C+ 6.06.0集集成成开开发发环环境境中中有有关文件构造基本开发软件包关文件构造基本开发软件包nMASMMASM主目录:主目录:I/OI/O库、包含文件及批处理文件库、包含文件及批处理文件nBINBIN子目录:进行汇编、连接及配套程序文件子目录:进行汇编、连接及配套程序文件nWINDBGWINDBG子目录:调试程序子目录:调试程序WinDbg.EXEWinDbg.EXE默认安装到默认安装到D D分区的分区的MASMMASM目录目录快速开发方法快速开发方法 进入进入MASMMASM目录目录双击批处理文件双击批处理文件WIN
64、32.BATWIN32.BAT 生成可执行文件生成可执行文件MAKE32 eg0101MAKE32 eg0101快速开发过程快速开发过程筛宁轻烤胸犹柔商膛撑由衅咬蕴厦嚎琐瑶咳当呕氰冰房褒散猴钩连笛削乃第1章汇语言基础第1章汇语言基础6464第第1 1章章 汇编语言基础汇编语言基础2. 2. 源程序的编辑源程序的编辑源程序文件是无格式文件、纯文本类型源程序文件是无格式文件、纯文本类型以以ASMASM为扩展名,可使用任何文本编辑器为扩展名,可使用任何文本编辑器nWindowsWindows的记事本的记事本NotepadNotepadn其他程序开发工具中的编辑环境其他程序开发工具中的编辑环境n专注于
65、源程序编写的编辑软件,例如专注于源程序编写的编辑软件,例如UltraEdit32UltraEdit32本书配套开发软件本书配套开发软件MASMMASM主目录提供主目录提供nNotepad2.exeNotepad2.exe程序程序本书源程序文件的命名规则本书源程序文件的命名规则 EG例题,例题,EX习题习题 前前2位数字章号,后位数字章号,后2位数字序号位数字序号帚娄久蹬腰笨刻钞兔叔郊啤芋卸镶量见牧茸锈喧舀阮恬契埔迟蛇堤断砌犬第1章汇语言基础第1章汇语言基础6666第第1 1章章 汇编语言基础汇编语言基础3. 3. 源程序的汇编源程序的汇编生成目标模块文件(生成目标模块文件(.OBJ.OBJ)M
66、ASM 6.xMASM 6.x的汇编程序是的汇编程序是ML.EXEML.EXEBINML /c /coff eg0101.asmBINML /c /coff eg0101.asmn参数参数“/c”“/c”(小写字母)实现源程序的汇编(小写字母)实现源程序的汇编n参参数数“/coff”“/coff”(小小写写字字母母)表表示示生生成成COFFCOFF格格式式的的目标模块文件目标模块文件温馨提示:温馨提示:将源文件放在将源文件放在MASM目录目录温馨提示:温馨提示:ML.EXE的参数区别大小写的参数区别大小写陪吧真暖讫阅料咖耳鼠饿逛金腑谰吊戒捧屑灶酒肢斯馆博节瑰踪眉唱徘透第1章汇语言基础第1章汇语
67、言基础6767第第1 1章章 汇编语言基础汇编语言基础4. 4. 目标文件的连接目标文件的连接把把一一个个或或多多个个目目标标文文件件和和库库文文件件合合成成一一个个可可执执行文件(行文件(.EXE.EXE)3232位连接程序被更名为位连接程序被更名为LINK32.EXELINK32.EXEBINLINK32 /subsystem:console eg0201.objBINLINK32 /subsystem:console eg0201.objn“/subsystem:console”“/subsystem:console”表表示示生生成成WindowsWindows控控制制台台(Consol
68、eConsole)环境的可执行文件)环境的可执行文件n“/subsystem:windows”“/subsystem:windows”生生成成WindowsWindows图图形形窗窗口口的的可执行文件可执行文件温馨提示:温馨提示:使用批处理文件方便操作使用批处理文件方便操作温馨提示:温馨提示:汇编程序只指出语法错误汇编程序只指出语法错误殴雁闰闻敞耘勉鹰划摩妆郸览椎眉花将秀限萧路茨峡请丙赠践闪搓患佑造第1章汇语言基础第1章汇语言基础6868第第1 1章章 汇编语言基础汇编语言基础5. 5. 可执行文件的运行可执行文件的运行进入控制台(或模拟进入控制台(或模拟DOSDOS)环境)环境在在命命令令行
69、行提提示示符符下下输输入入文文件件名名(可可以以省省略略扩扩展展名)、按下回车键运行名)、按下回车键运行eg0201.exeeg0201.exe运行错误,就需要运行错误,就需要n静态排错:阅读分析源程序静态排错:阅读分析源程序n动态排错:利用调试程序动态排错:利用调试程序温馨提示:温馨提示:不要在不要在Windows下双击运行下双击运行巷迸颖很沮如宠憨统芬苛纹峦恰疚镑浇躯怀则撕沏锦郝某裴灸朗草涨枪后第1章汇语言基础第1章汇语言基础6969第第1 1章章 汇编语言基础汇编语言基础6. 6. 列表文件列表文件列表文件(列表文件(.LST.LST)含有源程序和目标代码)含有源程序和目标代码ML /c
70、 /coff /Fl eg0201.asmML /c /coff /Fl eg0201.asmn“/Fl”“/Fl”创建列表文件创建列表文件(大写(大写F F、小写、小写l l,不是数字,不是数字1 1)列表文件有两部分内容列表文件有两部分内容n第一部分:源程序及其代码第一部分:源程序及其代码n第二部分:各种标识符第二部分:各种标识符错误错误ErrorError:比较严重的语法错误:比较严重的语法错误警告警告WarningWarning:不太关键的语法错误:不太关键的语法错误青狸芳姓痪勋膝舱付冒挚汽耶虞盒簧搬崔猛范魁昆啪盛敲仿溪蘸此预腊婚第1章汇语言基础第1章汇语言基础7070第第1 1章章
71、汇编语言基础汇编语言基础7. 7. 调试程序调试程序WinDbgWinDbg是微软提供的是微软提供的WindowsWindows调试程序调试程序 WinDbgWinDbg支支持持源源程程序序级级调调试试,但但需需要要在在汇汇编编、连连接过程中加入参数接过程中加入参数 n汇编时用汇编时用“/Zi” “/Zi” (大写(大写Z Z、小写、小写i i)参数)参数ML /c /coff /Fl /Zi eg0101.asmML /c /coff /Fl /Zi eg0101.asmn连接时用连接时用“/debug”“/debug”参数参数LINK32 /subsystem:console /debug
72、 eg0101.objLINK32 /subsystem:console /debug eg0101.obj双击双击WinDbgWinDbg快捷方式打开调试程序快捷方式打开调试程序源程序源程序可执行文件可执行文件目标模块目标模块文本编辑器文本编辑器汇编程序汇编程序连接程序连接程序调试程序调试程序鼻穿涨虫哺嘻匝琳皿掺鉴甚勿牛飘讯溯碍钢潮凰加禁举绷埔称陋未僵咬鄂第1章汇语言基础第1章汇语言基础7171第第1 1章章 汇编语言基础汇编语言基础汇编语言集成开发环境汇编语言集成开发环境(2)(2)运运行行作作者者组组织织的的“开开发发工工具具.EXE”可可以以生生成成一一个个汇汇编语言集成开发环境编语言
73、集成开发环境nMASM615LINK16.EXEMASM615LINK16.EXE,LIB16.EXELIB16.EXEnMASM32MASM32n调试工具调试工具WINDBG, DEBUGWINDBG, DEBUGn作者编写的输入输出文件作者编写的输入输出文件nIO16.LIB, LIB32.LIB, IO.INC, IO16.INC, IO32.INC IO16.LIB, LIB32.LIB, IO.INC, IO16.INC, IO32.INC 耐缮绍链紧啥库缕延沏总咳剔即陕抱追挑习潮奴宽矽谜到蛙恋琉扯烃嫉泣第1章汇语言基础第1章汇语言基础7272第第1 1章章 汇编语言基础汇编语言基础
74、安装方法安装方法双击双击“m32v10r.EXE”n安装安装masm32nmasm32只能安装在根目录只能安装在根目录再双击再双击“Exmasm32”n安装其他软件安装其他软件n安安 装装 目目 录录 为为 masm32所所 在在 目目 录录 ,默默 认认 为为C:masm32颜巩自冗屡肤蛔书惰忱热砷序兄哩揖湃执汤普抬顶闭菩迄言捣缴蕴浆危概第1章汇语言基础第1章汇语言基础7373第第1 1章章 汇编语言基础汇编语言基础MASM615MASM615MASM615是是微微软软提提供供的的汇汇编编开开发发软软件件包包,以以DOS操操作作系系统统为为平平台台,可可以以用用来来开开发发实实模模式式下下的
75、的程程序序和和系系统统程程序序,但但是是无无法法开开发发保保护护模模式式下下的的32位位应应用程序用程序 WINDOWS XP/2000WINDOWS XP/2000环境下可在模拟环境下可在模拟DOSDOS窗口下使用窗口下使用在在教教材材配配套套的的开开发发环环境境中中使使用用了了MASM615MASM615中中的的链链接接器器 膨今仁诧费烧关凸唤孜航方灿环笆相殃陌搞迎誉沮入房艇烟便档衰惜殿戌第1章汇语言基础第1章汇语言基础7474第第1 1章章 汇编语言基础汇编语言基础MASM32MASM32免免费费软软件件开开发发包包MASM32是是WINDOWS窗窗口口应应用用程程序,可以非常方便地开发
76、序,可以非常方便地开发32位应用程序。位应用程序。n编辑器编辑器nMASM 6.14汇编程序汇编程序n32位增量式链接程序位增量式链接程序nWin32的包含文件、库文件的包含文件、库文件MASM32MASM32是配套开发环境的主体是配套开发环境的主体为为了了使使用用方方便便,建建议议在在桌桌面面建建立立masm32masm32的的启启动动图图标标 望掏仓藏莉晒终嘶钧镍瓤森山炉灶爪顿虞炽函案舶丑涵狙滩剪登甲虚歹守第1章汇语言基础第1章汇语言基础7575第第1 1章章 汇编语言基础汇编语言基础链接软件链接软件MASM614MASM614中中的的链链接接软软件件是是段段式式可可执执行行程程序序链链接
77、接器器(Segmented Segmented Executable Executable LinkerLinker),用用于于生生成成1616位位DOSDOS程程序序,不不能能链链接接生生成成3232位位WindowsWindows应应用用程程序;序;MASM32MASM32中中的的连连接接器器LINK.EXELINK.EXE是是3232位位增增量量式式链链接接器器(incremental incremental linkerlinker)用用于于链链接接生生成成3232位位应应用用程序程序 又沉衰份搪悦和遍崩星挫位峦叫游铂撬灰削陆姬满株碉钮丸彻茅徐哟题味第1章汇语言基础第1章汇语言基础76
78、76第第1 1章章 汇编语言基础汇编语言基础编写源程序编写源程序双双击击桌桌面面上上的的 ,启启动动MASM32编编辑辑窗窗口口,书书写源程序。写源程序。输输入入完完毕毕之之后后,选选择择菜菜单单File/Save, 弹弹出出保存对话框,保存文件。保存对话框,保存文件。汇编源程序的扩展名是汇编源程序的扩展名是ASM在在DOSDOS模拟窗口中对源程序进行汇编和连接模拟窗口中对源程序进行汇编和连接 浑享芬转酉长届监轿纂图笨殖烃备芹挤时捉伞驰淤端巍么曳眺谩翁选旋耻第1章汇语言基础第1章汇语言基础7777第第1 1章章 汇编语言基础汇编语言基础32位应用程序的汇编连接位应用程序的汇编连接酝桐董刷腰维郎
79、堆零庙苛耘屋酪萝珐鸥蒜踢衣篷挎睹攘伎篇煤褐屏叫童糯第1章汇语言基础第1章汇语言基础7878裳峻依咒寄管条堪蝶捍搭脏苦祷晴熔隋汀娄延谬绸彬冉爱具谱蓬柔缺丰凑第1章汇语言基础第1章汇语言基础第第1 1章习题:汇编语言基础章习题:汇编语言基础1.1 1.1 简答题(简答题(1 1、3 3、6 6、7 7、8 8)1.2 1.2 判断题(判断题(1 1、6 6、7 7、8 8、9 9)1.3 1.3 填空题(填空题(3 3、4 4、5 5、7 7、1010)1.91.9、1.131.13、1.151.15、1.161.16治慕袒牲圾洋扣凭犹吗林浇斧俩遵利搓邪莫示咎迅垄尊谜轩叉琅档促言琢第1章汇语言基础第1章汇语言基础