复杂汇编程序设计.pptx
第7章复杂汇编程序设计7.1结构7.2记录7.3联合7.4应用举例
结构名STRUC数据定义语句序列结构名ENDS功能:定义结构类型的数据,但并不真正给结构分配存储空间,只是说明包括结构名、域名及其数据类型在内的结构的类型。格式:7.1.1结构的定义用STURC和ENDS把一系列数据定义语句括起来就成了一个结构。7.1结构
1结构定义中的结构名必须有且STURC和ENDS前的结构名必须一致。32结构的使用应是先定义后使用,即应在为结构数据分配空间之前定义;结构名由用户定义,结构内数据定义语句中的变量名称为结构字段名,简称为字段名;说明:
例7-1SAFY STRUCNO DB?NAME DBABCDEFGSAGE DW?DEP DBCOMPUTERSAFYENDS在结构SAFY中,定义了4个字段,分别是NO、NAME、DEP和SAGE字段,字段NO、NAME和DEP是字节型数据,SAGE是字型数据。
027.1.2结构的存储分配和预置结构定义仅仅是告诉汇编程序存在这样一种形式的变量,只有进行结构的存储分配和预置后,才使结构变量真正占有内存,也才能使用结构变量。格式:结构变量名结构名字段值表功能:为结构变量分配存储空间及初始化。01
说明:说明:(1)结构名是结构定义时用的名字,结构变量名与具体的存储空间及数据相联系,程序中可以直接引用它;(2)字段值表用来给结构变量赋初值。规定如下:①各字段值的排列顺序及类型应与结构定义时相一致,中间以逗号分隔;②如果采用在结构定义时的初值,仅写一个逗号即可,若所有字段均采用在结构定义时的初值,仅写一个尖括号即可;③只有在结构定义中具有一项数据的字段(包括字符串字段)才可重新赋初值;④在结构预置中,若分配给结构的数据有多个且相同,可以使用DUP操作符;⑤尖括号什么时侯也不可省略。
例7-2A1SAFY1,ZHANG,19,A2SAFY其中,A1SAFY1,ZHANG,仅对SAFY结构中的NO、NAME和SAGE这3个字段赋初值,第4个字段采用结构定义时的值;对A2SAFY而言,是采用结构定义时的初值。已经定义了一个结构之后,就可以通过结构的存储分配和预置得到多个结构变量。如前所述,可将学生简历定义为一个结构,根据每个学生的情况组成多个字段值表,再用多条结构预置语句就可以产生每个学生的登记表。
7.1.3结构及其字段的引用要访问结构变量,可以直接写结构变量名。要访问结构变量中某一字段,可采用两种方法:结构变量名·结构字段名;预先将结构变量的起始地址、偏移量送往某个地址寄存器,再用[地址寄存器名]代替结构变量名。
MOVAL,A1.NO;结构变量的访问采用“结构变量名·结构字段名”的方法01或MOVBX,OFFSETA1;结构变量的访问采用预先将结构变量的起始地址,02MOVAL,[BX].NO ;偏移量送BX地址寄存器,再用[BX]代替A1的方法03例7-3
例7-4引用结构,在数据段定义和预置结构,在代码段引用结构。;定义结构LIKESTRUCTODW0FRMDW?INODB99DUP(?)LIKEENDS;存储分配和预置结构MASLIKE,5TXNLIKE,9,100CHALIKE500DUP() ;预置500个结构变量;将CHA中所有FRM字段预置0
MOVBX,OFFSETCHA1MOV[BX].FRM,02MOVSI,TYPECHA ;SI←一个结构的字节数3MOVCX,LENGTHCHA-1 ;CX←结构变量个数-14PLG:MOV[BX*SI].FRM,05ADDBX,SI6LOOPPLG7;将MAS中FRM字段改为TXN中TO字段的值8MOVAX,TXN.TO9MOVMAS.FRH,AX10
AEDBC多次定位同样的存储格式;单个文件多重缓冲;栈寻址。列表处理;结构在以下几种场合特别适用:
7.2.1记录的概念和定义格式:记录名RECORD字段名:宽度[=表达式][,…]功能:定义记录类型的数据。7.2记录
说明:记录名和字段名必须具有惟一性。宽度表示相应字段所占的位数(1~16位)。如果各字段的宽度和大