第3章汇编语言程序格式课件.ppt

  1. 1、本文档共76页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章汇编语言程序格式课件

第3章 汇编语言程序格式 3.1 汇编程序功能 3.2 伪操作 3.3 汇编语言程序格式 3.4 汇编语言程序的上机过程 3.1 汇编程序功能 计算机是通过执行指令序列来解决问题的。计算机的指令系统就是指该计算机能够执行的全部指令的集合。 指令的一般格式: [标号:] 操作符 OPD, OPS [;注释] 算术运算和位操作类指令的部分单操作数指令的格式: [标号:] 操作符 OPD [;注释] 汇编语言程序的建立及开发过程 汇编程序的主要功能 检查源程序 测出源程序中的语法错误,并给出出错信息 产生源程序的目标程序,并可给出列表文件(同时列出汇编语言和机器语言的文件,称为LST文件) 展开宏指令 3.2 伪操作 硬指令——使CPU产生动作、并在程序运行期间由计算机执行的语句。 伪指令(Directive)——不产生CPU动作、在程序执行前由汇编程序处理的说明性语句,例如,数据说明、变量定义等等。 伪指令与具体的处理器类型无关,但与汇编程序的版本有关。 汇编语言语句实例 MOV CX,0 ;传送指令,具有2个操作数 DELAY: NOP ;空操作指令,没有操作数,带有标号 LOOP DELAY ;循环指令,标号DELAY说明转移位置 BUFFER DB 1,2,3,4,5,6,7 ;数据定义伪指令,在主存中开辟7个连续的字节单元,初值依次为1~7,BUFFER表示首地址 3.2.1 段定义伪操作 1.完整的段定义伪操作 存储器的物理地址是由段地址和偏移地址组合而成的,汇编程序在把源程序转换为目标程序时,必须确定标号和变量的偏移地址,并且需要把有关信息通过目标模块传送给连接程序,以便连接程序把不同的段和模块连接在一起,形成一个可执行程序。为此需要用段定义伪操作,格式如下: 段名 SEGMENT [定位] [组合] [使用] [类别 ] ... ;对数据段,附加段和堆栈段,一般是存储单元的定    ...  ;义,分配等伪操作,对代码段则是指令及伪操作. 段名 ENDS 完整段定义由SEGMENT和ENDS这一对伪指令实现,SEGMENT伪指令定义一个逻辑段的开始,ENDS伪指令表示一个段的结束 段定义指令后的4个关键字用于确定段的各种属性,堆栈段要采用stack组合类型,代码段应具有‘code’类别,其他为可选属性参数 如果不指定,则采用默认参数;但如果指定,注意要按照上列次序。 PAGE 该段必须从页的边界开始,即段的起始地址的最低两个十六进制数位必须为0 简化段定义伪指令的代码和数据段默认采用WORD定位,堆栈段默认采用PARA定位 完整段定义伪指令的默认定位属性是PARA,其低4位已经是0,所以默认情况下数据段的偏移地址从0开始 (2)组合类型说明程序连接时的段合并方法,即指定多个逻辑段之间的关系,可为: PRIVATE 本段为私有段,与其他段没有逻辑关系,在连接时不与其他段合并,每段都有自己的段地址。这是完整段定义伪指令默认的段组合方式 PUBLIC 连接程序把本段与所有同名同类型的其他段相邻地连接在一起,然后为所有这些段指定一个共同的段地址,也就是合成一个物理段。这是简化段定义伪指令默认的段组合 STACK 本段是堆栈的一部分,连接程序将所有STACK段按照与PUBLIC段的同样方式进行合并。这是堆栈段必须具有的段组合 (3)使用类型是支持32位段而设置的属性,用来说明使用16位寻址方式还是32位寻址方式 对于16位x86 CPU来说,它默认是16位段,即USE16 而对于汇编32位x86 CPU指令时,它默认采用32位段,即USE32;但可以使用USE16指定标准的16位段 编写运行于实地址方式(8086工作方式)的汇编语言程序,必须采用16位段 (4)类别在引号中给出连接时组成段组的类型名。当连接程序组织段时,并不能把相同类别的段合并起来,但可将所有的同类别段相邻分配 段类别可以是任意名称,但必须位于单引号中 大多数MASM程序使用 code、data和stack’来分别指名代码段、数据段和堆栈段,以保持所有代码和数据的连续 此外,必须明确段与段寄存器的关系,可用ASSUME伪操作来实现。格式: ASSUME 段寄存器:段名 [,段寄存器名:段名, ...] 作用: 通知MASM用指定的段

文档评论(0)

叮当文档 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档