汇编语言第三章优秀PPT.ppt
《汇编语言第三章优秀PPT.ppt》由会员分享,可在线阅读,更多相关《汇编语言第三章优秀PPT.ppt(117页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、汇编语言第三章你现在浏览的是第一页,共117页教学重点第第2章章学学习习了了8086硬硬指指令令,第第3章章介介绍绍MASM基基本本的的伪伪指指令。第令。第3章重点掌握:章重点掌握:程序的格式、开发方法程序的格式、开发方法参数的表达、变量的定义参数的表达、变量的定义变量和标号的属性变量和标号的属性你现在浏览的是第二页,共117页硬指令和伪指令硬硬指指令令使使CPU产产生生动动作作、并并在在程程序序执执行行时时才才处处理理的的语语句句,就就是是第第2章章学学习习的的处理器指令处理器指令伪伪指指令令(Directive)不不产产生生CPU动动作作、在在程程序序执执行行前前由由汇汇编编程程序序处处理
2、理的的说说明明性语句,例如,数据说明、变量定义等等性语句,例如,数据说明、变量定义等等伪伪指指令令与与具具体体的的处处理理器器类类型型无无关关,但但与与汇编程序的版本有关汇编程序的版本有关 本课程采用微软宏汇编程序本课程采用微软宏汇编程序 MASM 6.11你现在浏览的是第三页,共117页3.1 汇编语言程序的开发本本节节从从汇汇编编语语言言程程序序的的语语句句格格式式出出发发,给给出出第第一一个个示示范范性性的的汇汇编编语语言言源源程程序序,并并演演示示汇汇编编语语言言程程序序的的过过程:程:编辑编辑 汇编汇编 连接连接 调试调试即汇编语言程序的开发方法即汇编语言程序的开发方法你现在浏览的是
3、第四页,共117页3.1.1 汇编语言程序的语句格式 执执行行性性语语句句由由硬硬指指令令构构成成的的语语句句,它它通通常常对对应应一一条条机机器器指指令令,出出现现在在程程序序的的代码段中:代码段中:标号标号:硬指令助记符硬指令助记符 操作数操作数,操作数操作数;注释;注释 说说明明性性语语句句由由伪伪指指令令构构成成的的语语句句,它通常指示汇编程序如何汇编源程序:它通常指示汇编程序如何汇编源程序:名字名字 伪指令助记符伪指令助记符 参数参数,参数参数,;注释;注释第3章你现在浏览的是第五页,共117页MOV CX,0MOV CX,0;传送指令,具有传送指令,具有2 2个操作数个操作数DEL
4、AY:DELAY:NOPNOP;空操作指令,没有操作数,带有标号空操作指令,没有操作数,带有标号LOOP DELAYLOOP DELAY;循环指令,标号循环指令,标号DELAYDELAY说明转移位置说明转移位置BUFFERBUFFER DB 1,2,3,4,5,6,7DB 1,2,3,4,5,6,7;数数据据定定义义伪伪指指令令,在在主主存存中中开开辟辟7 7个个连连续续的的字字节单元,初值依次为节单元,初值依次为1 17 7,BUFFERBUFFER表示首地址表示首地址汇编语言语句实例汇编语言语句实例你现在浏览的是第六页,共117页标号、名字与标识符标标号号是是反反映映硬硬指指令令位位置置(
5、逻逻辑辑地地址址)的的标标识识符符,后跟一个冒号分隔后跟一个冒号分隔名名字字是是反反映映伪伪指指令令位位置置(逻逻辑辑地地址址)和和属属性性的的标标识识符符,后后跟跟空空格格或或制制表表符符分分隔隔,没没有有一一个个冒冒号号标标识识符符(Identifier)一一般般最最多多由由31个个字字母母、数数字字及及规规定定的的特特殊殊符符号号(如如 _、$、?、)组组成成,不不能能以以数数字字开开头头。默默认认情情况况下下,汇汇编编程程序序不不区区别别标标识符中的字母大小写识符中的字母大小写一一个个程程序序中中,每每个个标标识识符符的的定定义义是是唯唯一一的的,还还不不能是汇编语言采用的保留字能是汇
6、编语言采用的保留字第3章你现在浏览的是第七页,共117页保留字保保留留字字(Reserved Word)是是汇汇编编程程序序已经利用的标识符,主要有:已经利用的标识符,主要有:硬指令助记符硬指令助记符例如:例如:MOV、ADD伪指令助记符伪指令助记符例如:例如:DB、EQU操作符操作符例如:例如:OFFSET、PTR寄存器名寄存器名例如:例如:AX、CS预定义符号预定义符号例如:例如:data第3章 汇编语言大小写不敏感你现在浏览的是第八页,共117页助记符硬硬指指令令助助记记符符可可以以是是任任何何一一条条处处理理器器指指令,也可以是一条宏指令令,也可以是一条宏指令伪指令助记符伪指令助记符将
7、在本章和下章学习将在本章和下章学习前前一一章章引引入入的的定定义义字字节节数数据据和和字字符符串串的的DB就是伪指令就是伪指令你现在浏览的是第九页,共117页操作数与参数处处理理器器指指令令的的操操作作数数可可以以是是立立即即数数、寄存器和存储单元寄存器和存储单元伪伪指指令令的的参参数数可可以以是是常常数数、变变量量名名、表表达达式式等等,可可以以有有多多个个,参数之间用逗号分隔参数之间用逗号分隔你现在浏览的是第十页,共117页注释语语句句中中由由分分号号“;”开开始始的的部部分分为为注注释释内内容容,用用以以增增加加源源程程序序的的可可读读性性必必要要时时,一一个个语语句句行行也也可可以以由
8、由分分号号开始作为阶段性注释开始作为阶段性注释汇汇编编程程序序在在翻翻译译源源程程序序时时将将跳跳过过该该部分,不对它们做任何处理部分,不对它们做任何处理你现在浏览的是第十一页,共117页分隔符语句的语句的4个组成部分要用分隔符分开个组成部分要用分隔符分开标号后用冒号,注释前用分号标号后用冒号,注释前用分号操作数之间和参数之间使用逗号分隔操作数之间和参数之间使用逗号分隔其他部分通常采用空格或制表符其他部分通常采用空格或制表符多个空格和制表符的作用与一个相同多个空格和制表符的作用与一个相同MASM支持续行符支持续行符“”你现在浏览的是第十二页,共117页3.1.2 汇编语言的程序格式完整的汇编语
9、言源程序由段组成完整的汇编语言源程序由段组成一一个个汇汇编编语语言言源源程程序序可可以以包包含含若若干干个个代代码码段段、数数据据段段、附附加加段段或或堆堆栈栈段段,段段与与段段之之间间的的顺顺序序可随意排列可随意排列需需独独立立运运行行的的程程序序必必须须包包含含一一个个代代码码段段,并并指指示示程程序序执执行行的的起起始始点点,一一个个程程序序只只有有一一个个起始点起始点所所有有的的可可执执行行性性语语句句必必须须位位于于某某一一个个代代码码段段内,说明性语句可根据需要位于任一段内内,说明性语句可根据需要位于任一段内通常,程序还需要一个堆栈段通常,程序还需要一个堆栈段你现在浏览的是第十三页
10、,共117页汇编语言源程序源程序分别用两种格式书写源程序分别用两种格式书写v第一种格式从第一种格式从MASM 5.0开始支持开始支持n简化段定义格式简化段定义格式v第二种格式第二种格式MASM 5.0以前就具有以前就具有n完整段定义格式完整段定义格式Hello,Everybody!程序功能程序功能你现在浏览的是第十四页,共117页;lt301a.asm;lt301a.asm(文件名)(文件名).model small.model small;定义程序的存储模式定义程序的存储模式.stack.stack;定义堆栈段定义堆栈段.data.data;定义数据段定义数据段stringstringdb
11、Hello,Everybody!,0dh,0ah,$db Hello,Everybody!,0dh,0ah,$;在数据段定义要显示的字符串在数据段定义要显示的字符串.code.code;定义代码段定义代码段.startup.startup;程序起始点,建立程序起始点,建立DSDS、SSSSmov dx,offset stringmov dx,offset string;指定字符串指定字符串mov ah,9mov ah,9int 21hint 21h;利用功能调用显示信息利用功能调用显示信息.exit 0.exit 0;程序结束点,返回程序结束点,返回DOSDOSendend;汇编结束汇编结束例
12、例3.1a3.1a:简化段定义格式:简化段定义格式你现在浏览的是第十五页,共117页;SampleA.ASM;SampleA.ASM.model small.model small.stack.stack.data.data.;在数据段定义数据在数据段定义数据.code.code.startup.startup;(注(注1 1).;在代码段填入指令序列在代码段填入指令序列.exit 0.exit 0;(注(注2 2).;子程序代码子程序代码endend;(注(注3 3)简化段定义格式简化段定义格式 MASM 6.x支持你现在浏览的是第十六页,共117页;SampleC.ASM;SampleC.
13、ASM.model small.model small.stack.stack.data.data.;在数据段定义数据在数据段定义数据.code.codestartstart:mov ax,datamov ax,datamov ds,axmov ds,ax.;在代码段填入指令序列在代码段填入指令序列mov ax,4c00hmov ax,4c00hint 21hint 21h.;子程序代码子程序代码end startend start简化段定义格式简化段定义格式 MASM 5.x支持你现在浏览的是第十七页,共117页;lt301b.asmlt301b.asm(文件名)(文件名)stackstac
14、ksegment stacksegment stack;定义堆栈段定义堆栈段dw 512 dup(?)dw 512 dup(?);堆栈段有堆栈段有512512字(字(10241024字节)空间字节)空间stackstackendsends;堆栈段结束堆栈段结束datadatasegmentsegment;定义数据段定义数据段stringstring db db Hello,Hello,Everybody Everybody!,0dh,0ah,$!,0dh,0ah,$datadataendsendscodecodesegment codesegment code;定义代码段定义代码段assume
15、 cs:code,ds:data,ss:stackassume cs:code,ds:data,ss:stackstart:start:mov ax,datamov ax,data;建立建立DSDS段地址段地址mov ds,axmov ds,ax例例3.1b3.1b:完整段定义格式:完整段定义格式你现在浏览的是第十八页,共117页mov dx,offset stringmov dx,offset stringmov ah,9mov ah,9int 21hint 21hmov ax,4c00hmov ax,4c00hint 21hint 21h;利用功能调用返回利用功能调用返回DOSDOScod
16、ecodeendsends;代码段结束代码段结束end startend start;汇编结束,同时指明程序起始点汇编结束,同时指明程序起始点例例3.1b3.1b:完整段定义格式:完整段定义格式你现在浏览的是第十九页,共117页;SampleB.ASM;SampleB.ASMstackstacksegment stacksegment stackdw 512 dup(?)dw 512 dup(?)stackstackendsendsdatadatasegmentsegment.;在数据段定义数据在数据段定义数据datadataendsendscodecodesegment codesegmen
17、t codeassume cs:code,ds:data,ss:stackassume cs:code,ds:data,ss:stackstart:start:mov ax,datamov ax,datamov ds,axmov ds,ax.;在代码段填入指令序列在代码段填入指令序列mov ax,4c00hmov ax,4c00hint 21hint 21h.;子程序代码子程序代码codecodeendsendsend startend start完整段定义格式完整段定义格式 MASM 5.x支持你现在浏览的是第二十页,共117页3.1.3 汇编语言程序的开发过程编编辑辑文本编辑器,如文本编辑
18、器,如 EDIT.COM源程序:文件名源程序:文件名.asm汇汇编编汇编程序,如汇编程序,如 ML.EXE目标模块:文件名目标模块:文件名.obj连连接接连接程序,如连接程序,如 LINK.EXE可执行文件:文件名可执行文件:文件名.exe调调试试调试程序,如调试程序,如 DEBUG.EXE应用程序应用程序错误错误错误错误错误错误错误错误你现在浏览的是第二十一页,共117页开发过程1:源程序的编辑源程序文件要以源程序文件要以ASMASM为扩展名为扩展名源源程程序序文文件件的的形形成成(编编辑辑)可可以以通通过过任任何何一一个文本编辑器实现个文本编辑器实现:DOSDOS中的全屏幕文本编辑器中的全
19、屏幕文本编辑器EDITEDIT其他程序开发工具中的编辑环境其他程序开发工具中的编辑环境MASMMASM程序员工作平台程序员工作平台PWBPWB中的编辑环境中的编辑环境EDIT lt301a.asmEDIT lt301a.asm你现在浏览的是第二十二页,共117页开发过程2:源程序的汇编汇汇编编是是将将源源程程序序翻翻译译成成由由机机器器代代码码组组成成的的目目标模块文件的过程标模块文件的过程MASM 6.x提供的汇编程序是提供的汇编程序是ML.EXE:ML/c lt301a.asmML/c lt301a.asm如如果果源源程程序序中中没没有有语语法法错错误误,MASM将将自自动动生生成成一一个
20、个目目标标模模块块文文件件(lt301a.obj);否否则则MASM将给出相应的错误信息将给出相应的错误信息这这时时应应根根据据错错误误信信息息,重重新新编编辑辑修修改改源源程程序序后,再进行汇编后,再进行汇编你现在浏览的是第二十三页,共117页开发过程3:目标模块的连接连连接接程程序序能能把把一一个个或或多多个个目目标标文文件件和和库库文文件合成一个可执行程序(件合成一个可执行程序(.EXE.EXE、.COM.COM文件):文件):LINK lt301a.objLINK lt301a.obj如如果果没没有有严严重重错错误误,LINK将将生生成成一一个个可可执执行行文文件件(lt301a.ex
21、e);否否则则将将提提示示相相应应的的错错误信息误信息这这时时需需要要根根据据错错误误信信息息重重新新修修改改源源程程序序后再汇编、链接,直到生成可执行文件后再汇编、链接,直到生成可执行文件 汇编和连接过程可以依次自动完成你现在浏览的是第二十四页,共117页汇编和连接的依次自动实现MLML汇汇编编程程序序可可自自动动调调用用LINKLINK连连接接程程序序,实实现汇编和连接的依次进行现汇编和连接的依次进行ML lt301a.asmML lt301a.asm汇编程序汇编程序ML.EXE可带其他参数,常用可带其他参数,常用ML/Fl/Sg lt301a.asmML/Fl/Sg lt301a.asm
22、该该命命令令除除产产生生模模块块文文件件lt301a.obj和和可可执执行行文文件件lt301a.exe外,还将生成列表文件外,还将生成列表文件lt301a.lst列列表表文文件件是是一一种种文文本本文文件件,含含有有源源程程序序和和目目标标代代码码,对对我我们们学学习习汇汇编编语语言言程程序序设设计计和和发发现现错错误误很很有有用用。采采用用/Sg选选项项,将将在在列列表表文文件件中中得得到到有有些些伪伪指指令令相相应应的的硬硬指令指令你现在浏览的是第二十五页,共117页开发过程4:可执行程序的调试经经汇汇编编、连连接接生生成成的的可可执执行行程程序序在在操操作作系系统统下只要输入文件名就可
23、以运行:下只要输入文件名就可以运行:lt301alt301a操作系统装载该文件进入主存,并开始运行操作系统装载该文件进入主存,并开始运行如如果果出出现现运运行行错错误误,可可以以从从源源程程序序开开始始排排错,也可以利用调试程序帮助发现错误错,也可以利用调试程序帮助发现错误采用采用DEBUG.EXEDEBUG.EXE调试程序:调试程序:DEBUG lt301a.exeDEBUG lt301a.exe你现在浏览的是第二十六页,共117页3.2 参数、变量和标号本本节节详详细细讨讨论论汇汇编编语语言言程程序序语语句句的的主要部分:主要部分:参数参数 变量名变量名 标号标号并引出相关的伪指令和操作符
24、并引出相关的伪指令和操作符本节重点掌握:本节重点掌握:n常数的表达、常数的表达、n变量定义伪指令变量定义伪指令DB/DW/DD、n地址操作符和类型操作符地址操作符和类型操作符你现在浏览的是第二十七页,共117页3.2.1 数值型参数在在源源程程序序语语句句格格式式的的4个个组组成成部部分分中中,参参数数是是指指令令的的操操作作对对象象(在在学学习习硬硬指指令令时时被被称称为为操操作作数数),参数之间用逗号分隔参数之间用逗号分隔参参数数根根据据指指令令不不同同可可以以没没有有,可可以以有有1个个、2个或多个个或多个汇汇编编语语言言程程序序中中,指指令令参参数数有有数数值值型型,它它的的主主要形式
25、是要形式是常数常数和和数值表达式数值表达式;硬硬指指令令的的操操作作数数有有立立即即数数;立立即即数数就就要要用用数数值值型参数表达型参数表达你现在浏览的是第二十八页,共117页1.常数常数(常量)常数(常量)表示一个固定的数值表示一个固定的数值它又分成多种形式:它又分成多种形式:(1)十进制常数十进制常数(2)十六进制常数十六进制常数(3)二进制常数二进制常数(4)八进制常数八进制常数(5)字符串常数字符串常数(6)符号常数符号常数你现在浏览的是第二十九页,共117页2.数值表达式数数值值表表达达式式一一般般是是指指由由运运算算符符连连接接的的各各种种常数所构成的表达式常数所构成的表达式汇汇
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 第三 优秀 PPT
限制150内