汇编-第6章.ppt

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

第6章??结构与记录 6.1 结构 6.2记录 6.1 结构 6.1.1结构的概念 逻辑上互相关联的一组数据以某种形式组合在一起就是结构。在程序中,若要多次使用相同的一组数据格式,就可以把这一组数据格式定义为一个结构。结构定义仅仅是一种对存储形式的描述,并不真正分配存储空间。结构一经定义就可以以此结构如同DB、DW、DD一样用来预置和分配变量的存储空间。 6.1.2 结构的定义 在一个程序中,使用结构前必须用结构伪指令STRUC/ENDS先定义。结构伪指令的使用格式如下: 结构名 STRUC 数据定义语句序列 结构名 ENDS 其中结构名是标识符,不能缺省,且在一源程序中必须是唯一的。数据定义语句序列是用DB,DW或DD定义结构中各字段(Fields),这些语句中的变量名叫结构字段名。 每一个结构字段名有局部偏移量及类型的属性。局部偏移量是指结构字段的第一个字节与结构起点之间的字节数,类型仍然是指字节、字或双字。例如定义一个结构: STUDENT STRUC NAME DB ‘0123456789ABCDEF’ SEX DB 0 CITY DB 20H DUP(?) ID DW ? FACE DB ? STUDENT END 上述结构中NAME、SEX、CITY、ID、FACE分别是结构STUDENT的字段名,它们的局部偏移量分别是0,l0H,11H,31H,33H。结构中各字段可以指定具体的数值或字符作为结构字段的初值。用伪指令STRUC/ENDS定义的结构,不产生任何目标代码,因而也不分配存储单元。 注意标记一个结构类型结束的伪指令与标记一个段结束的伪指令用相同的助记符ENDS,汇编程序通过上下文理解ENDS的含义,因此要确保每一SEGMENT伪指令和每一STRUC伪指令有各自对应的ENDS伪指令。 6.1.3 结构的预置与存储分配 当结构定义后,我们可在程序中直接引用结构名,为结构预置副本,定义结构变量,分配存存储空间。结构变量定义格式为: 结构变量名 结构名 字段值表 其中,结构名是用STRUC/ENDS伪指令定义结构时的结构名。结构变量名是当前定义的结构变量的名称,它同其他变量一样有三个属性:段、偏移量和类型属性。段、偏移量表示结构变量的地址,类型表示结构的总字节数。字段值表为结构变量中各字段进行预置,其中各字段值的排列顺序及类型应与结构定义时各字段相一致,中间以逗号分隔。如果某个字段采用在说明结构时所给定缺省的初值,那么可简单地用逗号表示;如果结构变量的所有字段均如此,那么可省去字段值表,但尖括号不能省略。 例如,假设已说明了上述结构STUDENT ,那么可定义如下结构变量: DATA SEGMENT STD1 STUDENT STD2 STUDENT ’ZHANG SAN’ STD3 STUDENT ’LI SI’,1,,1234H,2 STD4 STUDENT 10H DUP(,1) DATA ENDS 在上述结构预置中,结构变量STDl对结构中所有字段不加修改,保留各字段的初值。结构变量STD2仅修改第一个字段,其余各字段保留其初值。结构变量STD3除第三个字段(字段名为CITY)外,其余各字段均作修改。按照上述结构变量的定义,变量STDl,STD2和STD3的存储空间分配情况如下图所示。 对结构字段初值的修改,并非所有字段的初值都可以修改,只有简单结构字段和字符串字段初值才可以修改。所谓简单结构字段就是由伪指令DB,DW或DD定义的单项变量,如结构STUDENT中SEX,ID,FACE就是只有单项的简单结构字段。而NAME是用DB伪指令定义的字符串,也可以用其他字符串进行修改。而多项(多重)变量的结构字段初值(如CITY)不能修改。例如下面就是多项(多重)的结构字段: DB 10H DUP(?) DW 1234H,5678H,0ABCDH DB ‘ABCD’,‘EFGH’ DW BUF,CUT 结构变量名STD4同时预置10H个结构副本,每一个副本中都是仅修改第二个字段初值,其余保留不变。这10H个结构数据在分配存

文档评论(0)

报告论文库 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档