流传一句话: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编译链接就可以了!!!!