WIN32汇编学习笔记(一)
来源:互联网 发布:50知天命60耳顺 编辑:程序博客网 时间:2024/05/19 18:16
工具选择
目前发现RadASM比较好用,代码补全和高亮好评,可以修改配色。
helloworld与基本框架
.386.model flat, stdcalloption casemap:noneinclude windows.incinclude user32.incinclude kernel32.incincludelib user32.libincludelib kernel32.lib.data szCaption db 'Hi', 0 szMsg db 'Hello World!', 0.codestart: invoke MessageBox, NULL, addr szMsg, addr szCaption, MB_OK invoke ExitProcess, NULLend start
.386指定指令集,类似的还有.8086(dos汇编下的默认指令集),.186,.286,.386/.386p,.486/.486p,.586/.586p。带p的伪指令表示程序中可以使用特权指令。
如果要在程序中使用MMX指令进行图像处理,还需要加上.MMX伪指令,如:
.586
.mmx
.model指定内存模式,win32下只有flat一种,所有的数据和代码都位于4GB的一个段中。如果定义了.model flat,MASM会自动为段寄存器进行如下定义:
ASSUME cs:flat,ds:flat,ss:flat,es:flat,fs:error,gs:error
即默认不使用fs和gs寄存器,如果在程序中进行使用就会得到一个错误。要使用的话可以显示地指定fs:nothing或fs:flat,这样就可以把这个错误留给有需要的人。
option语句的选项不少,不过常用的只有casemap:none这一个选项,用于指定大小写敏感。因为windows API 是区分大小写的,不打开的话出问题的概率会比较大。
简化段伪指令的格式如下表:
值得注意的是,在.model flat模式中的段其实是对一整块儿内存的分段,因为32位的寄存器寻址能力以及超过了4GB,理论上来说是不需要段的,这种分段是为了编程时的方便,可以避免一些不必要的错误。
ctrl+F5构建并运行此程序。
done
0 0
- WIN32汇编学习笔记(一)
- Win32汇编学习笔记(一)
- Win32汇编学习笔记(一)
- WIN32汇编学习笔记(一) 汇编环境搭建
- win32汇编学习笔记
- win32汇编学习笔记
- Win32汇编学习笔记(罗云彬)(一)
- win32汇编基础学习一
- win32汇编学习笔记3
- 汇编学习笔记(一)
- 汇编学习笔记一
- 汇编学习笔记《一》
- Win32汇编学习笔记(二)
- Win32汇编学习笔记(四)
- Win32汇编学习笔记(三)
- Win32汇编学习笔记(二)
- Win32汇编学习笔记之基础篇
- 汇编学习笔记(一)
- 说明
- BZOJ - 3233 找硬币(贪心+动态规划)
- MinGW 安装后的问题(Cannot run program "make":....)
- 从两边向中间依次靠拢打印一个字符串
- 个人反省
- WIN32汇编学习笔记(一)
- 2016.12.1流水
- Java Integer Cache
- XML常用知识点
- Unity Shader-Phong光照模型与Specular
- HTML5之全局属性
- 同步 异步 阻塞 非阻塞
- jquery获取所有选中的checkbox
- arduino的一些初级函数