您的位置:首页 > 编程语言

学第一个汇编程序hello world的说明笔记

2011-06-11 13:35 357 查看
.486                    ; 定义工作模式常见的有.386,.486,.586等只是CPU指令集的不同如
.model flat, stdcall            ; 定义内存模式
;flat为win32程序使用的模式,代码和数据段使用同一个4GB段,还有其他模式用不到就不学了
;stdcall为子程序调用模式因为windows api调用使用的是stdcall格式,所以win32汇编没得选择
option casemap :none            ;指定这个打开大小写敏感设置

;--------------------------------------

include windows.inc
include masm32.inc
include user32.inc            ;MessageBox在这个头文件里
include kernel32.inc            ;ExitProcess在这个头文件里
;----------------------------------------函数代码在dll中,库文件只保留函数的定位信息和参数数目
includelib masm32.lib
includelib user32.lib
includelib kernel32.lib
;--------------------------------------以上是包含的头文件和库

;.data数据段存放的都是已初始化的变量,并分配实际存储大小
;未初始化放在.data?段内.data?段内的的变量只保留大小信息,不实际分配
.data
szCaption db "A MessageBox !",0    ;定义消息框标题
szText db "Hello,World !",0        ;定义消息框显示内容

;.code段为写程序指令的区域
.code
start:        ;start标号
invoke MessageBox,NULL,offset szText,offset szCaption,MB_OK
;MFC定义MessageBox(HWND hWnd,LPCTSTR lpText,LPCTSTR lpCaption,UINT uType)
;hWnd:窗口句柄,lpText消息内容,lpCaption消息标题,uType消息类型,注意汇编程序只有一种类型就是dword
;32位汇编里,地址是平坦的,地址空间为4.3G,offset取的是线性地址,是保护模式下的虚拟地址
;带参数的伪指令必须用invoke不带参数的可以用cell
;MessageBox具体使用可参考msdn
invoke ExitProcess,NULL                    ;退出进程

end start    ;从start标号开始运行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: