Win32 汇编要点总结

 

寄存器有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的程序,所有的段都有读写权限,包括代码段;
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值