汇编语言,计算机专业学习者不能不学的语言

liupuer
2007-07-22 10:27:21  来自: liupuer

汇编语言是我们理解整个计算机系统的最佳起点和最有效途径

汇编语言是机器指令的助记表示,描述了机器最终要执行的指令序列,是人与机器最直接的沟通语言。
作为一门低级语言,它的重要性常被人忽视。学习汇编语言能够充分获得底层编程的体验,深刻理解机器运行程序的机理,这使我们在接触复杂变化的计算机知识时变得清晰和顺畅。
一定要知道,硬件与软件构成了完整的计算机体系。软件由各种语言编写依托硬件得以执行,如果缺少底层知识就学习高层的课程,当遇到与底层相关的内容时,必将难懂与生涩。汇编语言与机器指令相应,并能直接与硬件交流。学习汇编语言不但能感知硬件内部的工作机理,而且可以清晰地观察到芯片之间的协作流程,从而建立底层的知识体系。
汇编作为一门语言具有编程语言的一般特性,而高级语言大都编译为汇编指令,最终转化为机器指令得以执行。这就使得学习汇编语言既有助于透彻的理解高级语言的核心原理,又能明晰程序内部的执行过程,更重要的是能够获得直接从底层分析问题解决问题的能力,为学习高层的知识奠定基石。
可以说汇编语言是联系硬件与软件的纽带,学习它既可以理解软件,又能够感知硬件,所以学习汇编语言无疑是学习和理解计算机体系最佳的切入点。

   
智力的自行车

2007-07-22 10:59:01 智力的自行车 (R'UR'U'yx2R'UR'U'R2xz'R'U'RUR)

我这科挂了。。。放假要好好看看。。。回来补考



.__Louisa⊙11

2007-07-26 20:51:17 .__Louisa⊙11 (请不要对我小组邀请。)

我差点挂~~60 啊 ~~多一分真的是浪费



辛亚平

2007-08-04 20:52:32 辛亚平

确实重要,但是会的人确实少。



TMD

2007-08-08 19:05:09 TMD

汇编不是了解一下就可以了么。。。说得这么重要。。现在编译器优化已经做的挺好的了



liupuer

2007-08-11 15:45:42 liupuer

学习汇编语言的过程就是深刻了解计算机系统的过程



蘑菇™蘑菇™它不开花,憋死

2007-08-15 05:43:37 蘑菇™蘑菇™它不开花,憋死 (不想在处男的状态下死去)

x86和MIPS的都用过,写起来还蛮有意思的...但是保护模式下的汇编好难,以前学的时候没怎么弄明白



智力的自行车

2007-09-07 22:45:35 智力的自行车 (R'UR'U'yx2R'UR'U'R2xz'R'U'RUR)

还是大挂了。。。



liupuer

2007-09-14 08:28:37 liupuer

汇编网学习论坛上面的网友都很热心,关于《汇编语言》有专门的章节板块,希望对你有所帮助。



mau

2007-10-13 14:37:06 mau

最喜欢的语言之一,让人有一切尽在掌握的感觉:)



KJ

2007-10-31 21:59:26 KJ (4、8、15、16、23、42)

正在学

希望阿弥陀佛给我过了



王逸游

2007-11-01 20:22:49 王逸游

呵呵。直接操控硬件。很爽。



Jockey

2007-11-03 15:02:57 Jockey

可以想象你们有五、六种arch在身边时还会全部用asm来编程么?



背对世界-->☆光河

2007-11-14 01:35:29 背对世界-->☆光河 (心起伏、风飘动、暗夜良宵)


2007-10-13 14:37:06 mau (济南)  最喜欢的语言之一,让人有一切尽在掌握的感觉:)
----
  
所想要的就是这种感觉



张小陌

2007-11-14 17:41:37 张小陌 (我半途而废的电视剧还挺多的)

看来要学了啊



朽木也可雕也(深圳)

2007-12-21 23:04:20 朽木也可雕也(深圳)

是应该要学啦



此页无法显示™

2007-12-22 00:43:40 此页无法显示™

第二专业是计算机 学汇编学的不精 总觉得用的少 很快就忘了
改如何深入学习汇编呢?



背对世界-->☆光河

2007-12-22 00:52:17 背对世界-->☆光河 (心起伏、风飘动、暗夜良宵)

主要看想研究什么,想深入机器心灵,沟通硬件,必须不可缺



NullPointer

2007-12-22 01:14:53 NullPointer (三只气球迎皓月,一筐杨梅下杭州)

----------------------------------------------------------
#17 2007-12-22 00:52:17 背对世界
  主要看想研究什么,想深入机器心灵,沟通硬件,必须不可缺
----------------------------------------------------------

这话说的。。。瞧着还在满心憧憬的阶段。机器哪有心灵啊,协议就协议,实在一点才对“沟通硬件”有好处。



背对世界-->☆光河

2007-12-22 01:25:04 背对世界-->☆光河 (心起伏、风飘动、暗夜良宵)

2007-12-22 01:14:53 NullPointer (北京)  ----------------------------------------------------------
  #17 2007-12-22 00:52:17 背对世界
    主要看想研究什么,想深入机器心灵,沟通硬件,必须不可缺
  ----------------------------------------------------------
  
  这话说的。。。瞧着还在满心憧憬的阶段。机器哪有心灵啊,协议就协议,实在一点才对“沟通硬件”有好处。
--------------------------------
是的,我们往往就在现有中迷失了憧憬



hacker47

2008-01-10 19:43:32 hacker47 (Coding for fun & 饭)

说喜欢汇编的,大多是假高手。
觉得如此很酷,能够吸引大家的目光。
要知道很多计算机科学家也是从内心讨厌底层的语言,只有在不得不使用时才使用。
对于汇编语言,个人认为正确的态度是必须掌握,但不必钟爱。
作为一个专业的程序员,懂汇编语言没有什么好炫耀的,别看了两本汇编的书就到处嚷嚷“汇编语言好,汇编语言厉害”。



ozzzzzz

2008-01-11 02:45:28 ozzzzzz

汇编语言是机器语言的助记符号,但是它绝对不能跟机器语言画等号,两者的区别很大。基本上汇编语言的学习,仅仅是为了学习和理解,而不是为了应用。到真正需要使用汇编级别的语言编程的时候,往往需要直接操作机器代码。
喜欢汇编的程序员基本不会存在,因为这个语言既不够高效(运行效率和开发效率都不是很高),也不够优雅。而一个人如果他说自己是汇编程序员,只要看看他的年龄——35岁以下的基本是吹牛或者仅仅在狭窄领域工作的人。
对于这种语言,其实两掌握都不需要,仅仅理解机器码的运行原理就足够了。当然如果能看懂一段相对简单的代码的意思,可以在某些场合有用处。



背对世界-->☆光河

2008-01-11 04:32:03 背对世界-->☆光河 (心起伏、风飘动、暗夜良宵)

根本目的不是要学习它,却是为了从底层认识机器的运作。



Jockey

2008-02-04 13:57:06 Jockey

“量子力学语言,计算机专业学习者不能不学的语言”



何以有爱

2008-02-07 13:08:48 何以有爱

觉得还是蛮简单的,所有的语言都差不多的东西,汇编要原始些,不过也就是那么点东西,比C容易



Jockey

2008-02-16 19:09:16 Jockey

To 川亮: 汇编东西少么?不同的硬件架构,不同的OS,不同的汇编器...排列组合一下。不要说思想,思维模式之类的,汇编恼人的根本就不是这类抽象的东西。



hacker47

2008-03-07 11:30:03 hacker47 (Coding for fun & 饭)

对于汇编语言,作为一个专业程序员,正确的态度应该是:

必须懂,但是不要喜欢。

这种东西你若是喜欢了就会走入邪路的。
就像武侠小说里的走火入魔什么的。

记住,抽象,是计算机科学中最重要的工具。
而计算机科学中,最重要的是“计算”,而不是“机”,
听人说喜欢汇编语言,就像听人说有人喜欢爬着走一样,
不错,您也能爬到地方,可是有车,有船,有飞机,
您何必呢?
如果您坚持这样我只能说您大脑哪个部分出问题了。



iCat

2008-03-07 13:29:36 iCat

想学,因为现在不懂,很多东西看不懂,很头大。



♧池

2008-03-07 13:55:14 ♧池 (鱼沐水♧炎热呛的人喘过气来)

学时觉得不难,之后应用起来是,觉得学的皮毛根本没用···



Hubeir

2008-03-16 13:23:54 Hubeir

“汇编语言......因为这个语言既不够高效(运行效率和开发效率都不是很高)”。汇编语言的开发效率很低,但是运行效率很高。相反的极端是VB,开发效率很高,但是运行效率很低。如果一种编程语言运行效率和开发效率都不是很高,它就不应该存在。



2008-04-11 21:29:40 mykiva

我学的是机械的,这门课也是要学的...我个人也爱好编程.
引用别人的一段话:"关于计算机技术的学习我想是这样的:学校开设的任何一门科学都有其滞后性,不要总认为自己掌握的某门技术就已经是天下无敌手了,虽然现在Java,VB,C,C++用的都很多,怎能保证没有被淘汰的一天,我想.NET平台的诞生和X#语言的初见端倪完全可以说明问题。换言之,在我们掌握一门新技术的同时就又有更新的技术产生,身为当代的大学生应当有紧跟科学发展的素质。举个例子,就像有些同学总说,我做网页设计就喜欢直接写html,不愿意用什么Frontpage,Dreamweaver。能用语言写网页固然很好,但有高效的手段你为什么不使呢?仅仅是为了显示自己的水平高,unique? 我看真正水平高的是能够以最快的速度接受新事物的人。高级程序设计语言的发展日新月异,今后的程序设计就像人们在说话一样,我想大家从xml中应是有所体会了。难道我们真就写个什么都要用汇编,以显示自己的水平高,真是这样倒不如直接用机器语言写算了。反过来说,想要以最快的速度接受并利用新技术关键还是在于你对计算机科学地把握程度。"



fireb@ll

2008-04-18 21:20:43 fireb@ll

hacker47 正解。。

我的汇编这门77分 勉强。。。。



落落

2008-04-20 08:16:31 落落

学的时候就头大,现在ms只记得寄存器和ADD,唉,愧对这个专业了



wzhgzj

2008-04-24 00:44:48 wzhgzj (字曰:仲阳)

楼上的那个叽里咕噜!说哪么多,到底是学了就忘还是怎么搞。



plume ™

2008-04-27 12:50:30 plume ™ (转点)

学的8086,考得我头都大了



2008-05-15 14:16:20 Foobar07

呵呵,上个学期一味做WEB开发,微机给我忽略。结果初考、补考< 40
那个讲师又在这个学期就跳槽,苦了兄弟我。。



粉肠

2008-05-15 14:54:21 粉肠 (变成辛苦的IT民工~~~~)

汇编98分。。。但是现在差不多快忘光



OMG!

2008-05-15 19:02:36 OMG! (null)

我下个学期开这科,挺害怕的,之前的计算机组成原理课程涉及了一点汇编,完全一头雾水...



张小陌

2008-05-16 21:55:19 张小陌 (我半途而废的电视剧还挺多的)

哈哈
学完了



StoneLike

2008-05-18 16:59:39 StoneLike

确实很重要



Carl Xu

2008-05-22 22:10:25 Carl Xu

多少先学点 后面你会发现它对你的思想是有益的



孟穹斋主

2008-05-22 22:14:57 孟穹斋主 (今与苍穹分秋色,试看明朝凌碧霄)

准备学,
玩电脑这东西肯定要学,就算不学c,vb啥的也不能不学这个



堂

2008-05-22 22:54:27

2008-02-16 19:09:16 Jockey (上海)

  To 川亮: 汇编东西少么?不同的硬件架构,不同的OS,不同的汇编器...排列组合一下。不要说思想,思维模式之类的,汇编恼人的根本就不是这类抽象的东西。

我还觉得很简单,我是先学的C,后来学的汇编,你要是了解了计算机的结构,单单是语言并没有什么大问题,不管什么硬件,重要的是那个硬件的结构,地址的排列,而不是汇编语言,一百个硬件有一百个编排方式,但是用的关键词却不过是那么多东西而已。。。。



Tsooung

2008-05-28 17:35:48 Tsooung (我的之上,唯有天空。。)

不懂,闭上自己的嘴。。。。



突然发现

2008-05-28 18:29:58 突然发现 (誓死减肥`不成仁,便成猪)

偶想想,偶碰计算机五年了,啥汇编东东不知道耶,,我连CPU都可以把它反着插。。。



Jockey

2008-05-29 10:38:20 Jockey

请各位asm爱好者看一下pleac.sourceforge.net,请帮助这个项目把nasm部分完成,目前进度是0.29%。谢谢!



rain

2008-06-02 19:04:15 rain

研究了几年的编译器,可以说,如果想要深入了解计算机的运行原理,汇编语言是必备的。也不是说非要写C#的人要学汇编,只是如果大家有用C++或C等,或者从事嵌入式的,或许应该好好看看了。记得当初看《Inside C++面向对象模式》(好像是这个书名...),里面有好多关于虚拟函数的实现机制、跳转表的实现等,虽然多与编译相关,但当时就是不了解一个类转化为C然后到汇编,最终那个malloc函数是如何实现的。苦恼了好久...因为有看在标准gcc编译出来的汇编,调用的是gcc的malloc库,郁闷n久。最后苦读操作系统原理以及实现,然后...发现自己的汇编太弱,学不下去...只好拿回汇编好好的看了。
如果你在写一个嵌入式的应用,由loader到boot到os到applications,不懂汇编是不可想象的...



rain

2008-06-02 19:11:39 rain

  To ozzzz:
  
  喜欢汇编的程序员基本不会存在,因为这个语言既不够高效(运行效率和开发效率都不是很高),也不够优雅。
  
  Re:
  我同意汇编开发效率不高,但不敢同意汇编运行效率不高的说法。如果你仔细看看一遍编译器编译出来的汇编代码,会发现有很多多余的和可优化的地方,有时候会比你直接用汇编写低1个数量级。不过,对于一般的函数,还是用高级语言写的好。因为很多常用的库,其实是优化过的用汇编写的,比如strncpy 等,自己写的汇编不一定比它快。



jame

2008-06-14 00:02:47 jame

嗯!要好好学习一下了



oldwood

2008-06-17 16:32:02 oldwood (啊~好虚啊~)

个人专业课基本上一塌糊涂,不过从感觉上来说~~

汇编与其说是一门语言,不如说是一种过程的描述。汇编语言之下的是微指令和微程序,到了这个阶段你就可以清楚的看到计算机内部数据传输和处理的过程了,微指令中每一段通过总线连接到不同的元部件,根据元部件的工作特性和时钟信号的触发,来完成具体的功能应用。相比起微程序和数字电路的部分,汇编语言伟大的地方应该是在于它首先将僵硬难以理解机器思维用方便人类思考的方式描述出来,助记是一方面,更重要的是能够被人们更容易的理解,使得抽象的,解决事务的思维得以实现,这就体现了它无法取代功用。

汇编+数电基本上就是微机原理的内容了,还有组元和单片机都有牵扯~

对于纯粹想在编程,和软件应用方面发展的同学可以不用重视这个部分,在具体应用方面让专精电信和电子的专人来负责这个部分,不过对于CS专业抱有热情,希望能够完整的学习和清晰的理解的这部分同学,汇编就绝对是不能随便放弃的一门基础学科了。推荐大家在之前大二比较空闲的阶段先掌握好。 相对于后边微元、组元课程,你会发现汇编实在简单到不行~~


大学的专业教育是有一定的滞后性,不过每个专业的设置都有一定的方向性,只是没有人来告诉大家罢了~

比如说CS,我从一开始跟大家一样的不理解,到现在有点喜欢和欣赏这样的专业设置,是因为这个专业要求大家对计算机的组成和发展有一个清楚的认识,包括他的原理,各个领域的应用方式,还有思想核心,根据每个人的悟性和特质,只要认真学习,都会有不同的收获,希望学弟学妹们,能够乘着时间还充裕,多补充些专业知识,早一点对自己的专业学习有清楚的认识,就早一天开始收获~~



Anderson

2008-09-18 11:39:38 Anderson


我不喜欢汇编,反而我更是喜欢脚本类的语言!



compactset

2008-09-19 13:45:54 compactset

我也喜欢脚本,除了shell,ruby外,perl, python,tcl都喜欢。



Anderson

2008-09-19 15:44:54 Anderson


哈哈,俺也喜欢Perl, Pytohn!



进行时

2008-09-19 19:52:18 进行时

是很重要,但要看你主修什么,你要做程序开发设计方面的话,汇编就不是那么重要了,因为高级语言占主导地位;要是搞硬件开发,那汇编就要很精通了。。。。。



水滴石穿

2008-10-09 16:23:52 水滴石穿

我想请问一下:有关计算机二级考试要买些什么书呢?



啦啦古

2008-10-24 00:23:53 啦啦古 (murder````````````````````````)

选修滴~还没去过~



2612495

2008-10-24 01:22:11 2612495 (HSS)

  汇编确实很酷,如果多少了解点内核代码的话,你就会发现了
  
  能控制指令计数器和栈指针会让系统级代码灵活非常多



`(satoru Logic)

2008-10-24 07:48:04 `(satoru Logic) (run, satoru, run~)

我考了99;P



Zorro

2008-10-24 09:09:36 Zorro

学过以后没什么机会用,已经还给老师了. :)



大猫

2008-10-24 11:40:38 大猫 (大叔身正太心,自虐向,御姐控)

对于底层开发来说,汇编或许就是一切
对于C/C++开发来说,汇编的最大作用或许是debug和optimize
对于高级语言开发来说,不知道汇编或许也无所谓



雷Sir

2008-10-24 20:19:25 雷Sir (回归朝九晚五的生活)

现在已经不是纯手工的时代,怎么控制编译器生成优秀的汇编才是关键~~



小白·菜

2008-11-16 02:31:03 小白·菜

关键是看发展方向,要是以后写驱动、开发硬件或者研究linux内核,那么汇编很重要。但要是搞软件甚至前端开发的话,几乎不需要了解。

另@mykiva
这位同学我只能说你一定是在校生,而你说的那位高人一定是某教授。说话强调太不食人间烟火。搞过开发的都不会说出.Net取代c、c++、java、vb、这样的话。事实上它谁也取代不了。



小白·菜

2008-11-16 02:32:33 小白·菜

电子管,计算机专业学习者不能不学的元件





这个小组的成员也喜欢去   · · · · · · 

程序员
程序员 (4111)
开源
开源 (2712)
程序员书屋
程序员书屋 (1242)
Linux
Linux (3525)
Java编程
Java编程 (2841)
C++及编程
C++及编程 (3093)