`
lovecontry
  • 浏览: 1036501 次
文章分类
社区版块
存档分类
最新评论

世界的规则――给小牛同学的汇编语言推荐书

 
阅读更多
世界的规则――给小牛同学的汇编语言推荐书


今天中午一醒,看到小牛同学的短信,希望我帮他推荐汇编语言的书,还指明是
X86体系的。


其实,想找X86以外的,我也只听说过AT&T体系,就是Linux用的这套,别的完全
不清楚。


想着是哪几本对我最有影响,哪几本听说最好,入了神。如烟往事,全都浮现上
来。回忆一下汇编语言吧,也顺便怀念一下与汇编一起出现的朋友。


一 学汇编有什么用


恐怕不少同学会有这样的疑问。这是C#,是J2EE的时代,是乱七八糟很多新名词
的时代。很多同学都问过这样的问题:为什么我们要学习那些落后的过时的东西。


因为汇编语言这种基础的技能,一直也没有过时。而且,它有很多别的用途。


就像朋友不能现用现交,想跟人借笔记的时候给人买冰棍,知识也是一样。无论
从事计算机的哪个领域,只要不是打字或者单纯WORD排版,汇编--不仅如此--的
知识总是可以帮助你。


当年我打游戏的时候喜欢改。英雄无敌II,三国群英传 是改得比较透彻的。英
雄无敌里,经常带着9999条黑龙,据介绍是不喜欢群居的动物,有强大的物理攻
击力,似乎还对魔法免疫,我常带着这么一大群黑龙,跑遍地图,遇神杀神,所
向无敌。三国群英传,大哥玩得比较多,通关无数遍。我主要负责替他把所有的
宝物都调出来。某马某剑某书,之类的。


刘青华同学说,你这么玩就没意思了啊。大致意思是,游戏玩的就是挑战么。确
实,这些游戏改了以后,在我看来也淡而无味。但是我所享受的,不是游戏本身
的乐起,而正在于改。


改游戏,锻炼了我对数据段的理解。数据段,正是汇编语言这门课的一个知识
点,涉及到数据以何种格式在内存中存储。大多数游戏都是int型,只有帝国时
代是个例外,是float型。


后来破解游戏。就是那种运行的时候需要光盘或者注册码的。注册码和补丁那个
时候还不太好找,所以需要自己动手。soft-ice就是那个时候学会的,bpx,bpe
这样的指令,到现在还没有忘。前一段时间写驱动的时候用到,完全想不起来
了,正感慨,结果一走神的时候,发现指令已经上屏了,手指比大脑记得更牢固。


破解游戏需要用到windows api和汇编的函数调用和出口,也涉及到各寄存器和
寻址方式。这全面的锻炼了汇编语言。


我推荐的书中,罗云彬先生 就是以破解入手,后来汇编颇有心得。


学汇编当然不是为了改游戏和破解软件。它的作用在于,我们可以深入理解C或者
其他高级语言所生成的代码--底层的体系是什么样的,可以调用哪些机制,为什
么会有这样的限制,等等。


为什么C语言会是今天的这个样子,或者说,为什么像C语言这样的语言为什么可
以流行很多年,答案需要你学习了汇编语言才能理解。


我们很容易向一个人描述什么是 红色。光谱为630-740nm的光就是红光,红光的
颜色就是红色。但是,除非你有视觉,能够亲眼看到红色,否则你永远也不知道
看到红色那是什么感觉。汇编语言作为基础对于计算机工程师的影响也是这样。
你尽可以听我描述它是如何重要,如何构成了计算机硬件和软件的桥梁,如何限
定了软件的功能,也提供给软件基础。但是这都白扯,亲身的体会,写汇编的经
验,是上述文字不能替代的。


如果想了解我说的这种感觉,只有成为我。好在,在这一方面成为我并不困难,
学习汇编语言就可以了。


IBM-PC汇编语言程序设计(第1版)
http://book.douban.com/subject/1012809/


上面这本是我主要学习的,可能是我们教材,不太记得了。现在有第二版了,还
有一本清华的,作者是王爽。 我都没看过,没法评价。刚刚提到的这本,写得
挺明白的,也简单。


汇编语言编程艺术
http://book.douban.com/subject/1231288/


这本很多牛人说好,我也没看过。


Intel微处理器
http://book.douban.com/subject/4872461/


这本挺厚,也挺好。看着有点硬,那正是汇编以下的基础。


再往后,就可以学习 接口 相关的内容了。


二 有时候,汇编确实没有用


当年两位师兄说,那些都是扯淡。他们指的就是汇编。一位是唐猛,他去了哈尔
滨的啥学校。毕业以后回来一次,跟我喝酒。彼时我还能喝点,被他灌得不行。
后来就渺无消息了。他当年对于我指出他的学校不重视他的答复是:我会汇编,
人家不需要汇编,那有啥用。


另一位师兄是付彤。他去了附中工作,现在干得也好。他刚去的时候,我问,你
计算机好,有用吧。他说:没用,他的师兄问他的,唯一与计算机水平相关的就
是 你打字快不。除了打字快,别的都没用。当然,后来付师兄还组织和参加各
种计算机相关的比赛,用到的应该不只是打字。


这种情况可能有一些同学也会遇到。汇编语言真的有用么?


是的,它不能帮你倒杯水,也不能帮你把转身而去的女孩拦住。如果说,有用指
这个的话,世界上只有暴力是有用的,你可以随时利用暴少马上得到一些东西。
除此以后,所有的能力的作用都是间接的。


如果你的岗位完全不需要你的汇编能力的话,我得说,你找错了岗位。这个世界
上岗位很多,真的存在一些岗位,是不必逢人非得违心地笑的。在那些岗位中,
我们更多的――虽然不是完全――只受到像汇编语言这种自然的和非人为的法则约
束,而不必受到人的评判。


当然,那样的岗位,前提是你得具备获得那种岗位的能力。


我想举一个不太恰当的例子,不太恰当的原因是有人可能会误解到另一方面。二
战的时候屠杀犹太人。传说,一位历史学家快要被送去死了,他说了一句话
救了他的命,他说,"我还是个木匠。"


我并非指人文科学没有用处,而是指极端的情况告诉我们,有比人为的评判更深
刻的评判标准。我想,大家还记得小学老师对我们的要求,那并非上帝的裁判,
现在你身边一些人的指示,也是如此。


三 底层的规则


汇编语言突出的特点,还是它是底层的一个代表。它可以让我们更好的理解系统
如何运行。


这也可以用来埋汰别人。毕竟,谁对这个世界的规则了解和运用越纯熟,谁就越
具有成为这个世界主人的资格。在这个世界,跟谁是你爸爸叔叔三姨姥爷关系不
大。


这种规则,现实世界也一样有。


人人网上一位潘同学说:"闪光灯一开,这家伙,满眼的LOGO"。这是一张照片是
标注,照片的内容估计是一条大河,或者海岸,满眼都是商标广告。


我想说的是,这些LOGO都是霓虹灯的,是发光,而不是靠吸收光而被人看到的或
者被相机拍到的。所以,第一层,开闪光灯,不会让这些LOGO更亮。如果LOGO离
得近的话,不开闪光灯的效果更好。


这也是为什么拍星星拍月亮拍晚上的灯的时候,不应该开闪光灯的原因。


第二层,因为你的闪光灯估计非常之烂,所以根本照不了那么远。能照到2米开
外的闪光灯,就已经是那种大个的,你基本不会在旅游的时候携带的。


这也是为什么在演唱会的时候拍照不要开闪光灯的原因。除非你也在舞台上,能
把观众都挡住那么近,否则闪光灯除了炫瞎歌手的那啥眼,实在不会让他的脸更
亮从而能让你的小光圈完成曝光。


我们为什么能得出这些结论?因为我们对世界规则的了解。对这些规则我们熟练
到这样的程度,无论在什么情况下,我们都不会犯潘同学这样的错误。如果她读
了这一段,估计也记住了。


这样,我们因为能够熟练使用世界的这部分规则,所以成为了有用而可靠的人。


话说,二战时为什么历史学家要整死,不仅因为他们不能车钳铆电焊,更是因为
他们的工作太有用了――对于敌人有用。越是对敌人有用,越是要整死。不过,这
时我们是否要学习某些知识,就不能以有用这样的价值来衡量了。题外话。


四 训练,就是学习


与其他工程类课程差不多,而与人文类和某些理科课程不一样。汇编语言只有在
实践中才能真正理解。


所以,一定要练习。做书上的习题是远远不够的。我并不是建议完成书上全部习
题,而是指无论你是否完成书上的习题,都一定要自己设计一些实验,来检验你
学到的知识,你的那些猜想,同时,也借此提高动手的能力。不能随手挥出一拳
都会符合规范的拳手,跟不能挥拳也没有什么差别,更不用说只会用嘴打拳的。


一个典范的例子,李记者吹捧典同学的时候提到的。典同学当年学汇编的时候,
自己写了机器码的程序,用ultraedit之类的二进制编辑工具,自己对着指令表
一个字节一个字节写的。


我当时说,这其实电子学单片机课程中必然会做的实验,手工把助记符转为机器
码,还要算指令周期。典同学的可贵正在于,他这么做,是没有老师指导的。


只有那些在没有优秀教师指导的情况下,仍能复制甚至创造牛人的技术路线的,
才最终具有成为牛人的可能。而训练方法,正是技术路线中最重要的。

分享到:
评论

相关推荐

    汇编语言chm版(王爽)

    内容简介 《汇编语言(第2版)》是各种CPU提供的机器指令的助记符的集合,人们可以用汇编语言直接控制硬件系统进行工作。...《汇编语言(第2版)》出版4年连续印刷了8次,成为本专业学生和广大学习者的必读书。

    汇编语言书籍--王爽著

    汇编语言学习的推荐书籍,清华大学王爽老师编著,第二版本。本人正在学习,确实是一本很不错的汇编入门书籍

    Windows环境下32位汇编语言chm(强烈推荐)

    Windows环境下32位汇编语言是一种全新的编程语言。它使用与C++语言相同的API接口,不仅可以用来开发出大型的软件,而且是了解操作系统运行细节的最佳方式。本书从编写应用程序的角度,从“Hello World!”这个简单的...

    16/32位微机原理、汇编语言及接口技术-习题答案

    本书的第1版出版以来,得到了广大师生的好评,本书在上一版的基本上进行了修订,增加了一些新的技术内容,是读者学习微机原理、汇编语言和接口技术的极佳参考书。即将出版的《微机原理与接口技术课程设计》可与本书...

    汇编语言(王爽)

    《汇编语言(第3版)》是我国计算机科学教育领域的-部重要的经典著作。  《汇编语言(第3版)》可用作大学计算机专业本科生的汇编教材及希望深入学习计算机科学的读者的自学教材。本书自出版以来,受到业内专家和...

    Intel汇编语言程序设计 第4版

    Intel汇编语言程序设计 第4版.pdfwindows下学汇编,强力推荐

    汇编语言全接触(精)

    老师推荐的用于汇编语言学习的书籍,里面分的很详细,对与学习汇编语言会有很大的帮助,包括很多著名的汇编教程。

    Windows环境下32位汇编语言程序设计(第2版)下载

     汇编语言编程是作者的一大爱好,作者自1990年开始即使用汇编语言编写程序,是Windows操作系统流行后国内最早研究Win32汇编编程的程序员之一,在1998年创建了专门探讨汇编编程的网站——htlp://asm.yeah.net,曾...

    王爽《汇编语言》电子版

    王爽《汇编语言》电子版 强烈推荐一本经典学习汇编的书籍,

    Windows环境下32位汇编语言程序设计_随书光盘

    × 《Windows环境下32位汇编语言程序设计》 × × 附书代码说明 × ××××××××××××××××××××××××××× 1. 编译器和链接器 本附书代码全部采用 MASM 格式编写,推荐使用 MASM32 软 件包作为...

    《汇编语言第二版》课后检测题和实验答案

    这是我花了好大的功夫才弄到的汇编语言的答案了,基本上没有错误,书上除了第四章以外每一个习题每一个实验都有详细的答案,如果你正在为汇编语言的实验而发愁,这绝对是一个很好的选择!推荐阅读后自己再写写,不要...

    IBM PC汇编语言程序设计(第五版)

    IBM PC汇编语言程序设计(第五版).pdf,书不错,需要学习汇编的建议下来看看~看雪论坛推荐书~

    《汇编语言》第二版 王爽 中文高清扫描版115M part1 (因为太大,压缩成了6部分,解压后一个文件)

    内容简介汇编语言是各种CPU提供的机器指令的助记符的集合,人们可以用汇编语言直接控制硬件系统进行工作。汇编语言是很多相关课程(如数据结构、操作系统、微机原理等)的重要基础。为了更好地引导、帮助读者学习汇编...

    IBM汇编语言--介绍汇编语言的经典书籍

    学习汇编语言你能更深刻的了解数据在计算机硬件上的运行情况...一本介绍汇编语言的书籍!强烈推荐

    汇编语言(第2版)

    本人资源全部免费,更多资源,请加关注==============================================《汇编语言(第2版)》可用作大学计算机专业本科生的汇编教材及希望深入学习计算机科学的读者的自学教材。《汇编语言(第2版)》自...

    汇编语言 王爽写的很好的汇编书籍

    汇编最好入门,王爽写的,让你很简单的就学会汇编,推荐大家看看。

    汇编语言asm_王爽

    学习汇编语言入门基础推荐书籍 》。。。。

    汇编语言教程(王爽)

    汇编语言教程 王爽 很好的汇编书籍 推荐小甲鱼视频教程~

Global site tag (gtag.js) - Google Analytics