win32汇编-结构体
来源:互联网 发布:比特彗星tcp端口阻塞 编辑:程序博客网 时间:2024/05/23 13:38
汇编中定义结构体 格式如下:
例子:
定义一个WNDCLASS类型的变量
.
.data?是为初始化的定义方法,.data是初始化的定义方法。
数据结构的引用:
如果要使用 stWndClass中的lpfnWndProc字段,最直接的办法是:
把lpfnWndProc字段的值放入eax中去
假设 stWndClass在内存中的地址使403004h,这句会被编译成 mov eax,[403004h]
因为lpfnWndProc是stWndClass中的第二个字段,一个字段是dword,已经占用了4字节。
esi作指针寻址:
注意:第二句是[esi+WNDCLASS.lpfnWndProc],是数据类型名,而不是变量名,这里会编译成esi+偏移地址。
高级用法assume
MASM有一个高级用法,用assume伪指令把寄存器预定义为结构指针,再进行操作。
注意:不再使用esi寄存器作为指针的时候要用 assume esi:nothing取消定义。
结构体嵌套:
NEW_WNDCLASS struct
DwOption dword ?
OldWndClass WNDCLASS <>
NEW_WNDCLASS
这里的 OldWndClass会直接被编译器展开。
结构名 struct字段1 类型 ?字段2 类型 ?结构名 ends
例子:
WNDCLASS struct Style DWORD ? LpfnWndProc DWORD ? cbClsExtra DWORD ? cbWndExtra DWORD ? hInstance DWORD ? hIcon DWORD ? hCursor DWORD ? hbrBackground DWORD ? lpszMenuName DWORD ? lpszClassName DWORD ? WNDCLASS ends
定义一个WNDCLASS类型的变量
.
data?stWndClass WNDCLASS <>...
.datastWndClass WNDCLASS <1,1,1,1,1,1,1,1,1>
.data?是为初始化的定义方法,.data是初始化的定义方法。
数据结构的引用:
如果要使用 stWndClass中的lpfnWndProc字段,最直接的办法是:
mov eax,stWndClass.lpfnWndProc
把lpfnWndProc字段的值放入eax中去
假设 stWndClass在内存中的地址使403004h,这句会被编译成 mov eax,[403004h]
因为lpfnWndProc是stWndClass中的第二个字段,一个字段是dword,已经占用了4字节。
esi作指针寻址:
mov esi,offset stWndClass mov ax,[esi+WNDCLASS.lpfnWndProc]
注意:第二句是[esi+WNDCLASS.lpfnWndProc],是数据类型名,而不是变量名,这里会编译成esi+偏移地址。
高级用法assume
MASM有一个高级用法,用assume伪指令把寄存器预定义为结构指针,再进行操作。
mov esi,offset stWndClassassume esi:ptr WNDCLASSmov ax,[esi].lpfnWndProcassume esi:nothing
注意:不再使用esi寄存器作为指针的时候要用 assume esi:nothing取消定义。
结构体嵌套:
NEW_WNDCLASS struct
DwOption dword ?
OldWndClass WNDCLASS <>
NEW_WNDCLASS
这里的 OldWndClass会直接被编译器展开。
阅读全文
0 0
- win32汇编-结构体
- win32汇编入门了解(2)win32汇编基本结构
- Win32汇编源程序的结构(1)
- Win32汇编源程序的结构(2)
- Win32汇编源程序的结构(3)
- Win32汇编教程二 Win32汇编程序的结构和语法
- Win32汇编教程二:Win32汇编程序的结构和语法
- Win32 汇编
- WIN32的消息结构体
- dos汇编 和 win32汇编
- 汇编结构体数组寻址
- WIN32汇编: 8.菜单
- WIN32汇编: 14.进程
- WIN32汇编: 21.管道
- WIN32汇编: 22.超类化
- Win32汇编教程 上
- Win32汇编教程 下
- Win32汇编学习
- FatFS文件系统详解-附移植建议
- lower_bound和upper_bound
- Spark重点难点知识总结(一)
- ROS 运行rqt rqt_graph出现段错误(核心已转储) 解决方法
- 浅复制(Shallow Copy)与深复制(Deep Copy)
- win32汇编-结构体
- SX1301吞吐量是SX1278的多少倍?
- 开源数据库的现状
- spring boot应用p6spy监控sql
- iTextPdf学习使用记录
- 02-MVP模式
- 用gensim doc2vec计算文本相似度
- 数据结构实验之图论八:欧拉回路
- Android 高仿微信图片选择器