汇编语言联合 (union) 的声明和使用
unionname UNION
union-fields
unionname ENDS
structname STRUCT
structure-fields
UNION unionname
union-fields
ENDS
structname ENDS
Integei; UNION
D DWORD 0
W WORD 0
B BYTE 0
Integer ENDS
一致性
如果使用初始值,那么它们必须为相同的数值。假设 Integer 声明了 3 个不同的初始值:
Integer UNION
D DWORD 1
W WORD 5
B BYTE 8
Integer ENDS
.data
mylnt Integer <>
结构包含联合
在结构声明中使用联合的名称,就可以使联合嵌套在这个结构中。方法如同下面在 Fileinfo 结构中声明 FilelD 字段一样:
Fileinfo STRUCT
FilelD Integer <>
FileName BYTE 64 DUP(?)
Fileinfo ENDS
Fileinfo STRUCT
UNION FilelD
D DWORD ?
W WORD ?
B BYTE ?
ENDS
FileName BYTE 64 DUP(?)
Fileinfo ENDS
声明和使用联合变量
联合变量的声明和初始化方法与结构变量相同,只除了一个重要的差异:不允许初始值多于一个。下面是 Integer 类型变量的例子:
val1 Integer <12345678h>
val2 Integer <100h>
val3 Integer <>
mov val3.B, al
mov val3.W, ax
mov val3.D, eax
INPUT_RECORD STRUCT
EventType WORD ?
ALIGN DWORD
UNION Event
KEY_EVENT_RECORD <>
MOUSE_EVENT_RECORD <>
WINDOW_BUFFER_SIZE_RECORD <>
MENU_EVENT_RECORD <>
FOCUS_EVENT_RECORD <>
ENDS
INPUT_RECORD ENDS
Win32 API
在命名结构时,常常使用单词 RECORD。KEY_EVENT_RECORD 结构的定义如下所示:
KEY_EVENT_RECORD STRUCT
bKeyDown DWORD ?
wRepeatCount WORD ?
wVirtualKeyCode WORD ? wVirtualScanCode WORD ?
UNION uChar
UnicodeChar WORD ?
AsciiChar BYTE ?
ENDS
dwControlKeyState DWORD ?
KEY_EVENT_RECORD ENDS
所有教程
- socket
- Python基础教程
- C#教程
- MySQL函数
- MySQL
- C语言入门
- C语言专题
- C语言编译器
- C语言编程实例
- GCC编译器
- 数据结构
- C语言项目案例
- C++教程
- OpenCV
- Qt教程
- Unity 3D教程
- UE4
- STL
- Redis
- Android教程
- JavaScript
- PHP
- Mybatis
- Spring Cloud
- Maven
- vi命令
- Spring Boot
- Spring MVC
- Hibernate
- Linux
- Linux命令
- Shell脚本
- Java教程
- 设计模式
- Spring
- Servlet
- Struts2
- Java Swing
- JSP教程
- CSS教程
- TensorFlow
- 区块链
- Go语言教程
- Docker
- 编程笔记
- 资源下载
- 关于我们
- 汇编语言
- 大数据
- 云计算
- VIP视频