寄存器有EAX,EBX,ECX,EDX,EDI,ESI,ESP,EBP。
EAX是WIN32 API 默认的返回值存放处。
ECX是LOOP指令自动减一的寄存器。
ESP是堆栈指针。
EBP经常用来在堆栈中寻址。

Masm32安装成功以后,路径如下:
    \masm32:IDE环境,内带有文本编辑程序和模板生成程序
    \masm32\include:所有的头文件
    \masm32\lib:所有的导入库文件
    \masm32\bin:可执行文件目录,包括Ml.exe,Link.exe,Rc.exe等。
    \masm32\help:帮助文档

用ml.exe 将.asm源码生成.obj文件。
rc.exe:编译资源文件,把资源脚本文件rc编译生成生成.res文件。
link.exe:链接程序,生成exe,dll文件等。
把资源文件和.obj文件链接起来生成可执行文件,也就是pe格式的文件,在链接的时候加上/coff命令。

WIN32中内存是平坦的,对于每个程序来说都可以使用2G范围的地址,但各个程序之间并不会干扰。

Windows为每个程序安排了堆栈段,它是从高地址向低地址延伸的,之所以采用这种方式,是因为这样可以使堆栈指针始终指向最近入栈的元素的起始地址,这样的话,为访问这个元素提供了非常便利的方式。

ptr 显式指定后面的数据的类型
offset 全局变量的地址
addr 局部变量的地址,也可以用在全局变量上
local 定义局部变量
proc 定义子程序
proto 声明子程序

Win32下,
系统功能模块放在Windows的动态链接库(DLL)中
作为Win32 API核心的3个DLL:
KERNEL32.DLL 系统服务功能。
GDI32.DLL 图形设备接口。
USER32.DLL 用户接口服务。

对于汇编语言来说,Win32 API函数返回值的类型只有dword一种类型,它永远放在eax中。
如果要返回的内容在一个eax中放不下,Win32 API采用如下方法来解决:
a) 一般是eax中返回一个指向返回数据的指针;
b) 在调用参数中提供一个缓冲区地址,数据直接返回到这个缓冲区中去。类似变参的概念;

.data
已初始化数据段,可读可写的已定义变量;
当程序装入完成时,这些值就已经在内存中;

.data?
未初始化数据段,可读可写的未定义变量,在可执行文件中不占空间;

.const
常量,可读不可写的变量;

Win32中,数据段是不可执行的,只有代码段有可执行的属性;

对于运行在特权级3的应用程序,.code段不可写。除非把可执行文件PE头部中的属性位改成可写;
对于运行在特权级0的程序,所有的段都有读写权限,包括代码段;

Win32 汇编要点总结相关推荐

  1. Win32汇编扩展教程

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

  2. 【win32汇编】0x01 开篇一些乱七八糟的话

    之前弄完了16位汇编,现在正式学习win32汇编,首先就是一些原理了,其实就是在16位的基础上增加了一些内容,其程序主要的结构记录如下 (1)指令集     .386     这是指定指令集 必须工作 ...

  3. Win32汇编_基础

    Win32汇编_基础 包含全部段的源程序结构: .386 .model flat, stdcall Option casemap:none ;<一些include语句> .stack [堆 ...

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

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

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

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

  6. Win32汇编获取和设置文本框的内容

    看一下Win32汇编如何获取和设置文本框的内容: 资源文件如下: #include <resource.h>#define ICO_MAIN 0x1000 //图标 #define DLG ...

  7. Win32汇编基本编程框架

    Win32汇编编程框架如下: .386 .model flat,stdcall option casemap:none <一些include语句> .stack [堆栈段的大小] .dat ...

  8. Win32 汇编环境和入门程序图解

    一 安装 在安装的最后,执行VBS脚本,在桌面建立快捷方式:执行快捷方式,会调入Win32汇编的编辑器qeditor.exe,进入到开发环境 二 构建Hello World程序 ;.386是伪指令 告 ...

  9. Win32 汇编语句模板

    Win32 汇编语句模板 一 变量 ;句柄 hInstance dd 0 hWnd dd 0 hPen dd 0 hPend dd 0 oldPen dd 0;过程变量 hInst :DWORD hP ...

最新文章

  1. 感冒了,头晕晕沉沉的,什么时候能好啊!
  2. win32 GDI 画图 防止闪烁
  3. zoj 3204 Connect them kruskal
  4. 数据说话,88000条数据绘制北京市地图
  5. 微信小程序在当前页面设置其他页面的数据
  6. mysql增备脚本--xtrabackup实现
  7. 95-140-110-源码-transform-算子keyBy
  8. 股票和基金,哪个适合打工族?
  9. “我升职的原因是:比同事更早学会这个知识”
  10. python的简单实用小工具(未完待续......)
  11. Java集合框架的概念以及常用接口的介绍
  12. xgboost4j jar包下载
  13. Joda-Time 用法
  14. 中兴上网卡 linux,4G网卡中兴MF831移植到linux
  15. 【目标检测】YOLOv5跑通VOC2007数据集
  16. 在计算机中 ascii码是几位二进制编码,二进制ASCII码
  17. excel下拉框引用另外一个sheet
  18. UE4反射机制的通俗理解【代码生成】
  19. DBCO-PEG4-alcohol CAS:1416711-60-8 二苯基环辛炔-四聚乙二醇-乙醇
  20. Java 拆分PDF文档

热门文章

  1. 如何在网页中嵌入自己想要的字体(实例下载)
  2. Python 爬虫篇 - 通过urllib.request伪装成浏览器绕过反爬虫爬取网页所有连接实例演示,urllib2库的安装
  3. Python 技术篇-设置windows开机自动启用Jupyter服务,BAT批处理脚本启用jupyter服务设置,设置jupyter默认启动位置的方法
  4. ADB连接小米手机模拟上下左右滑动实例演示
  5. GRPC java实现demo
  6. 第八周实践项目9 算法库——广义表
  7. 图像中添加二项式分布噪声
  8. 分段线性插值Python实现(同时估计误差)
  9. 第三章:3.0 本章内容介绍
  10. sql和泛型方法返回泛型_基于泛型编程的序列化实现方法