- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章 汇编语言及伪指令
教学要求:
本章以微软宏汇编程序MASM 5.x为蓝本,学习汇编语言源程序的格式、常用伪指令与操作符;同时,介绍汇编语言源程序的汇编、连接、运行过程,以及修改和调试方法。
?
重点难点:
源程序格式,常量表达,变量定义及属性、段定义、过程定义
第1节 汇编程序
汇编程序的功能
1.检查源程序,找出语法错误,给出出错信息。
2.产生目标文件(.obj)和列表文件(.lst)。
3.展开宏指令;数制转换
4.存储单元分配(变量);段基地址分配
第2节 伪指令
一、概述
1.语句一般是由分隔符分成的四个部分组成,它们有两种格式。
(1)执行性语句——由硬指令构成的语句,它通常对应一条机器指令:
?????? 标号:???硬指令助记符? 操作数,操作数?? ;注释
(2)说明性语句——由伪指令构成的语句,它通常指示汇编程序如何汇编源程序:
????????? 名字??? 伪指令助记符? 参数,参数,...?? ;注释
·? 标号和名字是符合汇编语法的用户自定义的标识符,每个标识符的定义是唯一的。标识符(Identifier)一般最多由31个字母、数字及规定的特殊符号(如 _、$、?、@)组成,不能以数字开头。默认情况下,汇编程序不区别标识符中的字母大小写,即大小写不敏感。
·? 硬指令助记符可以是任何一条处理器指令,也可以是一条宏指令。伪指令助记符主要将在本章和下一章学习。
·? 处理器指令的操作数可以是立即数、寄存器和存储单元。伪指令的参数可以是常数、变量名、表达式等,可以有多个,参数之间用逗号分隔。
·? 语句中由分号“;”开始的部分为注释内容,用以增加源程序的可读性。
·? 语句的4个组成部分要用分隔符分开。标号后的冒号、注释前的分号是规定采用的分隔符,操作数之间和参数之间一般使用逗号分隔,其他部分通常采用空格或制表符作为分隔符。多个空格和制表符的作用与一个相同。另外,MASM也支持续行符“\”。
伪操作是汇编程序对源程序进行汇编时处理的操作,完成处理器选择、存储模式定义、数据定义、存储器分配、指示程序开始结束等功能。
处理器选择伪操作(.386)
段定义伪操作
程序开始和结束伪操作
数据定义及存储器分配伪操作
表达式赋值伪操作
地址计数器与对准伪操作
基数控制伪操作
2.程序分段
完整的汇编语言源程序也由段组成。
????一个汇编语言源程序可以包含若干个代码段、数据段、附加段或堆栈段,段与段之间的顺序可随意排列。
????? 需独立运行的程序必须包含一个代码段,并指示程序执行的起始点,一个程序只有一个起始点。
????? 所有的可执行性语句必须位于某一个代码段内,说明性语句可根据需要位于任一段内。
通常,程序还需要一个堆栈段。
二、段的定义
1.完整段定义的源程序格式
????段名 segment [定位] [组合] [段字] [’类别’]
?????? ... ;语句序列(指令、伪指令)
??? 段名 ends
?
??? SEGMENT伪指令定义一个逻辑段的开始,ENDS伪指令表示一个段的结束。段定义指令后的4个关键字用于确定段的各种属性,堆栈段要采用stack组合类型,代码段应具有‘code’类别,其他为可选属性参数。如果不指定,则采用默认参数;但如果指定,注意要按照上列次序。
?
(1) 段定位(align)属性——指定逻辑段在主存储器中的边界:
??????? BYTE:段开始为下一个可用的字节地址(xxxx xxxxb),属性值为1
??????? WORD:段开始为下一个可用的偶数地址(xxxx xxx0b),属性值为2
??????? DWORD:段开始为下一个可用的4倍数地址(xxxx xx00b),属性值为4
??????? PARA:段开始为下一个可用的节地址(xxxx 0000b),属性值为16
??????? PAGE:段开始为下一个可用的页地址(0000 0000b),属性值为256
????? 简化段定义伪指令的代码和数据段默认采用WORD定位,堆栈段默认采用PARA定位。完整段定义伪指令的默认定位属性是PARA。
?
(2) 段组合(Combine)属性——指定多个逻辑段之间的关系:
??????? PRIVATE:本段与其他段没有逻辑关系,不与其他段合并。这是完整段定义伪指令默认的段组合方式。
??????? PUBLIC:连接程序把本段与所有同名同类型的其他段相邻地连接在一起,指定一个共同的段地址。这是简化段定义伪指令默认的段组合。
??????? STACK:本段是堆栈的一部分,这是堆栈段必须具有的段组合。
?
(3) 段字(Use)属性——这是为支持32位段而设置的属性。
??????? 对于16位x86
您可能关注的文档
- 【世纪金榜】湖南省邵阳市2016中考物理第十五章电流和电路第十六章电压电阻复习答辩.ppt
- 第十一章联接讲解.pptx
- 【四清导航】2015-2016学年八年级语文下册第四单元17《端午的鸭蛋》(新版)新人教版答辩.ppt
- 第四节化学物质毒性的影响因素讲解.pptx
- 已修改2016届浙江省温州市十校联合体高三下学期期初联考理科综合剖析.doc
- 黑龙江省哈尔滨市第四十七中学2016届九年级物化9月学情检测探析.doc
- 【新步步高】2016版高考历史二轮专题复习专题二近代中国维护国家主权的斗争与民主革命专题整合答辩.ppt
- 数字时钟研究.doc
- 英镑汇率跌到8.8,此时不去英国更待何时?剖析.docx
- 信息系统展示介绍.pptx
文档评论(0)