win32汇编:helloASM

.386;32位架构
.model flat, stdcall;

include masm32.inc
include kernel32.inc
includelib masm32.lib
includelib kernel32.lib

.data;数据段
    szText db "Hello ASM!", 0

.code;代码段
TestPrint proc near;过程声明
        push ebp;保存栈基址寄存器
        mov ebp,esp;新栈底
        sub esp,100h;开辟新的256字节栈空间
        push ebx;保存基址寄存器
        push esi;保存源变址
	push edi;保存目的变址
	lea edi,[ebp-100h];把新的栈顶地址给EDI
	mov ecx,40h;设置拷贝次数
	mov eax,0CCCCCCCCh;拷贝的值
	rep stos dword ptr es:[edi];拷贝EAX里的内容到EDI所指向的地方
	
	mov eax,[ebp+8];取出第一个参数
	push eax;把EAX传入Stdout函数
	call StdOut;调用函数
	
	pop edi;恢复EDI
	pop esi;恢复ESI
	pop ebx;恢复EBP
	mov esp,ebp;恢复ESP
	pop ebp;恢复EBP
	ret ;函数返回

TestPrint endp
start:
	lea eax,szText;取字符串
	push eax;传参数
	call TestPrint;调用函数
	pop eax;恢复栈平衡
	
end start


你可能感兴趣的:(win32汇编:helloASM)