Win32汇编编程框架如下;

.386
.model flat,stdcall
option casemap:none
<一些include语句>
.stack [堆栈段的大小]
.data
<一些初始化过的变量定义>
.data?
<一些没有初始化过的变量定义>
.const
<一些常量定义>
.code
     <代码>
     <开始标号>
    <其它语句>
end 开始标号

开头几句解释如下;

指令集
    .386 语句是汇编语句的伪指令,类似指令有:.8086 、 .186  、.286  、.386/.386p  、 .486/.486p  和 .586/.586p 用于告诉编译器在本程序中使用的指令集。
    后面带p的伪指令则表示程序中可以使用特权指令,如:mov cr0,eax  这一类指令必须在特权极0上运行。 
    如果我们要写的程序是VxD等驱动程序,中间要用到特权指令,那么必须定义.386p ,在应用程序级别的Win32编程中,程序都是运行在优先级3上,不会用到特权指令,只需定义 .386就够了。
    如果程序要用到80486处理器 或 Pentium处理器的指令,则必须定义 .486 或 .586。
    如果使用了MMX指令,除了定义 .586之外,还要 .mmx伪指令。
    其它一些简单程序,.386就可以了。

.model 语句 模式定义
    .model 内存模式 [,语言模式] [,其它模式]   (用中括号括起来的是可选)
    内存模式的定义影响最后生成的可执行文件,执行文件的规模从小到大,可以很多类型。
    语言模式即子程序调用方式,它指出了调用子程序或Win32 API时参数传递的次序和堆栈平衡的方法。
  _ stdcall调用——是Pascal程序的缺省调用方式,参数采用从右到左的压栈方式(倒序压入),被调用函数 自身在返回前清空堆栈。Win32 API 都采用这种调用方式。
  _cdecl 调用 ——是C/C++的缺省调用方式,参数从右到左的压栈方式,调用者 清空堆栈。 所以产生的可执行文件大小会比调用_stdcall函数大。

option 语句
 option casemap:none 的意义是告诉编译器程序中变量名和子程序名是否对大小写敏感。 none 对大小写敏感。
   Win32 API的函数名称本质是区分大小写的,所以必须指定这个选项。

下面是最基本Win32汇编示例;

要先保存为.asm文件才能构建;.asm文件保存在masm32目录下,非bin目录下,masm32环境自己处理;

程序啥也不干,调用 ExitProcess 直接退出;

.386
.model flat,stdcall
option casemap:noneinclude s:\masm32\include\windows.inc
include s:\masm32\include\kernel32.inc
includelib s:\masm32\lib\kernel32.lib.data
.code
start:
invoke ExitProcess,0
end start

.model flat,stdcall

这句如果把逗号半角写成全角,将出现错误:

error A2119: language type must be specified

invoke ExitProcess,0
    这句如果把逗号半角写成全角,将出现错误:

error A2044: invalid character in file

option casemap:none

这句如果把冒号半角写成全角,将出现如下面多个错误:

windows.inc(156) : error A2004: symbol type conflict : bool

A2004错误见此:

https://blog.csdn.net/bcbobo21cn/article/details/108494279

Win32汇编基本编程框架相关推荐

  1. Win32汇编数组编程图解

    1 声明并初始化数组 .386 .model flat, stdcall option casemap :noneinclude S:\masm32\include\windows.inc inclu ...

  2. 新版WIN32汇编开发环境介绍及RadAsm简明教程

    写在前面的话: 在准备做教程的时候去查资料,关于WIN32下汇编方面的,本来想找些现成的拿到教程里用下,但发现貌似只有一篇,是2005年时jhkdiy写的,而且翻来翻去发现所有图片也都失效了.所以准备 ...

  3. Win32汇编学习——windows汇编语法(小甲鱼教程)

    Win32汇编学习--windows汇编语法(小甲鱼教程) 1)指令集 .386 语句是汇编语句的伪指令,类似指令有:.8086 . .186  ..286  ..386/.386p  . .486/ ...

  4. 网络与服务器编程框架库 acl_3.0.13 发布

    2019独角兽企业重金招聘Python工程师标准>>> acl 3.0.13 版本 (项目主页:https://sourceforge.net/projects/acl/,技术文章主 ...

  5. 选择“Win32汇编”的三大理由?

    选择Win32汇编的理由是什么呢? 在DOS时代,学习汇编就是学习系统底层编程的代名词,仅要成为一名入门级的汇编程序员,就需要学习从CPU结构.CPU工作方式.各种硬件的编程方法到DOS工作方式等范围 ...

  6. win32汇编实现拼接SQL语句

    字符串合并,在汇编语言,一般是用loop循环和cx寄存器,自己编程实现: 如果是win32汇编,可以使用movsb指令: 一般开发应用程序都会碰到拼接SQL语句,在C#这些语言用字符串连接的加号就可以 ...

  7. Win32汇编扩展教程

    Win32汇编扩展教程 第一课 Win32 扩展消息框示例 在罗哥云琳的Win32消息框示例基础上,做一个扩展例子. 首先弹出消息框,2个按钮,YESNO; 点击NO,程序结束:点击YES,弹出第二个 ...

  8. 网络与服务器编程框架库 acl_3.0.12 发布

    2019独角兽企业重金招聘Python工程师标准>>> acl 3.0.12 版本 (项目主页:https://sourceforge.net/projects/acl/,  技术文 ...

  9. C指针原理(23)-win32汇编及.NET调试

    2018-12-28 20:36:07 在WINDOWS系统能用到汇编的机会不多,基本都可以用C或C++代劳,更何况现在MICROSOFT的Visual Studio 系列工具非常强大,WINDOWS ...

最新文章

  1. 百万级访问量网站的技术准备工作[转帖]
  2. 基于linux操作系统Mysql的基本操作(一)
  3. 关于使用REST API
  4. Jackson 框架使用说明,轻易转换JSON【转】
  5. 如何将目录下几百个lib加入到vs项目属性下的链接器
  6. sum() over()函数使用
  7. fir.im分发平台 二维码合并
  8. 【被网上巨坑了】 win10+php5.6-ts-vc11-x64配置imagick的经历
  9. Java PC端微信、支付宝扫码支付(一)
  10. 广义线性模型的计算机应用技术学院,SPSS数据分析—广义线性模型
  11. 安卓手机解锁密码忘了如何解锁
  12. java-php-net-python-税务申报系统ssh计算机毕业设计程序
  13. Windows中软件的安装
  14. halcon变量,图像与C++的一些转换(未完待续)
  15. 苏亚星显示没有登录的服务器,VOD直播工具使用 直播站管理工具的使用 苏亚星VOD点播(直播)系统.doc...
  16. 自制PCB双面板绝佳方法
  17. CDH /HDP 何去何从?
  18. 输入半径,计算圆的面积
  19. c语言与python的语法区别_来自python的C语言(基本语法),从,Python,看,基础,篇
  20. 操作简单,易上手的三款在线ps处理工具

热门文章

  1. @Value获取值和@ConfigurationProperties获取值比较||配置文件注入值数据校验
  2. 赋值运算符||位运算符||三元运算符
  3. JDK、J2EE、J2SE、J2ME的区别
  4. Python 技术篇-httpClient库连接服务器发送请求解析响应实例演示,No module named ‘httplib‘问题解决方法
  5. fitype拟合多参数函数和遗传算法拟合多参数函数
  6. 解决MPLAB X IDE的文件注释出现乱码的问题
  7. 【生活】1024,快乐
  8. [YTU]_2877(结构体---职工信息结构体)
  9. flipdim--按指定维数翻转矩阵
  10. buildPyramid函数