我最早接触汇编语言可以追溯到裕兴学习机那一阵。当时裕兴在推出了浮点BASIC和游戏BASIC之后还不过瘾,觉得还能更深一步挖掘机器的潜力,结果推出了6502汇编语言的磁碟。我当时第一时间买了,磁碟还附赠一本简单的编程手册(十几页吧,蛮薄的)。可说出来不怕各位童鞋笑话,我基本上是一句指令都没写出来的干活啊!:(
在我人生正式课堂晓(xiao一声)习的最后1年里,我曾从图书馆借阅了《IBM汇编语言程序设计》一书,如果说6502时不知汇编为何物,那么此时就是到了能看见汇编皮毛上浮的那层灰的境界啊。当时看了几天就看不下去了,因为以前学的gw basic、QB、turbo C之类的没涉及到硬件啊,再加上当时有没有真机上手,咋能入门呢?当时宿舍里自己攒了台486,装的是DOS,偶尔会用QB写两行代码,然后就知道了原来DOS下还是可以装nes,md等模拟器玩滴,然后就没有然后鸟...
随后的大部分时间里我都是用VB在写代码,当时也看了一些计算机系统结构和组成原理的书籍,比较有印象的其实是那本科普性质的计算机名著《编码的奥秘》。随着对编程、对系统领悟的加深,我对汇编的兴趣又回来鸟!于是重看了《IBM汇编语言》那本书,这回真的看懂了!还下了masm5.0和6.11编译器练了不少代码。于是一发不可收拾,16位汇编看完再看罗云彬32位的汇编语言程序设计,结合微软的《win32程序员手册》,当时貌似觉得自己如鱼得水,神马例子都拿汇编写;一个C几行代码就能完成的事,非用汇编写一大坨;现在可是连C都用的很少了,大多数第一反应是用ruby来写啊!不过那时反复也就在windows下折腾,没linux啥事儿。学完了win32汇编,我又看了《80x86保护模式(PM)编程》,然后疯狂在网上搜索关于汇编写NT驱动的代码,找人家写好的汇编驱动框架练习。现在回过头看,我真是呵呵了。那时还不明白敏捷,还不懂unix究竟是啥;也不知道啥是KISS,啥是DRY。所以当时犯了很多错误,走了不少弯路。当然期间还看了很多其他的书,我也时在那个时候逐渐领略到C语言之美,知道了啥叫C标准。我就纳闷了啊,几年前在老谭的C语言程序设计里咋就没有领悟到那?
我就是在大约这个时候成天泡在csdn论坛的VB以及汇编版里面,那时的csdn还没有钻石,最高只有5颗星星,而且某人也一直把持总专家榜NO.1位置很久了啊!那时只要一个版3颗星所有版都是3颗星级别,仿佛某一领域达到3颗星就是所有领域的砖家了。那时的我只是2个三角,当时孩子气的本猫还是蛮羡慕星星的呀!那时的csdn论坛还不能发图,而且只有一个论坛:资源,博客,外包,主页官网啥的统统不知在哪呢!所以我才能注册到4位的ID啊!开始是我老问问题,因为是菜鸟嘛,那时汇编版的(懒虫)易水,zara(为数不多的还活跃在第一线的劳模呀),win32api(你没看错,这个是ID名啊)等老一辈的高手帮助我很多,现在我渐渐问问题少了,回答问题慢慢多了,还当上了汇编版的“斑猪大人”。其实水平也就那么半瓶子,再加上现在我渐渐不怎么实际写汇编代码了,所以有自己模棱两可拿不定主意的问题,也就不敢随便乱答啊!回答的大多都是理论上的东东,只是遇到实在刁钻古怪问题,心痒难耐的动手测试后才会回答呀!(所以各位童鞋多出古怪刁蛮的问题吧!)
现在的汇编论坛还可以看到不少标榜着汇编万能、“我不知道其他语言、反正汇编就是牛X”、”汇编最底层,能操纵机器,所以功能最强“之类的观点。这种观点这是我不认同的,也是会给初学者带来误导的。我不反对某些地方汇编的确很强大,而且PK无对手!比如机器相关,效率至上的应用、比如逆向破解,shellcode的working等等,但这不能说汇编很”强“,更不能说Ta是万能的!汇编是有若干优点,但其不可忽视的缺点还少吗?我还是强调一般意义上所有语言没有好坏之分(当然某些明显设计有问题的语言除外),只在乎你的需求不同。霍元甲曾教导我们:世间武功本无强弱之分,只是练武的人有强弱之分“,李小龙同志也曾向粉丝说:”我不怕会1万种踢法的人,我怕的是1种踢法练过1万次的人!“。这种熟能生巧,干一行钻一行的道理,也不用本猫给大家普及了吧?更何况现如今”乱世出语言“的情况下,一个项目使用多种语言更是家常便饭,所以还是要努力晓(xiao一声)习啊!linux下的胶水语言啊!这是另一个话题了哦!
现在的我已从曾经绿油油的骚年变为了胡子拉碴的欧巴,已经不是什么某某语言的”死忠“鸟,无论是汇编,C,ruby,shell,vb,c#,asp等等各种语言我都喜欢,都用过,现在也还用,将来会一直用!还有很多新的语言扑面而来,我也会欣然笑纳的哦!话又说回来,编程不仅仅是语言的事,软件工程、社会工程、系统结构、心理学、美感直觉那多了去了,这是我们几辈子都学不完的啊!跟何况我只是一只熊猫,不是神马程序员哦!:)
原文地址:http://blog.csdn.net/mydo/article/details/38958325