《指令系统与汇编语言》.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
本章学习目标 4.1 指令系统概述 4.1.1 指令的格式 4.2 寻址方式 4.2.2 寻找转移地址的寻址方式 (3)定义符号名伪指令LABLE 格式:变量名或标号  LABLE  类型 功能:其用途是在原来标号或变量的基础上定义一个类型不同的新的标号或变量。不实际为它分配新的存储单元。用LABLE 建立的存储器地址操作数的段和偏移量部分与目前所能分配的下一个存储单元的段和偏移量相同,通常与数据定义伪指令连用。 变量的类型可以是BYTE、 WORD、DWORD,标号的类型可以是NEAR、FAR.。 利用LABLE伪指令可以使同一个数据区兼有BYTE和WORD两种属性,这样,在以后的程序中可根据不同的需要分别以字节为单位,或以字为单位存取其中的数据。 例4.10 用LABLE伪指令定义变量。 VALl LABLE BYTE ;VAL1是字节型变量 VAL2 DW 20 DUP(?) ;VAL2是字型变量 VALl和VAL2变量的存储地址相同,但类型不同。 例4.11 用LABLE伪指令定义标号。 FNEXT LABEL FAR NNEXT: ADD AX ,BX FNEXT与紧跟其后的标号NNEXT具有相同的段属性和偏移地址属性,但类型不同。段内转移用标号NNEXT,当进行段间转移时用标号FNEXT。 3.段定义伪指令 段定义伪指令指示汇编程序如何按段组织程序和使用存储器 。 段定义伪指令在汇编语言程序中定义逻辑段,用它来指定段的名称和范围,并指明段的定位类型、组合类型及类别。 (1)段定义伪指令SEGMENT/ENDS 格式:段名 SEGMENT [定位类型] [组合类型] [类别] …(段内语句系列) 段名 ENDS SEGMENT伪指令用于定义一个逻辑段,给逻辑段赋予一个段名,并以后面的任选项规定该逻辑段的其他特性。SEGMENT伪指令位于一个逻辑段的开始,ENDS伪指令则表示一个逻辑段的结束。这两个伪操作总是成对出现,缺一不可,两者前面的段名必须一致。 段名是为该段起的名字,用来指出汇编程序为该段分配的存储区起始位置。 SEGMENT伪指令后面还有三个任选项,三者的顺序必须符合格式中的规定。这些任选项是给汇编程序和连接程序的命令,它告诉汇编程序和连接程序,如何确定解决边界,以及如何组合几个不同的段等。 1)定位类型:定位类型选项告诉汇编程序如何确定逻辑段的边界在存储器中的位置,用来规定对段起始边界的要求。有以下4种选择: BYTE:表示逻辑段从字节的边界开始,即可以从任何地址开始。此时本段的起始地址紧接在前一个段的后面。 WORD:表示逻辑段从字的边界开始。两个字节为一个字,此时本段的起始地址最低一位必须是0,即从偶地址开始。 PARA:表示逻辑段从一个节的边界开始。通常16个字节称为一个节,故本段的起始地址最低4位必须为0,应为xxxx0H。 PAGE:表示逻辑段从页边界开始。通常256个字节称为一页。故本段的起始地址最低8位必须为0,应为xxx00H. 如果省略定位类型任选项,则默认值为PARA。 2)组合类型:SEGMENT伪指令的第2个任选项是组合类型,它告诉汇编程序,当装入存储器时各个逻辑段如何进行组合。共有以下6种选择: NONE:表示本段与其他逻辑段不发生关系,每段都有自己的基地址。这是任选项默认的组合类型。 PUBLIC:连接时,对于不同程序模块中的逻辑段,只要具有相同的类别名,就把这些段顺序连接成为一个逻辑段装入内存。 STACK:组合类型为STACK时,其含义与PUBLIC基本一样,即不同程序中的逻辑段,如果类别名相同,则顺序连接成为一个逻辑段。不过组合类型STACK仅限于作为堆栈区域的逻辑段使用。 COMMON:连接时,对于不同程序中的逻辑段,如果具有相同的类别名,则都从同一个地址开始装入,因而各个逻辑段将发生重叠。最后,连接以后的段的长度等于原来的逻辑段的长度,重叠部分的内容是最后一个逻辑段的内容。 MEMORY:几个逻辑段连接时,连接程序将把本段定位在被连接在一起的其他所有段之上,如果被连接的逻辑段中有多个段的组合类型都是MEMORY,则汇编程序只将首先遇到的段作为MEMORY段,而其余的段均当作COMMON段来处理。 AT表达式:这种组合类型表示本逻辑段根据表达式求值的结果定位段基址。例如AT 5800H,表示本段的段基址为5800H,则本段从存储器的物理地址58000H开始装入。 3)类别:SEGMENT伪指令的第3个任意选项是类别,类别必须放在单引号内。类别的作用是在连接时决定各逻辑段的装入顺序。当几个程序模块进行连接时,其中具有相同类别名的逻辑段,按出现的先后顺序排列

文档评论(0)

好老师 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档