流传一句话:asm对程序员灵魂有帮助(某大牛说的)
asm是很美妙的语言,他会让你感受一种特殊的舒服感,希望你看了我的简短的程序之后会爱上他!
现在很多人学习asm,不管是masm,fasm,tasm,nasm...等等吧!精髓是不变的。
我建议还是不要被IDE的设计迷惑了。否则都是问题-----会masm写程序,却不懂asm。
一点不可笑..............
在此隆重感谢含笑大哥百忙之中抽时间为我解惑。我也是从masm走出来的..只是不想被局限。
下面的程序我不想多解释....懂得的人自然受启发,不懂的看了会很迷惑,不要紧,这就是我的目的,我就是要让你认识asm。
不要跟我说:你用invoke写那个多方便啊,你用call多直接啊!这些东西我也懂。
还是欢迎大牛们指导不足之处,我也在学习之中,希望能有所共鸣。谢过!!!
希望女王大哥可以看到我发的东西,想念他。废话不少了。。。。。。。。。露怯吧!!!
代码:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;编译批处理 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;set path = E:\asm\tool\tasm32\tasm32\tasm32make\bin ;;set include = E:\asm\tool\tasm32\tasm32\tasm32make\include ;;set lib = E:\asm\tool\tasm32\tasm32\tasm32make\lib ;;tasm32.exe /ml /m2 charme,,, ;;tlink32.exe /Tpe /aa charme,,,E:\asm\tool\tasm32\tasm32\tasm32make\lib\import32.lib; ;;del *.bak ;;del *.map ;;del *.xrf ;;del *.obj ;;pause ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;data:2009/9/2 ;;author:charme[N.B.C] ;;index:hi.baidu.com/charme000 ;;email:charme000@gmail.com ;;thanks hanxiao ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; .386P .model flat,stdcall include E:\asm\tool\tasm32\tasm32\tasm32make\include\WINDOWS.INC extrn GetModuleHandleA:PROC extrn MessageBoxA:PROC extrn _wsprintfA:PROC extrn ExitProcess:PROC .data hInst dd ? dwA dd 0100h dwB dd 0200h dwC dd ? szOut db 20h dup(0) .code start: mov eax, DWORD ptr [esp] mov dwExit, eax xor ebx,ebx push ebx push offset aa push offset GetModuleHandleA lea esp,[esp+4] jmp DWORD ptr [esp-4] aa: mov hInst,eax push dwC push dwB push dwA push dwProc2Entry push ebx push ebx push offset szMsg push ebx push dwProc1Entry lea esp,[esp+4] jmp DWORD ptr [esp-4] _sub3: add esp, 20 pop dwC push offset _ret push ebx push ebx push offset szMsg push ebx push dwProc1Entry lea esp,[esp+4] jmp DWORD ptr [esp-4] szFmt db 'dwC=%xh',0 _ret: push dwC push offset szFmt push offset szOut push offset bb push offset _wsprintfA lea esp,[esp+4] jmp DWORD ptr [esp-4] bb: push ebx push ebx push offset szOut push ebx push offset cc push offset MessageBoxA lea esp,[esp+4] jmp DWORD ptr [esp-4] cc: push ebx push offset ee push offset ExitProcess lea esp,[esp+4] jmp DWORD ptr [esp-4] ee: push offset dwExit lea esp,[esp+4] jmp DWORD ptr [esp-4] .data dwProc1Entry dd OFFSET _sub1 dwProc2Entry dd OFFSET _sub2 dwExit dd ? szMsg db "子程序",0 .code _sub1: push offset ff push offset MessageBoxA lea esp,[esp+4] jmp DWORD ptr [esp-4] ff: lea esp,[esp+4] jmp DWORD ptr [esp-4] _sub2: mov eax,[esp] add eax,[esp+4] mov [esp+8],eax push offset _sub3 lea esp,[esp+4] jmp DWORD ptr [esp-4] end start
附件我就不加了!!编译批处理自己修改下,用tasm32 tlink32编译链接就可以了!!!!