第四章 汇编语言程序设计69953.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第4章 汇编语言程序格式 4.1汇编程序功能 4.2伪操作 4.3汇编语言程序格式 4.4汇编语言程序的上机过程 汇编程序功能 汇编语言程序的建立及汇编过程 汇编程序的主要功能 检查出源程序的语法错误,并给出出错信息提示。 生成源程序的目标代码程序,也可给出列表文件。 汇编时遇到宏指令即展开。 伪操作 伪指令语句又称为说明语句或管理语句。它不同于指令语句,不是直接命令CPU去执行某一操作,而是命令汇编程序应当如何生成目标代码。 例如控制汇编以实现数据定义、存储器分配、符号处理、模块之间的通信、源程序开始和指示程序结束等功能。 伪指令无相应的目标代码,因此也称为伪操作。伪指令格式与指令格式十分相似。 处理器选择伪操作 告诉汇编程序选择哪一种指令系统 缺省方式 选择8086指令系统 .8086 选择80286指令系统 .286 选择选择保护方式下的80286指令系统 .286P 选择80386指令系统 (除特权指令) .386 选择选择保护方式下的80386指令系统 .386P 选择80486指令系统 (除特权指令) .486 选择选择保护方式下的80486指令系统 .486P 段定义伪操作 1、完整的定义段伪操作 格式: 段名 SEGMENT [使用类型][定位方式][组合类型][‘类别’] 段名 ENDS 定位类型 说明段的起始地址应该有怎样的边界值。可以是: 1)PARA 指定段的起始地址必须从小段边界开始,即段起始地址的最低16进制数位必须为”0”。 即地址是可以被16整除的地址,缺省时,隐含为PARA。 2) BYTE 该段的起始地址可以从任何地址开始。 3)?WORD 表示段起始地址以偶地址开始。 4)?DWORD 该段必须从双字的边界开始。即段起始地址的最低十六进制数位必须为4的倍数。 5) PAGE 设该段的起始地址的低8位为”0”。该地址是被256整除的地址 组合类型 说明程序连接时的段合并方法。 1)PRIVATE(默认选项) 该段为私有段,在连接时将不与其他模块中的同名分段合并。 2)PUBLIC 该段连接时可以把不同模块中的同名段相连接而形成一个段,其连接次序由连接命令指定。每一分段都从小段的边界开始。 3)COMMON 该段在连接时可以把不同模块中的同名段重叠而形成一个段,由于各同名分段有相同的起始地址,所以会产生覆盖。COMMON的连接长度是各分段中的最大长度。 4)AT 表达式 使段地址是表达式所计算出来的16位值。但它不能用来指定代码段。 5)MEMORY与PUBLIC同义 6)STACK 把不同模块中的同名段组合而形成一个堆栈段。该段的长度为各原有段的总和,各原有段之间并无PUBLIC所连接段中的间隙,而且栈顶可以自动指向连接后形成的大堆栈段的栈顶。 使用类型 只适用于386及其后继机型,它用来说明使用16位寻址方式还是32位寻址方式。可以是: 1)USE16(默认选项) 使用16位寻址方式 段长不超过64KB,地址的形式是16位段地址和16位偏移地址。 2)USE32 使用32位寻址方式 段长可达4GB,地址的形式是16位段地址和32位偏移地址。 类别 (‘CLASS’)在引号中给出连接时组成段组的类型名。类别说明并不能把相同类别的段合并起来,但在连接后形成的装入模块中,可以把它们的位置靠在一起。 段分配伪指令ASSUME ASSUME 段寄存器名:段名,段寄存器名:段名 ?功能: 制定某个段分配给哪一个段寄存器,它并不能把段地址分配给段寄存器。该指令放在程序的代码段中。 如:ASSUME CS:CODE,ES:ESTRA,DS:DATA,SS:STACK 说明代码段的段地址寄存器CS应该存放代码段CODE的段地址,同理ES、DS、SS段寄存器对应存放ESTRA、DATA、STACK的段地址,该指令只是说明,并没有真正传送,除了代码段寄存器中的代码段地址是由系统自动分配,其他的段地址在代码段中可以为所对应的段寄存器赋初值。 DSEG SEGMENT DSEG ENDS CSEG ASSUME CS:CSEG,DS:DSEG START: MOV AX, DSEG MOV DS, AX MOV AX, 4C00H INT 21H CSEG ENDS END START 变量和标号的属性 变量的属性: (1)段属性:定义变量的段起始地址,此值必须在段寄存器中。 (2)偏移属性:从变量所在段的起始地址到定义变量的位置之间的字节数。 (3)类型属性:定义该变量所保留的字节数。 标号的属性: (1)段

文档评论(0)

wnqwwy20 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:7014141164000003

1亿VIP精品文档

相关文档