wawa 发表于 2013-3-16 20:56:52

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

                        assume        eax:ptr COPYDATASTRUCT
                        invoke        wsprintf,addr szBuffer,addr szReceive,\
                                .cbData,.lpData,.lpData
                        invoke        MessageBox,hWnd,offset szBuffer,addr szCaptionMain,MB_OK
                        assume        eax:nothing
assume是假设某数据段 段地址 为冒号左边的寄存器里的数值,ptr左边应该有个数据类型比如byte、dword等,怎么什么都没有,到最后一句什么意思
.cbData 中括号我以前理解为取寄存器的内容作为偏移地址,现在的理解是取寄存器的内容作为段地址,理解的有点乱,也很模糊,以前看的王爽的汇编可能就没有理解透彻,希望大牛帮我详细的解释一下,先说声谢谢

565123 发表于 2013-3-16 20:56:53

有一个 COPYDATASTRUCT 的结构,假设EAX为这个结构的起始地址,用EAX来索引这个结构的各个成员,而 assume eax:nothing 表示把假设去掉。
类似C语言的结构体


wawa 发表于 2013-3-17 11:26:42

565123 发表于 2013-3-16 22:00 static/image/common/back.gif
有一个 COPYDATASTRUCT 的结构,假设EAX为这个结构的起始地址,用EAX来索引这个结构的各个成员,而 assume...

先谢谢,不过还有些疑问 ptr起什么作用 eax是结构的起始地址 那直接用eax.cbData调用,为什么要用[]中括号,可不可以这样表示呢 eax:

安阳王志宇 发表于 2013-3-18 01:35:33

记得在 8086吗   同等于 .si其实都 大同 小异
页: [1]
查看完整版本: 32位汇编一段代码不了解,希望各位大牛帮忙解释一下