汇编结构体的问题!

x858078 2009-03-19 09:35:53

mov esi,offset stwndclass
assume esi:ptr WNDCLASS
mov eax,[esi].lpfnWndProc
......
assume esi:nothing


这里的assume esi:ptr WNDCLASS

为什么要用来声明,既然声明了,为什么不指定类型呢?
...全文
266 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhaovqd 2009-03-20
  • 打赏
  • 举报
回复
assume esi:ptr 与 byte ptr 是完全不同的两个东东
mov al, byte ptr [xxx] 是汇编指令只接影响代码
assume esi:ptr 是宏汇编指令,告诉编译器一些信息,本行不生成任何代码
=========================
mov esi,offset stwndclass
assume esi:ptr WNDCLASS
mov eax,[esi].lpfnWndProc
assume esi:nothing
========================
等价于
=========================
mov esi,offset stwndclass
mov eax,(WNDCLASS PTR [esi]).lpfnWndProc
========================

killbug2004 2009-03-20
  • 打赏
  • 举报
回复
assume esi:ptr WNDCLASS

类似C语言中的强制类型转换(WNDCLASS*)esi
mov eax,[esi].lpfnWndProc 这样比mov eax,(WNDCLASS PTR [esi]).lpfnWndProc 写代码要方便

这里不是声明,而是相当于类型转换,告诉编译器按照WNDCLASS结构体来解析esi指向的数据块,assume的英文有假设、假定的意思。。。。。
BAYNPU 2009-03-20
  • 打赏
  • 举报
回复
向楼上的请教下 ptr 的用法 byte ptr xxx 应该是这样,可是这里的用法有些不同!可以给解释下吗?

例:mov al ptr byte w_var;w_var是一个字变量,BYTE PTR使其作为一个字节变量.
assume esi:ptr WNDCLASS; assume是伪汇编指令,告诉编译器一些信息,本行不生成任何代码 .
x858078 2009-03-19
  • 打赏
  • 举报
回复
向楼上的请教下 ptr 的用法 byte ptr xxx 应该是这样,可是这里的用法有些不同!可以给解释下吗?
zhaovqd 2009-03-19
  • 打赏
  • 举报
回复
声明了才能使用结构,指定类型了 类型为WNDCLASS 指针

21,500

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧