学汇编语言入门体会

 以前常接触高级语言,时间久了有点腻,最近突然对汇编有了好感,在本论坛学了不少新东西,有一点体会,现在抖出来与道友交流。
  学好汇编语言真正的难点和要下功夫的地方,我感觉不仅仅在于学习和掌握指令系统,还在于以下几个方面:
   一、与硬件(包括所谓的底层)相关的知识。学汇编离不开与硬件打交道,学编程的人喜欢以较少的记忆材料和逻辑思维来演绎万变的联系,但硬件的知识主要靠记忆,因此对硬件性能的记忆与战胜遗忘是个难点(手册离不了哦)。
   二、操作系统的知识。不同的操作系统,其编程接口不同,如果用汇编语言去写Windows的程序,最后真正花费功夫的是在学习、掌握和运用好一大堆的Window API上(操作系统本身的难度就不说了)
   三、算法演绎。算法的学习本身就是高难度,再用低级语言去演绎,难上加难。
  四、如果说汇编语言自身的难度,我认为, 写出高质量的宏来是一个难点。现在的汇编语言可以写出IF、WHILE、REPEAT等分支和循环语句(其他还有invoke、callcom等宏),这完全是得益于宏的贡献。一个汇编程序员能否抽象和写出公用的宏来被业界广泛接受和使用,我认为这是大牛和牛的区别之一。
   如何学好汇编,我建议
   一、明确目标。确定用它来做什么,学到那一步。目标决定你下功夫的范围和投入的程度。
   二、选好教科书。许多人都推荐王爽著的《汇编语言》,我粗看了一下,入门是不错的选择,通欲易懂,但仅有此一本书肯定是不够的,建议再选一本程度深点的教科书为精读本,王爽的作为参考。另外不要希望一二本书就能包打天下。
   三、结合C/C++学。最好是学过它们再来学汇编。学习编程,到了一定阶段会借助已学的知识和经验来促学。因为汇编语言与C是近亲,有了C的基础对学习理解汇编语言有促进功效。
   四、选定一个合适的开发工具。因不同的汇编编译器有不同的语法和使用方法,编译器固定了,语法、使用方法也就固定了,这便于固化知识和集中精力解决主要矛盾。入门建议优先选择Masm32开发包(http://www.masm32.com/)。
   五、选定几个反编译工具。有了它们,你可以查看由c语言编译的可执行文件,它把机器指令反编译成助记符序列,这有助于你从C编译器产生的指令序列中吸取营养;同时,有了它,你也可以查看自己写的汇编源代码产生的真实指令序列。当然它还有调试功能。
  我目前使用较多的是debug.com(windows xp机上自带,win7没有,你可以复制一个),debug32.exe,还有ollyDBG。
   debug主要用来调试DOS下16位的程序(没想到DOS下的16位程序还有这么多人对它感兴趣)。
   debug32.exe 可以查看16位的DOS程序,也可以查看32位的应用程序和片段。我对它感兴趣的地方有两个,一是可以查看32位纯代码片段,就像debug查看16位的 xx.com文件一样,这个功能ollyDBG好像没有;二是它可以将查看结果复制进一个txt文件,好处不用说了。
   ollyDBG是功能齐全的窗口可视化的调试平台,可用来调试Win32的应用程序,入门学习现有的Win32程序产生的代码时,可以派上用场。
   六、源代码编辑器我常用notepad+,谈不上是优是劣,纯个人喜欢。真正用,我推荐选RadASM,因为它就是适合各种汇编器的开发平台(不过一开始配置有点烦)。另外,UltraEdit32建议你也装一个,它可以以16进制模式编辑文件,有时处理机器码代码片段可以把它派上用场。
   七、选配一个你的程序可以很好运行的虚拟环境。假如你编写的是DOS运行程序,但可用平台是Windows的,导致有的DOS程序在上面不能正常运行。怎么办呢,你可以在网下下载和安装配置一个像DOSBox、VMware、VirtualBox等虚拟机软件,解决这样的问题。
  八、最后是 多做练习,多看别人写的代码,从简单到复杂,从小牛到大牛。
  ......
  希望大牛和牛们漂过时也来侃侃......
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值