首页 > 代码库 > 谈Win32汇编

谈Win32汇编

最近接触到Win32汇编,才知道汇编必须是和平台相关的,如做应用则和操作系统和CPU类型相关,而做操作系统就只和的CPU类型有关。对于《微机原理》里面的汇编,那是DOS汇编,而Win32汇编是基于Windows的汇编。DOS和Windows是两个完全不同的操作系统了。

DOS汇编功能的实现依靠的是DOS系统提供的软中断,DOS程序是面向过程的单任务的;而Win32汇编功能的实现依靠的是WinAPI,基本的元素是与具体CPU类型有关的汇编指令(一般都是X86啦,因为微软就支持这个~~)。然后记住不多的常用X86汇编指令,结合Win32API就可以写程序了。当然,在什么编程环境下进行呢?一般都市MASM32 SDK,这个目前最新版本是Vison11(我于2014.9.3下载),当然这个和微软没多大关系了,是由牛人维护的~~http://www.masm32.com/ 

当然,在真正开始编程时,还要注意一下MASM编程格式,嗯,推荐一本好的书籍《琢石成器—Windows 环境下32位汇编语言程序设计》

(其实格式并不复杂,语言语法也不复杂,主体还是WinAPI~~不过此时的调用API就比较讲究了,不是我们在Visual C++里面那样调用就可以,还要考虑一些,例如返回值过大~~这个就要自己定义一个缓冲区去存放返回值了~~咦,是不是觉得控制程度很高啊~~

学习这个有什么用?直接用Visual C++IDE,然后用高级语言去写程序岂不是很省事?《琢石成器》的作者罗云彬的解释是,当我们在Windows下进行加密解密、逆向工程,还有病毒、木马等有害代码的分析和防止工作时,Win32汇编是唯一的选择。(咦,360是会要你的,求才欲渴啊~~)。嗯,某些游戏的开发估计也用得上(流程是最重要的用户体验嘛~~)  嗯,至于我,这个是在调代码时很有帮助的,无法正常运行的程序,只能去看他的汇编代码了,这个是终极调试~~

DOS时代的前辈捧着的是《DOS中断大全》,Windows时代就要备着《Microsoft Win32 Programmer‘s Reference》了,这个在我这里有得下载,在其他站点下载的很多是不能正常打开的~~咦,所以千辛万苦找到个能用的,也就共享出来了,不用你们去找了。咦~,都是这样的,操作系统为我们屏蔽了硬件差异,封装了很多功能,这个是好的,由此带来的就是我们要捧着它的厚厚的去以它为标准,好好和它磨合着过了~~

说到DOS,那个操作系统是不错的(咦,windows保留的那个黑乎乎的窗口叫做控制台(console),并不是MS-DOS操作系统噢,在这个控制台中有些DOS的指令是无法执行的~~)DOS的好在哪里?咦,小,40KB左右,呵呵,用在嵌入式~~不过X86架构的嵌入式芯片没有。好吧,某一天高兴了不知能不能用ARM指令来重写它,让它在STM32上跑,哈哈,有空,有心情时试试~~(注意,MS-DOS的汇编源码微软是公布了的,微软把它捐给了美国的计算机博物馆~~这个我也下载了,有兴趣的可以连续我,不过哪天我有空了,把它共享出来吧!~)还有一点就是,DOS没有系统代码的保护区,什么意思呢,就是你可以修改系统代码,或者是把自己的代码放进系统代码里运行,所有程序具有相同的权限,可以访问一切资源,这个就有了程序可以自己修改自身代码了~~(老美的科幻电影常有镜头不是传说哈~~),而Win32基于的80386及以上处理器分了优先级,Windows和Intel合作的吧,Windows运行于0级,即是最高级,可以访问一切资源,而用户程序只能是处于最低级,3级,处于这个级别的代码有很多限制了,嗯,最重要的是,它只能读写变量区,除此之外的都不能写。~~)

哈哈,就这样了~~关于Win32汇编的感想就写到这里吧,具体去学习,建议大家捧着《琢石成器—Windows 环境下32位汇编语言程序设计》区啃吧!(顺便说一下,老罗这个人(就是该书的作者啦),是全国首个破坏过电信系统并被捕的黑客哦,咦,技术高深总是耐不住寂寞吗~~八卦的新闻链接   http://news.xinhuanet.com/newscenter/2002-04/23/content_369622.htm)

谈Win32汇编