一、结构体声明规则
结构名 STRUC [Alignment][, NONUNIQUE]
数据定义语句序列
结构名 ENDS
代码示例:
.DATA aligned_student STRUC 4 m_Age DWORD ? ;不初始化 m_Name BYTE 30 DUP(0) ;大小为30字节的字符串数组,初始化为0 m_Score DWORD 0 ;INT型分数,初始化为0 m_Interests BYTE "No",0 ;初始化为 "No\0" aligned_student ENDS
注意
- DUP即英文duplicate的缩写,重复的意思,用来定义重复的字节、字、双字、结构等内存缓冲区。括号里写“?”表示不初始化
- 可以不用写Alignment,默认以1对齐
- 建议把结构体声明和定义都写在.DATA段中
二、结构体定义规则
以下任意一种都可以
student1 aligned_student <>
student2 aligned_student <20,"Bob",80,"NO">
student3 aligned_student <20>
student4 aligned_student {20}
结构体数组定义
class1 aligned_student 25 DUP(<>)
三、结构体使用
mov eax,student1.m_Age
mov student2.m_Score,eax
lea eax,offset InterestName