摘要:浮点指令 对下面的指令先做一些说明: st(i):代表浮点寄存器,所说的出栈、入栈操作都是对st(i)的影响 src,dst,dest,op等都是指指令的操作数,src表示源操作数,dst/dest表示目的操作数 mem8,mem16,mem32,mem64,mem80等表示是内存操作数,后面的数值
阅读全文
随笔分类 - win32汇编
摘要:0:000> uf . monitor!main [c:\users\myalias\documents\visual studio 2005\projects\mytest\mytest\main.c @ 32]: 32 0042f780 55 push ebp 32 0042f781 8bec mov ebp,esp 32 0042f783 81eccc000000 sub esp,0CCh 32 0042f789 53 push ebx 3...
阅读全文
摘要:函数作用:函数wsprintf()将一系列的字符和数值输入到缓冲区。函数原型:int wsprintf( LPTSTR lpOut, LPCTSTR lpFmt,.....);参数:lpOut:指向一个缓冲区来接收格式化输出,缓冲区最大为1024个字符。lpFmt:指向一个'\0'为结束的字符串,其中包含格式控制字符。除了普通的ASCII字符,每个格式控制字符对应后边每个参数的值。...:一个或多个可选参数。参数的数量和类型取决于在lpFmt参数的对相应的格式控制字符。返回值:如果函数成功,返回值是存储在输出缓冲区的字符数,不包括终止空字符: '\0'。如果函数
阅读全文
摘要:函数作用:该函数创建一个Open公共对话框,使用户指定驱动器、目录和文件名、或使用户打开文件。函数原型:BOOL GetOpenFileName(LPOPENFILENAME Ipofn);参数:Ipofn:指向包含初始化对话框的信息的一个OPENFILENAME结构。当OpenfileName函数返回时,此结构包含有关用户文件选择的信息。返回值:如果用户指定了一个文件名,点击OK按钮,返回值为非零。由 OPENFILENAME 结构的 IPstrFile 成员指向的缓冲区含有全路径和用户指定的文件名。如果用户取消或关闭 Open 对话框或错误出现,返回值为零。若想获得更多的错误信息,请调用
阅读全文
摘要:offset 和 addr 之间有如下区别:addr不可以处理向前引用,offset则能。所谓向前引用是指:标号的定义是在invoke 语句之后,譬如在如下的例子:invoke MessageBox,NULL, addr MsgBoxText,addr MsgBoxCaption,MB_OK......MsgBoxCaption db "Iczelion Tutorial No.2",0MsgBoxText db "Win32 Assembly is Great!",0如果您是用 addr 而不是 offset 的话,那 MASM 就会报错。addr可以
阅读全文
摘要:比如你用local在栈上定义了一个局部变量LocalVar,你知道实际的指令是什么么?一般都差不多像下面的样子: push ebp mov esp, ebp sub esp, 4 现在栈上就有了4各字节的空间,这就是你的局部变量。 接下来,你执行mov LocalVar, 4,那么实际的指令又是什么?是这样: mov dword ptr [ebp-4], 4 于是,这个局部变量的“地址”就是ebp-4——显然,它不是一个固定的地址。现在需要将它的“地址”作为参数传给某个函数,你这样写: invoke/call SomeFunc, addr Local...
阅读全文
摘要:一、关于寄存器寄存器有EAX,EBX,ECX,EDX,EDI,ESI,ESP,EBP等,似乎IP也是寄存器,但只有在CALL/RET在中会默认使用它,其它情况很少使用到,暂时可以不用理会。EAX是WIN32 API 默认的返回值存放处。ECX是LOOP指令自动减一的寄存器。ESP是堆栈指针。EBP经常用来在堆栈中寻址。ESI好像常常用在指针寻址中,EDI不大清楚。二、关于内存寻址WIN32中内存是平坦的,对于每个程序来说都可以使用2G范围的地址,但各个程序之间并不会干扰,这是因为各个程序所使用到的物理内存被Windows自行安排,不会互相覆盖,而且一个程序不会随意地访问到另一个程序的地址空间。
阅读全文
摘要:1. Linear Space & Physical Space 在硬件工程师和普通用户看来,内存就是插在或固化在主板上的内存条,它们有一定的容量——比如64 MB。但在应用程序员眼中,并不过度关心插在主板上的内存容量,而是他们可以使用的内存空间——他们可以开发一个需要占用1 GB内存的程序,并让其在OS平台上运行,哪怕这台运行主机上只有128 MB的物理内存条。而对于OS开发者而言,则是介于二者之间,他们既需要知道物理内存的细节,也需要提供一套机制,为应用程序员提供另一个内存空间,这个内存空间的大小可以和实际的物理内存大小之间没有任何关系。 我们将主板上的物理内存条所提供的内存空间定
阅读全文