鱼C论坛

 找回密码
 立即注册
查看: 2155|回复: 3

32位汇编一段代码不了解,希望各位大牛帮忙解释一下

[复制链接]
发表于 2013-3-16 20:56:52 | 显示全部楼层 |阅读模式
4鱼币
                        assume        eax:ptr COPYDATASTRUCT
                        invoke        wsprintf,addr szBuffer,addr szReceive,\
                                [eax].cbData,[eax].lpData,[eax].lpData
                        invoke        MessageBox,hWnd,offset szBuffer,addr szCaptionMain,MB_OK
                        assume        eax:nothing
assume是假设某数据段 段地址 为冒号左边的寄存器里的数值,ptr左边应该有个数据类型比如byte、dword等,怎么什么都没有,到最后一句什么意思
[eax].cbData 中括号我以前理解为取寄存器的内容作为偏移地址,现在的理解是取寄存器的内容作为段地址,理解的有点乱,也很模糊,以前看的王爽的汇编可能就没有理解透彻,希望大牛帮我详细的解释一下,先说声谢谢

最佳答案

查看完整内容

有一个 COPYDATASTRUCT 的结构,假设EAX为这个结构的起始地址,用EAX来索引这个结构的各个成员,而 assume eax:nothing 表示把假设去掉。 类似C语言的结构体
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-16 20:56:53 | 显示全部楼层
有一个 COPYDATASTRUCT 的结构,假设EAX为这个结构的起始地址,用EAX来索引这个结构的各个成员,而 assume eax:nothing 表示把假设去掉。
类似C语言的结构体


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-3-17 11:26:42 | 显示全部楼层

先谢谢,不过还有些疑问 ptr起什么作用 eax是结构的起始地址 那直接用eax.cbData调用,为什么要用[]中括号,可不可以这样表示呢 eax:[cbData]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-3-18 01:35:33 | 显示全部楼层
记得在 8086吗   [bx+si]同等于 [bx].si  其实都 大同 小异
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 22:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表