我是如何从汇编语言脑残粉转变的

    我最早接触汇编语言可以追溯到裕兴学习机那一阵。当时裕兴在推出了浮点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名啊)等老一辈的高手帮助我很多,现在我渐渐问问题少了,回答问题慢慢多了,还当上了汇编版的“斑猪大人”,上一届汇编版版主有4个大牛呢,这一届就本猫一只!其实水平也就那么半瓶子,再加上现在我渐渐不怎么实际写汇编代码了,所以有自己模棱两可拿不定主意的问题,也就不敢随便乱答啊!回答的大多都是理论上的东东,只是遇到实在刁钻古怪问题,心痒难耐的动手测试后才会回答呀!(所以各位童鞋多出古怪刁蛮的问题吧!)

    现在的汇编论坛还可以看到不少标榜着汇编万能、“我不知道其他语言、反正汇编就是牛X”、”汇编最底层,能操纵机器,所以功能最强“之类的观点。这种观点这是我不认同的,也是会给初学者带来误导的。我不反对某些地方汇编的确很强大,而且PK无对手!比如机器相关,效率至上的应用、比如逆向破解,shellcode的working等等,但这不能说汇编很”强“,更不能说Ta是万能的!汇编是有若干优点,但其不可忽视的缺点还少吗?我还是强调一般意义上所有语言没有好坏之分(当然某些明显设计有问题的语言除外),只在乎你的需求不同。霍元甲曾教导我们:世间武功本无强弱之分,只是练武的人有强弱之分“,李小龙同志也曾向粉丝说过:”我不怕会1万种踢法的人,我怕的是1种踢法练过1万次的人!“。这种熟能生巧,干一行钻一行的道理,也不用本猫给大家普及了吧?更何况现如今”乱世出语言“的情况下,一个项目使用多种语言更是家常便饭,所以还是要努力晓(xiao二声)习啊!还有UNIX下著名的胶水语言概念啊!这是另一个话题了哦!有兴趣的童鞋可以参考《UNIX编程艺术》

    现在的我已从曾经绿油油的骚年变为了胡子拉碴的欧巴,已经不是什么某某语言的”死忠“鸟,无论是汇编,C,ruby,shell,vb,c#,asp,tk/tcl等等各种语言我都喜欢,都用过,现在也还用,将来会一直用!还有很多新的语言扑面而来,我也会欣然笑纳的哦!话又说回来,编程不仅仅是语言的事,软件工程、社会工程、系统结构、心理学、美感直觉、算法等等那多了去了,这是我们几辈子都学不完的啊!跟何况我只是一只熊猫,不是神马程序员哦!:)

时间: 2024-10-29 06:25:01

我是如何从汇编语言脑残粉转变的的相关文章

win32-用汇编语言写一个.ini文件处理程序

问题描述 用汇编语言写一个.ini文件处理程序 用汇编语言编写一个命令行程序,能处理.ini文件,功能类似inifile.exe(http://home.mnet-online.de/horst.muc/wbat32.htm#inifile). 必须自行实现对.ini文件的处理,不得调用具有处理.ini文件能力的其它程序的现成功能. inifile.exe是用来处理ini文件的.用 inifile.exe /? 可看到帮助内容. 这是我们的一个作业,但是我是新手所以不知道该从何入手.所以想问问有

虽然我是穷人,但我还有才华

这个世界上有两件事最难,一件是独立思考,一件是不要好为人师.前面的似乎还容易些,后者就很困难,虽然圣人很早就告诫我们,好为人师是不对的,家长的苦口婆心也在耳边回绕,但有人还是难以改掉. 公正,很多时候是看似伟大的人对无辜者的偏见 米黑的存在,让小米的用户充当了无辜者的角色 米黑的带头大哥,某大号作者,其所在的企业叫做360,在互联网业界的别名为"流氓".其抓住一点机会便挖苦小米用户,费劲心思的把小米用户推向脑残粉的同义词,其出发点真心值得怀疑. 小米雷军和360周鸿祎的皂友故事,稍微一

我是个学生,求大神指教!!!

问题描述 我是个学生,求大神指教!!! 题目是:有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数,写一个函数实现以上功能#includeint input(int *p){ int i=0; do { scanf(""%d""p+i); i++; }while(*(p+i-1)!=-1);return i-1; }int* mv(int nint mint p){ int ib[100]*c=NULL; for(i=0;i<m;i++) {

X86汇编语言总结

下载地址:点击打开下载链接 AX.BX.CX.DX一般用来存放数据 [BX].[BP].[SI].[DI]中一般存放着某个段寄存器的偏移地址,默认情况下,[BX]中存放着数据段(DS)的偏移地址,[BP]中存放着栈段(SS)的偏移地址(功能和SP类似),其中BX只能和SI.DI组合,BP只能和SI.DI组合,SI.DI间是不能组合的 Loop指令一般搭配着CX寄存器使用,每循环一次,CX寄存器中的值减少1 执行PUSH指令时,SP-2,执行POP时,SP+2 个人的一点总结:压栈时,先减后压:出

汇编语言loop使用,连续多个数相加

问题描述 汇编语言loop使用,连续多个数相加 汇编语言实验,使用loop实现连续多个数相加,求代码(字数怎么不够呢) 解决方案 用CX寄存器存循环的次数,用其他通用寄存器存要相加的数,循环做加法就行 解决方案二: 很简单的,你必须按照步骤来,不然很容易出错的, 解决方案三: Intel80x86系列汇编语言中的LOOP指令,是循环指令,循环次数由计数寄存器CX指定.是否执行循环体的判断指令在循环体之后,所以,至少执行1次循环体,即至少循环1次.执行LOOP指令时,CPU自动将CX的值减1,若C

我是新手,JAVA 怎么理解 中的+5+

问题描述 我是新手,JAVA 怎么理解 中的+5+ 我是新手,JAVA中 System.out.printl("the absoulute of"+5+" is "+5) 怎么理解 中的+5+ 解决方案 System.out.println("the absoulute of"+5+" is "+5) 因为+5+的前面是字符串,所以会自动将5转换成字符串"5"连接到"the absoulute o

我是一个混蛋程序员

我最近收到了这封来自Artsicle公司创始人的邮件,我大一时整个夏天都在这家创业公司里实习. 来自:Scott Carleton 主题:刚刚重构了你一年前写的 find_art.js 脚本 从某些方面上看,我心里想:你是个相当混蛋的程序员. 但从另一方面上讲,真扯蛋,这个脚本在过去的20个月里完美的运行,根本不需要我去碰它.:) 本文的作者: Dan Shipper Scott说的一点没错:我是个混蛋程序员.我不认真的注释我的代码.有时,我会违反DRY编程原则.我不喜欢使用奇妙的三重操作符表达

pb 串行通讯-急求,大家好,我是PB软件的新手,在使用MSCOMM控件编写的时候遇到问题

问题描述 急求,大家好,我是PB软件的新手,在使用MSCOMM控件编写的时候遇到问题 在使用MSCOMM控件编写oncomm程序的时候,显示错误:coo31:syntax error string Is_input,Out_input choose case Ole_MSC.object.commevent case 2 //CommEvent属性为CommEvReceive Ole_MSC.object.InputLen=10000 //读入缓冲区中的数据长度 Is_input=Ole_MSC

java swing 视频-我是一名在校研一的学生,现在急需要java swing的视频,谁能推荐一下啊!谢谢啦

问题描述 我是一名在校研一的学生,现在急需要java swing的视频,谁能推荐一下啊!谢谢啦 我是一名在校研一的学生,现在急需要java swing的视频,谁能推荐一下啊!谢谢啦 解决方案 http://v.baidu.com/v?s=8&word=java%20swing%20%CA%D3%C6%B5&fr=ala11 解决方案二: 参考:http://www.java1234.com/a/yuanchuang/swing/ 解决方案三: http://school.itzcn.com