WNDCLASSEX 传参疑问
时间:2011-10-20
来源:互联网
最近在学习罗云彬win32教程,注册窗口类RegisterClassEx函数的参数填写。
mov @stWndClass.hCursor,eax ;eax含有cursor的句柄
push hInstance ;hInstance含有模块句柄
pop @stWndClass.hInstance
mov @stWndClass.cbSize,sizeof WNDCLASSEX
;下面对@stWndClass结构中的各项赋值
我的问题是干吗不直接 mov @stWndClass.hInstance, hInstance? 我在程序中改写了这句,竟然编译不通过。
这个首先将Instance压入栈,然后将栈顶也就是刚刚hInstance弹出栈赋值到@stWndClass.hInstance,不是显得很繁琐么?
mov @stWndClass.hCursor,eax ;eax含有cursor的句柄
push hInstance ;hInstance含有模块句柄
pop @stWndClass.hInstance
mov @stWndClass.cbSize,sizeof WNDCLASSEX
;下面对@stWndClass结构中的各项赋值
我的问题是干吗不直接 mov @stWndClass.hInstance, hInstance? 我在程序中改写了这句,竟然编译不通过。
这个首先将Instance压入栈,然后将栈顶也就是刚刚hInstance弹出栈赋值到@stWndClass.hInstance,不是显得很繁琐么?
作者: wenkebilly 发布时间: 2011-10-20
mov @stWndClass.hInstance, hInstance
mov的两个操作数不能同时为存储器操作数。所以不能直接的将一个数从存储器的一个位置,复制到另个位置,因为没有从存储器到存储器的地址线,所以必须借助一个寄存器作中介,来实现将数移动到存储器的另一个位置。
mov的两个操作数不能同时为存储器操作数。所以不能直接的将一个数从存储器的一个位置,复制到另个位置,因为没有从存储器到存储器的地址线,所以必须借助一个寄存器作中介,来实现将数移动到存储器的另一个位置。
作者: fuchen_1989 发布时间: 2011-10-20
@stWndClass.hInstance 和 hInstance 都是内存类型的数据,不支持 mov 指令的由内存到内存的数据操作的。所以,需要通过这样的操作方法;或者是经由通用寄存器中转。
作者: zara 发布时间: 2011-10-20
LZ 学习过 16位汇编么?
没有学习过的话,看那本有点困难的
汇编语言不支持内存到内存传值
只能这样push 再 pop
其实和
mov eax,hInstance
mov @stWndClass.hInstance,eax
是一样的
一个用栈暂存,一个用寄存器暂存
没有学习过的话,看那本有点困难的
汇编语言不支持内存到内存传值
只能这样push 再 pop
其实和
mov eax,hInstance
mov @stWndClass.hInstance,eax
是一样的
一个用栈暂存,一个用寄存器暂存
作者: korekara88730 发布时间: 2011-10-20
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28