新版汇编语言程序设计-钱晓捷03.ppt
- 文档编号:2671183
- 上传时间:2022-11-06
- 格式:PPT
- 页数:113
- 大小:711KB
新版汇编语言程序设计-钱晓捷03.ppt
《新版汇编语言程序设计-钱晓捷03.ppt》由会员分享,可在线阅读,更多相关《新版汇编语言程序设计-钱晓捷03.ppt(113页珍藏版)》请在冰豆网上搜索。
第第33章章教学重点第第2章章学学习习了了8086硬硬指指令令,第第3章章介介绍绍MASM基基本本的的伪伪指令。
第指令。
第3章重点掌握:
章重点掌握:
程序的格式、开发方法程序的格式、开发方法参数的表达、变量的定义参数的表达、变量的定义变量和标号的属性变量和标号的属性第3章硬指令和伪指令硬硬指指令令使使CPU产产生生动动作作、并并在在程程序序执执行行时时才才处处理理的的语语句句,就就是是第第2章章学学习习的的处处理理器器指令指令伪伪指指令令(Directive)不不产产生生CPU动动作作、在在程程序序执执行行前前由由汇汇编编程程序序处处理理的的说说明明性性语语句句,例如,数据说明、变量定义等等例如,数据说明、变量定义等等伪伪指指令令与与具具体体的的处处理理器器类类型型无无关关,但但与与汇汇编编程序的版本有关程序的版本有关本课程采用微软宏汇编程序本课程采用微软宏汇编程序MASM6.15第3章3.1汇编语言程序的开发本本节节从从汇汇编编语语言言程程序序的的语语句句格格式式出出发发,给给出出第第一一个个示示范范性性的的汇汇编编语语言言源源程程序序,并演示汇编语言程序的过程:
并演示汇编语言程序的过程:
编辑编辑汇编汇编连接连接调试调试即汇编语言程序的即汇编语言程序的开发方法开发方法第3章3.1.1汇编语言程序的语句格式执执行行性性语语句句由由硬硬指指令令构构成成的的语语句句,它它通通常常对对应应一一条条机机器器指指令令,出出现现在在程程序序的的代码段中:
代码段中:
标号标号:
硬指令助记符硬指令助记符操作数操作数,操作数操作数;注释注释说说明明性性语语句句由由伪伪指指令令构构成成的的语语句句,它通常指示汇编程序如何汇编源程序:
它通常指示汇编程序如何汇编源程序:
名字名字伪指令助记符伪指令助记符参数参数,参数参数,;注释注释MOVCX,0MOVCX,0;传送指令,具有传送指令,具有22个操作数个操作数DELAY:
DELAY:
NOPNOP;空操作指令,没有操作数,带有标号空操作指令,没有操作数,带有标号LOOPDELAYLOOPDELAY;循环指令,标号循环指令,标号DELAYDELAY说明转移位置说明转移位置BUFFERBUFFERDB1,2,3,4,5,6,7DB1,2,3,4,5,6,7;数数据据定定义义伪伪指指令令,在在主主存存中中开开辟辟77个个连连续续的的字节单元,初值依次为字节单元,初值依次为1177,BUFFERBUFFER表示首地址表示首地址汇编语言语句实例汇编语言语句实例第3章标号、名字与标识符标标号号是是反反映映硬硬指指令令位位置置(逻逻辑辑地地址址)的的标标识识符符,后后跟一个冒号分隔跟一个冒号分隔名名字字是是反反映映伪伪指指令令位位置置(逻逻辑辑地地址址)和和属属性性的的标标识识符,后跟空格或制表符分隔,没有一个冒号符,后跟空格或制表符分隔,没有一个冒号标标识识符符(Identifier)一一般般最最多多由由31个个字字母母、数数字字及及规规定定的的特特殊殊符符号号(如如_、$、?
、)组组成成,不不能能以以数数字字开开头头。
默默认认情情况况下下,汇汇编编程程序序不不区区别别标标识识符符中的字母大小写中的字母大小写一一个个程程序序中中,每每个个标标识识符符的的定定义义是是唯唯一一的的,还还不不能能是汇编语言采用的是汇编语言采用的保留字保留字第3章保留字保保留留字字(ReservedWord)是是汇汇编编程程序已经利用的标识符,主要有:
序已经利用的标识符,主要有:
o硬指令助记符硬指令助记符例如:
例如:
MOV、ADDo伪指令助记符伪指令助记符例如:
例如:
DB、EQUo操作符操作符例如:
例如:
OFFSET、PTRo寄存器名寄存器名例如:
例如:
AX、CSo预定义符号预定义符号例如:
例如:
data汇编语言大小写不敏感第3章助记符硬硬指指令令助助记记符符可可以以是是任任何何一一条条处处理理器器指指令,也可以是一条宏指令令,也可以是一条宏指令伪指令助记符伪指令助记符将在本章和下章学习将在本章和下章学习前前一一章章引引入入的的定定义义字字节节数数据据和和字字符符串串的的DB就是伪指令就是伪指令第3章操作数与参数处处理理器器指指令令的的操操作作数数可可以以是是立立即即数数、寄寄存器和存储单元存器和存储单元伪伪指指令令的的参参数数可可以以是是常常数数、变变量量名名、表表达达式式等等,可可以以有有多多个个,参数之间用逗号分隔参数之间用逗号分隔第3章注释语语句句中中由由分分号号“;”开开始始的的部部分分为为注注释释内容,用以增加源程序的可读性内容,用以增加源程序的可读性必必要要时时,一一个个语语句句行行也也可可以以由由分分号号开开始始作为阶段性注释作为阶段性注释汇汇编编程程序序在在翻翻译译源源程程序序时时将将跳跳过过该该部部分分,不对它们做任何处理不对它们做任何处理第3章分隔符语句的语句的4个组成部分要用分隔符分开个组成部分要用分隔符分开标号后用冒号,注释前用分号标号后用冒号,注释前用分号操作数之间和参数之间使用逗号分隔操作数之间和参数之间使用逗号分隔其他部分通常采用空格或制表符其他部分通常采用空格或制表符多个空格和制表符的作用与一个相同多个空格和制表符的作用与一个相同MASM支持续行符支持续行符“”第3章3.1.2汇编语言的程序格式完整的汇编语言源程序由段组成完整的汇编语言源程序由段组成一一个个汇汇编编语语言言源源程程序序可可以以包包含含若若干干个个代代码码段段、数数据据段段、附附加加段段或或堆堆栈栈段段,段段与与段段之之间间的的顺顺序可随意排列序可随意排列需需独独立立运运行行的的程程序序必必须须包包含含一一个个代代码码段段,并并指指示示程程序序执执行行的的起起始始点点,一一个个程程序序只只有有一一个个起始点起始点所所有有的的可可执执行行性性语语句句必必须须位位于于某某一一个个代代码码段段内,说明性语句可根据需要位于任一段内内,说明性语句可根据需要位于任一段内通常,程序还需要一个堆栈段通常,程序还需要一个堆栈段第3章汇编语言源程序源程序分别用两种格式书写源程序分别用两种格式书写v第一种格式从第一种格式从MASM5.0开始支持开始支持n简化段定义格式简化段定义格式v第二种格式第二种格式MASM5.0以前就具有以前就具有n完整段定义格式完整段定义格式Hello,Everybody!
程序功能程序功能;lt301a.asm;lt301a.asm(文件名)文件名).modelsmall.modelsmall;定义程序的存储模式定义程序的存储模式.stack.stack;定义堆栈段定义堆栈段.data.data;定义数据段定义数据段stringstringdbdbHello,Everybody!
Hello,Everybody!
0dh,0ah,0dh,0ah,$;在数据段定义要显示的字符串在数据段定义要显示的字符串.code.code;定义代码段定义代码段.startup.startup;程序起始点,建立程序起始点,建立DSDS、SSSSmovmovdx,offsetdx,offsetstringstring;指定字符串指定字符串movmovah,9ah,9intint21h21h;利用功能调用显示信息利用功能调用显示信息.exit0.exit0;程序结束点,返回程序结束点,返回DOSDOSendend;汇编结束汇编结束例例3.1a3.1a:
简化段定义格式简化段定义格式;SampleA.ASMSampleA.ASM.modelsmall.modelsmall.stack.stack.data.data.;在数据段定义数据在数据段定义数据.code.code.startup.startup.;在代码段填入指令序列在代码段填入指令序列.exit.exit00.;子程序代码子程序代码endend简化段定义格式MASM6.x支持;SampleC.ASMSampleC.ASM.modelsmall.modelsmall.stack.stack.data.data.;在数据段定义数据在数据段定义数据.code.codestartstart:
movmovax,dataax,datamovmovds,axds,ax.;在代码段填入指令序列在代码段填入指令序列movmovax,4c00hax,4c00hintint21h21h.;子程序代码子程序代码endstartendstart简化段定义格式MASM5.x支持;lt301b.asmlt301b.asm(文件名)文件名)stackstacksegmentstacksegmentstack;定义堆栈段定义堆栈段dwdw512dup(?
)512dup(?
);堆栈段有堆栈段有512512字(字(10241024字节)空间字节)空间stackstackendsends;堆栈段结束堆栈段结束datadatasegmentsegment;定义数据段定义数据段stringstringdbdbHello,Hello,EverybodyEverybody!
0dh,0ah,0dh,0ah,$datadataendsendscodecodesegmentsegmentcodecode;定义代码段定义代码段assumeassumecs:
code,ds:
data,ss:
stackcs:
code,ds:
data,ss:
stackstart:
start:
movmovax,dataax,data;建立建立DSDS段地址段地址movmovds,axds,ax例例3.1b3.1b:
完整段定义格式完整段定义格式movmovdx,offsetdx,offsetstringstringmovmovah,9ah,9intint21h21hmovmovax,4c00hax,4c00hintint21h21h;利用功能调用返回利用功能调用返回DOSDOScodecodeendsends;代码段结束代码段结束endstartendstart;汇编结束,同时指明程序起始点汇编结束,同时指明程序起始点例例3.1b3.1b:
完整段定义格式完整段定义格式;SampleB.ASMSampleB.ASMstackstacksegmentstacksegmentstackdwdw512dup(?
)512dup(?
)stackstackendsendsdatadatasegmentsegment.;在数据段定义数据在数据段定义数据datadataendsendscodecodesegmentsegmentcodecodeassumeassumecs:
code,ds:
data,ss:
stackcs:
code,ds:
data,ss:
stackstart:
start:
movmovax,dataax,datamovmovds,axds,ax.;在代码段填入指令序列在代码段填入指令序列movmovax,4c00hax,4c00hintint21h21h.;子程序代码子程序代码codecodeendsendsendstartendstart完整段定义格式MASM5.x支持3.1.3汇编语言程序的开发过程编编辑辑文本编辑器,如文本编辑器,如EDIT.COM源程序:
文件名源程序:
文件名.asm汇汇编编汇编程序,如汇编程序,如ML.EXE目标模块:
文件名目标模块:
文件名.obj连连接接连接程序,如连接程序,如LINK.EXE可执行文件:
文件名可执行文件:
文件名.exe调调试试调试程序,如调试程序,如CodeView应用程序应用程序错误错误错误错误错误错误错误错误开发过程1:
源程序的编辑源程序文件要以源程序文件要以ASMASM为扩展名为扩展名源源程程序序文文件件的的形形成成(编编辑辑)可可以以通通过过任任何一个文本编
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 新版 汇编语言 程序设计 钱晓捷 03