汇编和32api我快烦死了!!我想杀人.....

GGJJyangjinhan 2009-07-30 08:51:35
那书上写的Win32API根本就不明白,从网上找32API的书不是C++的就是C的我想用汇编。
我就是想用汇编创建一个文件怎么就这么难。
msdn不会用什么都搜索不到。

下载的WIN32API也不好用。我快疯了......

谁敢告诉我Win32API怎么用



下面这个也没有例子看不明白
函数原型:LRESULT CALLBACK SOUNDSENTRYProc(DWORD dwMillisec,DWORD fdwEffect);

参数:

Millisec:指定可视化消息的持续时间,以毫秒为单位。该消息是在一个基于win32的应用程序(或运行在窗口的应用程序)发声时显示出来的。

tdwEffect:指定要显示的可视化消息的类型。当前值通常应为SSWF_CUSTOM。

返回值:如果可视化消息已经或将要正确显示,那么返回值为TRUE,如果消息异步,并当调用该函数时其状态无效,那么应该返回TRUE。如果出错使得消息无法显示,那么返回值为FALSE。若想获得更多错误信息,请调用GetLastError函数。
...全文
1571 115 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
115 条回复
切换为时间正序
请发表友善的回复…
发表回复
shaoxiaojing5193 2011-07-15
  • 打赏
  • 举报
回复
[Quote=引用 43 楼 ggjjyangjinhan 的回复:]
引用 40 楼 moliliang 的回复:
我来揭开谜团..
1.楼主没有学过C语言
2.如果楼主学过C语言,那么就是没有学过windows编程的
3.如果楼主学过windows编程,这些东西还不懂的话...找一个高点的楼层自行解决...0 0!

所以,建议楼主先把C语言学下,然后学习下windows API (SDK) 编程...

这些都不知道的话...还是别学了...基础……
[/Quote]
所以咯,LZ应该是先学8086,学完之后就学c,然后windows 程序设计,然后 32位汇编。。。这个顺序绝对是王道!
竞择 2011-07-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 moliliang 的回复:]
老老实实看书吧..孩子...这些东西以后就明白了.....

浮躁是人类的大敌啊...........
[/Quote]
浮躁是人类大敌啊..
谁学逆向工程 2011-07-13
  • 打赏
  • 举报
回复
罗云彬有本汇编语言的书,用的是WIN32API
fcly1981826ly 2011-07-11
  • 打赏
  • 举报
回复
潜力贴,留名,,,,,,,
jueying1 2011-07-10
  • 打赏
  • 举报
回复
ahahahahah哈哈………………
gehao92 2011-07-08
  • 打赏
  • 举报
回复
自食其力,自力更生。。。关于Api的大多都是C语言的。。。。自己去琢磨吧。。。
stallm 2011-07-07
  • 打赏
  • 举报
回复
LRESULT 代表返回值,实质为int;
CALLBACK和stdcall一样。很简单的。
pszfan 2011-07-07
  • 打赏
  • 举报
回复
gzgzlxg

牛人是也....学习
ctluCTLU 2010-09-26
  • 打赏
  • 举报
回复
可怜,我什么都看不懂.....
junkli 2010-09-03
  • 打赏
  • 举报
回复
学习了..
microsoftboss 2010-09-03
  • 打赏
  • 举报
回复
感觉楼主基本功不扎实。还要深入。
vcnewer 2010-09-03
  • 打赏
  • 举报
回复
一年前的?大哥
anrong669 2010-09-03
  • 打赏
  • 举报
回复
有一本讲32位汇编的书
desdouble 2009-09-23
  • 打赏
  • 举报
回复
占100楼,此帖有潜力!
kangken 2009-09-22
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 gzgzlxg 的回复:]
invoke只不过是一个宏,用来替代call,例如:

invoke ExitProcess, eax

  push eax
  call ExitPorcess
是完全相同的。
invoke ????, xx1 ...., xxn ;这个宏,通过编译链接之后,生成的代码就是:
  push xx1
....
  push xxn
  call ????
当然,将来学下去,会知道,API函数的调用方式还是有些不同的,大多数的API函数都是stdcall格式,不过还是有少数的是其他的格式,如fastcall或C格式的,尤其是使用c库时,基本都是C格式的。
至于什么是stdcall、fastcall、c的格式,还有一些其他的格式,找本书翻翻就明白了,其实无非是入栈的顺序或栈平衡的方式不同而已。
  push  xx1
......
  push  xxn
  call  ????

  push  xxn
......
  push  xx1
  call  ????

  push  xx1
......
  push  xxn
  call  ????
  add  esp, n  ; 对于C格式的调用,需要自己来平衡堆栈,入栈多少参数,后面esp堆栈指针就加多少。
                  ; 不过要注意参数的长度。
所有的东西都没有什么神秘的,无非就是来回捣腾那些个堆栈而已。
[/Quote]

应该是从xxn开始push吧。
dbgchen 2009-09-21
  • 打赏
  • 举报
回复
那学习汇编,硬件基础知识要到达一个什么样的平台才好?
zhengjiaxi83 2009-09-21
  • 打赏
  • 举报
回复
多上网查查资料,应该能查出来。哈哈
sll0807 2009-09-16
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 gzgzlxg 的回复:]
引用 23 楼 ggjjyangjinhan 的回复:
比如用INVOKE之后还可以用ADDR abc传递什么参数给abc吗,应该传递什么参数给abc
addr 是引用地址的含义,例如:
.code
  abc db 'abcdefghijklmnopqrstuvwxyz',0

.code
  invoke MyLikeEatABC, addr abc

就相当于

  mov  eax, offset abc  ; addr 的具体做法
  push eax
  call MyLikeEatABC

  lea  eax, abc
  push eax
  call MyLikeEatABC

[/Quote]

addr 只会是 lea eax, abc 不可能是 mov eax, offset abc
offset 不可用做局部变量

例:

.386
.Model Flat,StdCall
Option Casemap :None

Include Windows.inc
Include User32.inc
Include Kernel32.inc

IncludeLib User32.lib
IncludeLib Kernel32.lib

.Data
szClassName db "Class",0 ;全局变量

.Code
Start Proc
Local szBuff[128]:BYTE ;局部变量

mov esi,offset szClassName
invoke RtlZeroMemory,addr szBuff,128 ;局部变量
invoke MessageBox,0,addr szClassName,0,0 ;全局变量

ret
Start EndP

End Start
反汇编以后 是这样的

00401000 >/$ 55 push ebp
00401001 |. 8BEC mov ebp, esp
00401003 |. 83C4 80 add esp, -80
00401006 |. BE 00304000 mov esi, 00403000 ;mov esi,offset szClassName
0040100B |. 68 80000000 push 80
00401010 |. 8D45 80 lea eax, dword ptr [ebp-80] ;addr szBuff
00401013 |. 50 push eax
00401014 |. E8 19000000 call <jmp.&kernel32.RtlZeroMemory>
00401019 |. 6A 00 push 0
0040101B |. 6A 00 push 0
0040101D |. 68 00304000 push 00403000 ;addr szClassName
00401022 |. 6A 00 push 0
00401024 |. E8 03000000 call <jmp.&user32.MessageBoxA>
00401029 |. C9 leave
0040102A \. C3 retn




etracer 2009-09-14
  • 打赏
  • 举报
回复
学习-ing....
gzgzlxg 2009-09-14
  • 打赏
  • 举报
回复
还不给分,你没有见这些日子我已经不给你其他的问题回帖了。
世上没有免费的午餐,呵呵。吼逅。
加载更多回复(93)

21,497

社区成员

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

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