汇编语言-PPT课件.pptVIP

汇编语言-PPT课件.ppt

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共40页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

汇编语言数学科学学院计算机应用技术专业

第10章结构和宏

结构结构(structure)是逻辑上相互关联的一组变量的模板和模式,结构中的单个变量称为域(field)。程序语句可以将结构作为单个实体进行访问,也可以对单个域进行访问。结构是程序过程之间传递大量数据的基本工具。例子:Windows程序库使用COORD结构来确定屏幕坐标X和Y。在该结构中,域X相对结构开始的偏移是0,域Y的偏移是2。 COORDSTRUCT XWORD? YWORD? COORDENDS结构的使用包含三个按顺序的步骤: 1、定义结构; 2、声明一个或多个该结构类型的变量,称为结构变量(structurevariables); 3、写运行时指令访问结构的域。

定义结构可以使用STRUCT和ENDS伪指令来定义结构。在结构内部,使用与定义普通变量一样的格式来定义域。基本格式如下所示: 名字STRUCT 域的声明 名字ENDS结构中可包含任意数量的域。域的初始化如果为结构的域提供初始化值,在定义结构变量时这些初始化值就成了域的默认值,结构中可使用多种类型的初始化值:未定义:使用问号(?)表示域内容未定义。字符串:用引号(“”,’’)引起的字符初始化字符串域。整数:使用整数常量或整数表达式初始化整数域。数组:当域是一个数组时,使用DUP操作符初始化数组元素。EmployeeSTRUCT IdNum BYTE“000000000” LastName BYTE30DUP(0) Years WORD0 SalaryHistoryDWORD0,0,0,0EmployeeENDS

声明结构变量我们可以声明结构的一个实例,称为结构变量(structurevariables),并用特定值进行初始化,如果声明的时候使用尖括号(或大括号{}),编译器将保留默认的域初始值;或者还可以向特定的域中插入新值。例如 .data point1COORD5,10 point2COORD workerEmployee覆盖部分或全部的域默认值都是可能的。例如下面覆盖了Employee结构的IdNum域: person1Employee当字符串域的初始化值比域短时,剩余的位置将用空格填充,空字符并不会被自动插入到字符串域的末尾。注意这一点是很重要的,如果想调用WriteString等库过程,我们必须自己手动插入空字符。

可以插入逗号作为占位符以忽略掉对结构中某些域的初始化。例如,下面的语句忽略了IdNum域并初始化LastName域: person3Employee,”Jones”如果某个域包含一个数组,可以使用DUP操作符初始化某些或全部数组元素,如果初始化值比域短,那么剩余位置将用0填充。例如,下面的语句初始化SalaryHistory的前两个值并将其余设为0: person4Employee,,,2DUP(20000)可以像下例一样声明结构数组,其中AllPoints的每个元素都被初始化为0,0: NumPoints=3 AllPointsCOORDNumPointsDUP(0,0)

循环遍历数组使用间接寻址或变址寻址来操纵结构数组时通常要使用循环。例子:AllPoints.asm。例子:显式系统时间(ShowTime.asm)。

结构的嵌套当要在一个结构中包含其他结构时,我们可以创建嵌套结构定义(nestedstructuredefinitions)。例如一个Rectangle结构可以由屏幕左上角和右下角的坐标来定义,这二者都是COORD对象:RectangleSTRUCT UpperLeftCOORD LowerRightCOOEDRectangleENDS Rectangle变量声明的时候可以没有初始化值,也可以重写单个COORD域,下面是几种可选的格式:rect1Rectanglerect4Rectangle10,10,50,20

下面是对嵌套结构域的直接引用: movrect1.UpperLeft.x,10也可以使用间接操作数来访问嵌套域。下例中,我们将结构中左上角的Y坐标赋值为40,该结构由ESI寻址:movesi,OFFSETrect1mov(RectanglePTR[esi]).UpperLeft.Y,10OFFSET操作符可用于返回指向单个结构域的指针,其中包括嵌套域: movedi,OFFSETrect2.LowerRight mov(COORDPTR[edi]).x,50 movedi,OFFSETrect2.LowerRight.x movWORDPTR[edi],50例子:醉汉走路(Drunkar

文档评论(0)

185****6315 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档