.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