汇编语言的特点课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《汇编语言的特点课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 特点 课件
- 资源描述:
-
1、汇编语言程序设计汇编语言程序设计第第 3 3 章章1汇编语言的特点汇编语言的特点n汇编语言汇编语言是一种以处理器指令系统为基础的低是一种以处理器指令系统为基础的低级程序设计语言,它采用级程序设计语言,它采用助记符助记符表达指令操作表达指令操作码,采用码,采用标识符号标识符号表示指令操作数表示指令操作数n利用汇编语言编写程序的主要利用汇编语言编写程序的主要优点优点是可以是可以直接、直接、有效地控制计算机硬件有效地控制计算机硬件,因而容易创建,因而容易创建代码序代码序列短小、运行快速列短小、运行快速的可执行程序的可执行程序n在有些应用领域,汇编语言的作用是不容置疑在有些应用领域,汇编语言的作用是不
2、容置疑和无可替代的和无可替代的n汇编程序设计的过程是与其他高级语言程序设汇编程序设计的过程是与其他高级语言程序设计大致相同计大致相同2教学重点教学重点n汇编语言源程序格式与开发汇编语言源程序格式与开发n常量、变量和标号常量、变量和标号n汇编语言程序设计方法汇编语言程序设计方法n顺序程序设计顺序程序设计n分支程序设计分支程序设计n循环程序设计循环程序设计n子程序设计子程序设计33.1 汇编语言源程序格式汇编语言源程序格式n完整的汇编语言源程序由段组成完整的汇编语言源程序由段组成n一个汇编语言源程序可以包含若干个代码段、数据一个汇编语言源程序可以包含若干个代码段、数据段、附加段或堆栈段,段与段之间
3、的顺序可随意排段、附加段或堆栈段,段与段之间的顺序可随意排列列n需独立运行的程序必须包含一个需独立运行的程序必须包含一个代码段代码段,并指示程,并指示程序执行的序执行的起始点起始点,一个程序只有一个起始点,一个程序只有一个起始点n所有的可执行性语句必须位于某一个代码段内,说所有的可执行性语句必须位于某一个代码段内,说明性语句可根据需要位于任一段内明性语句可根据需要位于任一段内n通常,程序还需要一个堆栈段通常,程序还需要一个堆栈段 源程序由语句序列构成源程序由语句序列构成4汇编语言的语句格式汇编语言的语句格式执行性语句执行性语句执行性语句用于表达处理器执行性语句用于表达处理器指令指令(也称为硬指
4、令也称为硬指令),汇编后对应一条指令,汇编后对应一条指令代码。由处理器指令组成的代码序列是程序代码。由处理器指令组成的代码序列是程序设计的主体设计的主体标号标号:硬指令助记符硬指令助记符 操作数操作数,操作数操作数 ;注释注释说明性语句说明性语句说明性语句用于表达伪指令,说明性语句用于表达伪指令,指示源程序如何汇编、变量怎样定义、过程指示源程序如何汇编、变量怎样定义、过程怎么设置等怎么设置等名字名字 伪指令助记符伪指令助记符 参数参数,参数参数,;注释注释5硬指令与伪指令硬指令与伪指令n硬指令硬指令(Instruction)使使CPU产生动作、并在产生动作、并在程序执行时才处理的程序执行时才处
5、理的指令指令硬指令就是第硬指令就是第2章学习的处理器指令章学习的处理器指令,与具体的处理,与具体的处理器有关、与汇编程序无关器有关、与汇编程序无关n伪指令伪指令(Directive)不产生不产生CPU动作、在程序动作、在程序执行前由汇编程序处理的说明性执行前由汇编程序处理的说明性指令指令伪指令与具体的处理器类型无关,但与汇编程序有伪指令与具体的处理器类型无关,但与汇编程序有关。不同版本的汇编程序支持不同的伪指令关。不同版本的汇编程序支持不同的伪指令 硬指令和伪指令采用易于记忆的符合表硬指令和伪指令采用易于记忆的符合表达,这就是助记符达,这就是助记符6标号、名字与标识符标号、名字与标识符n标号标
6、号是反映硬指令是反映硬指令位置位置(逻辑地址)和(逻辑地址)和属性属性的标识的标识符,后跟一个符,后跟一个冒号冒号分隔分隔n名字名字是反映伪指令是反映伪指令位置位置(逻辑地址)和(逻辑地址)和属性属性的标识的标识符,后跟符,后跟空格或制表符空格或制表符分隔,分隔,没有冒号没有冒号n标识符标识符(Identifier)一般最多由一般最多由31个字母、数字及个字母、数字及规定的特殊符号(如规定的特殊符号(如 _、$、?、)组成,不能以)组成,不能以数字开头。默认情况下,汇编程序不区别标识符中数字开头。默认情况下,汇编程序不区别标识符中的字母大小写的字母大小写n一个源程序中,每个标识符的定义是唯一的
7、,且不一个源程序中,每个标识符的定义是唯一的,且不能是汇编系统所采用的能是汇编系统所采用的保留字保留字7保留字保留字n保留字(保留字(Reserved Word)是汇编程序已经是汇编程序已经利用的标识符(也称为关键字),主要有:利用的标识符(也称为关键字),主要有:n硬指令助记符硬指令助记符例如:例如:MOV、ADDn伪指令助记符伪指令助记符例如:例如:DB、DWn操作符操作符例如:例如:OFFSET、PTRn寄存器名寄存器名例如:例如:AX、CSn预定义符号预定义符号例如:例如:data 汇编语言对大小写不敏感汇编语言对大小写不敏感8操作数和参数操作数和参数n处理器指令中的处理器指令中的操作
8、数操作数可以是立即数、寄可以是立即数、寄存器和存储单元存器和存储单元n伪指令中的伪指令中的参数参数可以是常数、变量名、表可以是常数、变量名、表达式等,可以有多个,参数之间用逗号分达式等,可以有多个,参数之间用逗号分隔隔9注释注释n语句中由分号语句中由分号“;”开始的部分为注释内开始的部分为注释内容,用以增加源程序的可读性容,用以增加源程序的可读性n必要时,一个语句行也可以由分号开始作必要时,一个语句行也可以由分号开始作为阶段性注释为阶段性注释n汇编程序在翻译源程序时将跳过该部分,汇编程序在翻译源程序时将跳过该部分,不对它们做任何处理不对它们做任何处理10分隔符分隔符n语句的语句的4个组成部分个
9、组成部分要用要用分隔符分隔符分开分开n标号后用标号后用冒号冒号,注释前用,注释前用分号分号n操作数之间和参数之间使用操作数之间和参数之间使用逗号逗号分隔分隔n其他部分通常采用其他部分通常采用空格空格或或制表符制表符n多个空格和制表符的作用与一个相同多个空格和制表符的作用与一个相同nMASM支持支持续行符续行符“”11例例3.1 在屏幕上显示一段信息在屏幕上显示一段信息;数据段数据段(定义要显示的字符串)(定义要显示的字符串)stringdbHello,Assembly!,0dh,0ah,$;代码段代码段(显示字符串的程序)(显示字符串的程序)mov dx,offset stringmov ah
10、,9int 21hHello,Assembly!程序功能程序功能123.1.1 简化段定义格式简化段定义格式.model small;定义程序的定义程序的存储模式存储模式(小型模式)(小型模式).stack;定义定义堆栈段堆栈段(默认是(默认是1KB空间)空间).data;定义定义数据段数据段;数据定义;数据定义.code;定义定义代码段代码段start:mov ax,data;程序程序起始点起始点mov ds,ax;设置设置DS指向用户定义的数据段指向用户定义的数据段;程序代码;程序代码mov ax,4c00hint 21h;程序结束点,返回程序结束点,返回DOS;子程序代码子程序代码end
11、 start;汇编结束,同时指明程序起始点汇编结束,同时指明程序起始点start131.存储模式(存储模式(Memory Model)n存储模式存储模式决定了一个程序的规模,也确定了子程序决定了一个程序的规模,也确定了子程序调用、指令转移和数据访问等的缺省属性调用、指令转移和数据访问等的缺省属性n当使用简化段定义的源程序格式时,必须有存储模当使用简化段定义的源程序格式时,必须有存储模式式.MODEL语句,且位于所有简化段定义语句之前。语句,且位于所有简化段定义语句之前。其格式为:其格式为:.MODEL 存储模式存储模式n.MODEL语句确定了程序采用的存储模式,语句确定了程序采用的存储模式,M
12、ASM有有7种可以选择,如种可以选择,如表表3.1所示所示 本课程学习过程中,均采用小型模式本课程学习过程中,均采用小型模式SMALL142.逻辑段的简化定义逻辑段的简化定义.STACK 大小大小堆栈段定义伪指令堆栈段定义伪指令.STACK创建创建一个堆栈段,段名是:一个堆栈段,段名是:STACK。可选的可选的“大小大小”参参数指定堆栈段所占存储区的字节数,默认是数指定堆栈段所占存储区的字节数,默认是1KB(1024400H字节)字节).DATA数据段定义伪指令数据段定义伪指令.DATA创建一个数据创建一个数据段,段名是:段,段名是:_DATA。数据段名可用数据段名可用DATA预定预定义标识符
13、表示义标识符表示.CODE 段名段名代码段定义伪指令代码段定义伪指令.CODE创建一创建一个代码段,可选的个代码段,可选的“段名段名”参数指定该代码段的段参数指定该代码段的段名。名。一个段的开始自动结束前面的一个段一个段的开始自动结束前面的一个段 简化段定义伪指令之前,需有存储模式语句简化段定义伪指令之前,需有存储模式语句153.程序开始程序开始n为了指明程序开始执行的位置,需要使用一个标号为了指明程序开始执行的位置,需要使用一个标号(例题中采用了(例题中采用了start 标识符)标识符)n连接程序会根据程序起始点正确地设置连接程序会根据程序起始点正确地设置CS和和IP值,值,根据程序大小和堆
14、栈段大小设置根据程序大小和堆栈段大小设置SS和和SP值值n连接程序没有设置连接程序没有设置DS和和ES值。程序如果使用数据段值。程序如果使用数据段或附加段,必须明确给或附加段,必须明确给DS或或ES赋值赋值n大多数程序需要数据段,程序的执行开始应是:大多数程序需要数据段,程序的执行开始应是:start:mov ax,data;data表示数据段的段地址表示数据段的段地址mov ds,ax;设置设置DS164.程序终止并返回操作系统程序终止并返回操作系统n应用程序执行结束,应该将控制权交还操作系统应用程序执行结束,应该将控制权交还操作系统n汇编语言程序设计中,有多种返回汇编语言程序设计中,有多种
15、返回DOS的方法,的方法,但一般利用但一般利用DOS功能调用的功能调用的4CH子功能实现,它子功能实现,它需要的入口参数是需要的入口参数是AL返回数码(通常用返回数码(通常用0表示表示程序运行正常,没有错误)程序运行正常,没有错误)n于是,应用程序的终止代码就是:于是,应用程序的终止代码就是:mov ax,4c00hint 21h175.汇编结束汇编结束n汇编结束表示通知汇编程序结束工作,即汇编结束表示通知汇编程序结束工作,即将源程序翻译成目标模块代码的过程结束。将源程序翻译成目标模块代码的过程结束。n源程序的最后必须有一条源程序的最后必须有一条END伪指令伪指令END 标号标号n可选的可选的
16、“标号标号”参数指定程序开始执行点,参数指定程序开始执行点,连接程序据此设置连接程序据此设置CS和和IP值(例题中采用值(例题中采用了了start 标识符)标识符)18第第1个源文件个源文件 hb301.asm;hb301.asm.model small.stack.datastringdb Hello,Assembly!,0dh,0ah,$.codestart:mov ax,datamov ds,axmov dx,offset stringmov ah,9int 21hmov ax,4c00hint 21hend start19汇编语言程序的处理过程(附录汇编语言程序的处理过程(附录B)编辑
17、编辑文本编辑器,如文本编辑器,如 EDIT.EXE源程序:文件名源程序:文件名.asm汇编汇编汇编程序,如汇编程序,如 ML.EXE目标模块:文件名目标模块:文件名.obj连接连接连接程序,如连接程序,如 LINK.EXE可执行文件:文件名可执行文件:文件名.exe调试调试调试程序,如调试程序,如 DEBUG.EXE应用程序应用程序错误错误错误错误错误错误错误错误20上机过程上机过程1:编辑源程序:编辑源程序n源程序源程序文件应以文件应以.ASM为扩展名为扩展名n源程序文件的形成(编辑)可以通过任何源程序文件的形成(编辑)可以通过任何一个文本编辑器实现一个文本编辑器实现:DOS中的全屏幕文本编
18、辑器中的全屏幕文本编辑器EDIT EDIT hb301.asm MASM 6.X提供的集成工作环境提供的集成工作环境PWB Windows中的记事本中的记事本Notepad 其他程序开发工具中的编辑环境其他程序开发工具中的编辑环境 21上机过程上机过程2:汇编源程序:汇编源程序MASM 6.xn汇编是将源程序翻译成由机器代码组成的汇编是将源程序翻译成由机器代码组成的目标模块文件的过程目标模块文件的过程nMASM 6.x提供的汇编程序是提供的汇编程序是ML.EXE ML/c hb301.asmn如果源程序中没有语法错误,如果源程序中没有语法错误,MASM将自将自动生成一个目标模块文件(动生成一个
19、目标模块文件(hb301.obj););否则否则MASM将给出相应的错误信息。这时将给出相应的错误信息。这时应根据错误信息,重新编辑修改源程序后,应根据错误信息,重新编辑修改源程序后,再进行汇编再进行汇编22开发过程开发过程2:汇编源程序:汇编源程序MASM 5.xnMASM 5.x提供的汇编程序是提供的汇编程序是MASM.EXE MASM hb301.asm;n如果利用分号如果利用分号“;”结尾命令,则汇编程序不结尾命令,则汇编程序不再提示输入模块文件名、列表文件名等,直再提示输入模块文件名、列表文件名等,直接采用默认的文件名。接采用默认的文件名。n默认采用源程序文件相同的主文件名,扩展默认
20、采用源程序文件相同的主文件名,扩展名则是相应类型文件的扩展名,例如目标文名则是相应类型文件的扩展名,例如目标文件(件(.obj)和列表文件(和列表文件(.lst)等等23上机过程上机过程2:生成列表文件:生成列表文件n汇编过程中,可以通过参数选择生成汇编过程中,可以通过参数选择生成列表文件列表文件(.LST)。)。列表文件是一种文本文件,含有源程列表文件是一种文本文件,含有源程序和目标代码,对我们学习汇编语言程序设计和序和目标代码,对我们学习汇编语言程序设计和发现错误很有用发现错误很有用n汇编程序汇编程序ML.EXE和和MASM.EXE都可带其他参数,都可带其他参数,为了生成列表文件,各自的命
21、令是:为了生成列表文件,各自的命令是:ML/Fl hb301.asm产生产生.obj/.exe/.lst MASM/l hb301.asm;产生产生.obj/.lstn以上命令除产生模块文件以上命令除产生模块文件hb301.obj外,还将生成外,还将生成列表文件列表文件hb301.lst24上机过程上机过程3:连接目标模块:连接目标模块n连接程序能把一个或多个目标文件和库文件合成连接程序能把一个或多个目标文件和库文件合成一个可执行程序(一个可执行程序(.EXE、.COM文件):文件):LINK hb301.obj;n如果没有严重错误,如果没有严重错误,LINK将生成一个可执行文件将生成一个可执
22、行文件(hb301.exe););否则将提示相应的错误信息。这否则将提示相应的错误信息。这时需要根据错误信息重新修改源程序文件后再汇时需要根据错误信息重新修改源程序文件后再汇编、链接,直到生成可执行文件编、链接,直到生成可执行文件nML.EXE汇编程序(汇编程序(MASM 6.x)可自动调用可自动调用LINK连接程序,实现汇编和连接的依次进行连接程序,实现汇编和连接的依次进行ML hb301.asm25上机过程上机过程4:运行和调试运行和调试n经汇编、连接生成的可执行程序在操作系统经汇编、连接生成的可执行程序在操作系统下只要输入文件名就可以运行:下只要输入文件名就可以运行:hb301n操作系统
23、装载该文件进入主存,并开始运行操作系统装载该文件进入主存,并开始运行n如果出现运行错误,可以从源程序开始排错,如果出现运行错误,可以从源程序开始排错,也可以利用调试程序帮助发现错误也可以利用调试程序帮助发现错误n采用采用DEBUG.EXE调试程序:调试程序:DEBUG hb301.exe263.1.2 完整段定义格式完整段定义格式n完整段定义利用完整段定义利用SEGMENT和和ENDS一对伪指令一对伪指令定义逻辑段定义逻辑段n同时需要配合同时需要配合ASSUME伪指令指明逻辑段是代伪指令指明逻辑段是代码段、堆栈段、数据段还是附加段码段、堆栈段、数据段还是附加段n完整段定义和简化段定义的实质是一
24、致的完整段定义和简化段定义的实质是一致的27完整段定义格式完整段定义格式stacksegment stack;定义作为堆栈段的逻辑段,段名定义作为堆栈段的逻辑段,段名stackdb 1024 dup(0);分配堆栈段(默认是;分配堆栈段(默认是1KB空间)空间)stackends;堆栈段结束;堆栈段结束data segment;定义作为数据段的逻辑段,段名;定义作为数据段的逻辑段,段名data;定义数据;定义数据dataends;数据段结束;数据段结束codesegment code;定义作为代码段的逻辑段,段名定义作为代码段的逻辑段,段名codeassume cs:code,ds:data,
25、ss:stackstart:mov ax,data;程序起始点程序起始点mov ds,ax;设置设置DS指向数据段的段地址指向数据段的段地址;程序代码;程序代码mov ax,4c00hint 21h;程序结束点,返回程序结束点,返回DOS;子程序代码子程序代码code ends;代码段结束;代码段结束end start;汇编结束,同时指明程序起始点汇编结束,同时指明程序起始点start281、逻辑段的完整定义、逻辑段的完整定义n声明逻辑段的名字和属性声明逻辑段的名字和属性n段名段名segment 定位定位组合组合类别类别;语句序列语句序列段名段名ends292、建立逻辑段与段寄存器的对应关系、
展开阅读全文