码迷,mamicode.com
首页 > Windows程序 > 详细

win32汇编:helloASM

时间:2015-04-07 23:32:03      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:

.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

标签:

原文地址:http://blog.csdn.net/ultimater/article/details/44927111

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!