|
|
![]() |
|
2、结构类型变量的定义
在定义某个结构类型后,程序员就可以说明该结构类型的内存变量。它的说明形式与前面介绍的简单数据类型的变量说明基本上一致。其定义格式如下:
[变量名] 结构名 <[字段值表]>
解释:1)、 |
变量名即为该结构类型的变量名,它可省缺。如果省缺,则不能用符号名来访问该内存单元; |
2)、 | 字段值表是给字段赋初值,中间用逗号','分开,其字段值的排列顺序及类型应与该结构说明时各字段相一致; |
3)、 | 如果结构变量中某字段用其说明时的缺省值,那么,可用逗号来表示;如果所有字段都如此,则可省去字段值表,但必须保留一对尖括号"<"、">"。 |
例如: |
|||
COURSE1 |
COURSE <> | ;使用缺省的初值 | |
COURSE2 | COURSE <1, 'Pascal', 60> | ||
COURSE3 | COURSE <2, , 84> | ;使用缺省的课程名 | |
PEASON1 | PEASON | <1000, '张 三', 34> |
定义了结构类型的变量后,若要访问其结构中的某个字段,则可采用如下形式:
结构变量名.字段名
该引用方式与高级语言的字段引用方式完全一致,我们还可用偏移量来访问其中的某个字段,但此方法不直观,变动性大,所以,一般情况下,不提倡使用此方法。
例如:
EXAM1 | STRUC | |||
F1 | DW ? | |||
F2 | DB ? | |||
EVEN | ;偶对齐 | |||
F3 | DW ? | |||
EXAM1 | ENDS | |||
E1 | EXAM1 <1234H,'A',8765H> | ;定义结构EXAM1的一个变量E1 |
下面二种方法都可以把结构变量E1中字段的内容赋给寄存器AX,但如果在字段F3之前增加或减少了字段,那么,这些引用需要改变吗?
(1)、用字段名直接引用
MOV AX, E1.F3
(2)、用字段的偏移量间接引用
LEA SI, E1
MOV AX, [SI+4] ;其中4是字段F3的偏移量