win32下汇编之初识汇编

来源:互联网 发布:淘宝平台如何让新产品 编辑:程序博客网 时间:2024/05/20 17:40

Hello, World !
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  .386   ;指定使用的指令集
  .model flat,stdcall  ;定义程序的工作模式
  option casemap:none ;程序中的变量和子程序名是否对大小写敏感
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include  windows.inc  ;Include 文件定义
include  user32.inc
includelib  user32.lib
include  kernel32.inc
includelib  kernel32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  .data   ;数据段 用来存放一些字符串、变量定义
szCaption db 'A MessageBox !',0  
szText  db 'Hello, World !',0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  .code   ;代码段
start:     ;开始标号
  invoke MessageBox,NULL,offset szText,offset szCaption,MB_OK
  invoke ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  end start  ;指定程序的结束和程序入口
不同类型的段 用来存放不同类型的数据
例如全部段
.386
.model flat,stdcall
option casemap:none
<一些include语句>
.stack [堆栈段的大小]
.data
<一些初始化过的变量定义>
.data?
<一些没有初始化过的变量定义>
.const
<一些常量定义>
.code
<代码>
<开始标号>
 <其他语句>
end 开始标号
win32中只有代码和数据以及堆栈段之分  另外程序中不必定义堆栈段,系统会自动分配堆栈空间

 .data .data? .const
 第一类为可读写已定义的变量
 第二类为可读写未定义的变量
 第三类数据为一些常量 只可读 不可写入 .const为常量段

原创粉丝点击