汇编语言入门教程-第五章:汇编语言程序结构.ppt

汇编语言入门教程-第五章:汇编语言程序结构.ppt

  1. 1、本文档共64页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
教学重点 本章重点掌握: 程序的格式、开发方法 参数的表达、变量的定义 变量和标号的属性 指令和伪指令 指令——使CPU产生动作、并在程序执行时才处理的语句,就是前一章学习的处理器指令 伪指令(Directive)——不产生CPU动作、在程序执行前由汇编程序处理的说明性语句,例如,数据说明、变量定义等等 伪指令与具体的处理器类型无关,但与汇编程序的版本有关 段寄存器的装入 SS段寄存器的装入 stack1 segment para stack dw 40h dup(?) stack1 ends …… code1 segment assume cs:code1,ss:stack1,…… …… SS段寄存器的装入 (2) 程序设置 stack1 segment para stack dw 40h dup(?) top label word stack1 ends …… code1 segment assume cs:code1,ss:stack1,…… …… mov ax,stack1 mov ss,ax mov sp,offset top …… CS和IP的装入 初始化时装入,根据END伪指令指示的地址 END [标号] END语句的作用: 告诉汇编程序,源程序结束 指定程序运行时的起始地址,即: seg 标号 cs offset 标号 ip 汇编结束伪指令 END [标号] 指示汇编程序MASM到此结束汇编过程 源程序的最后必须有一条END语句 可选的标号用于指定程序开始执行点,连接程序将据此设置CS : IP值 CS和IP的装入 (2)自动修改CS和IP 执行CALL FAR和RET指令 执行JMP FAR指令 响应中断及中断返回(IRET) RESET …… 第一章 基础知识 第五章 汇编语言程序结构 SEGMENT伪操作还可以增加类型及属性的说明,格式如下 : 一般情况下,这些说明可以不用。但是,如果需要用连接程序把本程序与其他程序模块相连接时,就需要使用这些说明。分别叙述如下: * 定位类型(align_type)可以是: 段名 SEGMENT [定位类型] [组合类型] [段字][类别名] ? 段名 ENDS 实际上定位类型可以理解为对两个相临段的段地址给予的一些规定。定位类型可以有以下几种:   PARA:指定所定义的段开始于小段边界,实际是规定这个段的起始地址与前面一个段的起始地址之差必须是16字节的整数倍。这意味着相临两个段的段地址之差最小也得是1。   PAGE:指定定义的段开始于页边界,实际是规定这个段的起始地址与前面一个段的起始地址之差必须是256字节的整数倍。   BYTE:所定义的段开始于字节边界,实际上是指这个段可以从任何地址开始。   WORD:所定义的段开始于字边界,实际是指这个段只能从偶数地址开始。 如果源程序中指定了段的定位类型为PARA或PAGE,那么获得的可执行文件中相临段的段地址就有差异。 但是如果源程序中指定了段的定位类型是BYTE或WORD,那么在可执行文件中相临段的段地址就有可能相同。 为了说明这个问题,我们下面给出了一个程序例: 第一章 基础知识 第五章 汇编语言程序结构 *组合类型 (combine_type)设置一定的组合类型就可以通知LINK程序把一些分散在不同模块内的同类型段组织在一个段内,这样可以使最终形成的可执行文件结构比较清晰。 PUBLIC 该段连接时将与有相同名字的其他分段连接在一起。其连接次序由连接命令指定。 COMMON 该段在连接时与其他同名分段有相同的起始地址,所以会产生覆盖。COMMON的连接长度是各分段中的最大长度。 AT expression 使段的起始地址是表达式所计算出来的16位段地址。但它不能用来指定代码段。 STOCK 指定该段在运行时为堆栈段的部分。 MEMORY 指定该段将分配在所有其他连接在一起的段的前面(在高地址上),如果连接时有几个指定MEMORY的段,则遇到的第一段作为MEMORY段,其他则作为COMMON段. *类别(‘CLASS’) 连接时用于组成段组的名字: 可以是: 第一章 基础知识 第五章 汇编语言程序结构 四、程序开始和结束伪操作 (ASM操作规则) 在程序的开始可以用NAME或TITLE为模块取名字,NAME的格式是:

文档评论(0)

junjun37473 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档