MASM64里怎么调用带多个参数的自定义的子程序?

请看这里

http://www.x64asm.com/viewthread.php?tid=28

CreateWindowExA函数就是超过4个参数的.四个参数后的其他参数依次压入堆栈,其中看到64位下长度为8指针.如:


        ;开始创建窗口
        sub        rsp,84H

        xor        rcx,rcx
        lea        rdx,szWndClassName
        lea        r8,szWndTitleName
        mov        r9,WS_OVERLAPPEDWINDOW
        ;窗口长宽高低全部为默认,四个参数后的其他参数依次压入堆栈
        mov        rax,CW_USEDEFAULT  ;这句给RAX设定值
        mov        [rsp+32],rax                      ;RAX值压栈,第五个参数
        mov        [rsp+40],rax
        mov        [rsp+48],rax
        mov        [rsp+56],rax
        ;窗口菜单等为0
        xor        rax,rax
        mov        [rsp+64],rax
        mov        [rsp+72],rax
        ;窗口实例句柄
        mov        rax,hInstance
        mov        [rsp+80],rax
        xor        rax,rax
        mov        [rsp+88],rax
        ;创建窗口
        call        CreateWindowExA

rcx第一个参数,rdx第二个参数,r8第三个参数 ,r9第四个参数,[rsp+32]第四个参数,后面依次累加8
发布了172 篇原创文章 · 获赞 132 · 访问量 189万+

猜你喜欢

转载自blog.csdn.net/cosmoslife/article/details/8771839
今日推荐