2025年08月05日
帐号 密码


不再疑惑,汇编之后

文章作者:伶妖

学习计算机知识的目的是为了使用计算机解决问题。为了更好的使用计算机我们必须要学会能与计算机直接沟通和交流的汇编语言。在我们认真学完《汇编语言》之后,就可以和计算机进行基本的沟通和交流了,也就是有了基础,但只有这些基础还不够,我们还需要更多的计算机方面知识。作为一个渴望知识和并不满足于现状的你,一定会想下一步该学习什么?任何简单的答复都让你质疑。但是你已学完了《汇编语言》,你应该对机器有了了解,也具备了独立判断下一步该学什么的能力了。下面是汇编相关的几个方面的介绍和分析,你看你应该从那方面入手进行下一步的学习。


1、从汇编语言自身的角度看
   《汇编语言》讲解了8086汇编机制,学完它后就具备了汇编编程的基础,并了解了8086CPU的工作机制。想进一步学习可以从以下几个方面考虑:

    1)学习所有8086汇编指令和汇编结构化编程。
    所有汇编指令我们可以从指令表查看,如果单独列出来学习也可以。但这样更像我们遇到一些生词和生字去查字典一样,我们一般不会抱着一本字典去学习。结构化编程方面可以去学习一下,如果以后需要大量的汇编编程需要深入学习。否则了解一下,打下理解高级语言的基础就可以了。现在绝大多数的应用是用高级语言编写。

    2)386及以上的保护模式。
    保护模式的编程更多的是编写操作系统人需要的。如果需要编写操作系统,我想你要深入研究一下。如果不是,可以先了解一下原理就够了。现在操作系统核心编写绝大部分用的C,只有少量要求效率很高和C没法实现的功能才用汇编实现。在windows下你无法使用受保护的指令,只能在实模式下学习。这些编程是普通应用程序用不着的,这些保护措施都是给操作系统用的。
    
    3)win32汇编编程
    主要是用汇编的方式调用windows API, 我想现在主流是用C语言方式调用windows API,用汇编纯粹是花架子,效率提高不多,程序结构和可读性比C差很多。这种逻辑上的编程,为什么不用更符合人逻辑的高级语言(C语言),而要用符合机器逻辑的汇编语言呢。我们主要是高效的解决问题,而不是炫耀。
    
    4)其它CPU编程(如Arm、8051等嵌入式)
    如果从事嵌入式开发,可以学习一下其它类型cpu的汇编,嵌入式主流的开发开始用C,当然也可能嵌入汇编。

2、从硬件设备的控制及它们直接连接看

   硬件控制和使用方面,主要通过端口编程控制硬件设备,借助8086汇编基础可以看一下微机原理及接口技术方面的书。可以了解硬件之间是怎样连接和使用的,掌握更多的硬件特性。一般微机的组成: CPU、内部存储器、输入输出接口、外部设备。它们之间靠总线连接。学习这方面知识可以知道CPU是如何通过总线和设备协调工作和如何通过接口控制设备。对于硬件设备驱动的底层编程大有好处。也可以学习现有的总线和接口技术如:PCI总线、USB接口等


3、从机器语言的实现和运行原理看
   如果你学完《汇编语言》后,已经知道机器是在运行机器指令。但这些机器指令是如何设   计和怎样用硬件实现的?指令的设计、寻址方式、中断控制、设备端口设计等可以去学习系统结构。它详细说明的如何设计指令的编码,寻址方式的种类及实现,为什么要使用中断机制和DMA方式。硬件和软件如何分层等问题。该方面比较综合,需要大量软件和硬件知识,建议学完组成原理和操作系统后再学系统结构。
   
   想知道CPU如何把机器翻译成信号,控制内部电路完成工作。机器指令是用硬连线实现、还是由微指令实现。 CPU的运算器和控制器怎样用硬件实现等这方面的知识可以看组成原理。

   这里和硬件更接近,相比来说嵌入式编程就不算什么硬件的工作了^_^。


4、从常用的高级语言看

汇编语言更接近的是机器的运行方式,不太符合人们通常的逻辑习惯。所以人们对机器编程模型进行了抽象,发明了高级语言。高级语言发明极大的推动了计算机编程,大量的应用都是用高级语言实现。这也导致了人们对汇编重要性认识的不足。高级语言最终都要被翻译成汇编语言,这样才能在机器上运行。汇编语言基础掌握后,可以开始高级语言的学习。高级种类繁多,应该学习哪种? 并以怎样的角度来学习能取得最好的效果呢?当然应该从一种简洁并实用的语言开始,它既具备高级语言的特性,又更接近汇编语言(就是接近些机器)。C语言是目前所有高级语言里最适合的。如果只学习C本身语法和使用,是不太合适的,关键我们应该从学习C的过程中看到高级语言的共同特征和C语言在机器上实际运行的机制。这样我们能更快的学会其它高级语言和更好的使用其它高级语言。甚至可以创造自己的编程语言。


5、从操作系统看
   汇编可以通过中断方式调用操作系统功能,可以用汇编进行操作系统编程。 汇编可以理解操作系统,因为操作系统的一些功能只能用汇编实现,另一部分用用C语言实现。学习操作系统需要你掌握汇编语言和 C语言,当然还要学习一下数据结构的知识,只有汇编的基础不建议你马上开始学习操作系统。当然用纯汇编实现操作系统而跳过C,没问题,但现在没人愿意这么做,你要是不服,可以尝试一下!

6、解决现实问题
   汇编语言也可以解决一些实际的通用问题,这需要用汇编去实现基本数据结构和算法,在一些对效率要求高的地方使用。如果要求不太高,用C语言实现就足够了,可移植性还好,也容易改为其它高级语言。现在大部分应用程序是用高级语言写的,汇编一般只是配合一下。


汇编是基础的基础,C语言、数据结构、组成原理、微机原理和接口是基础,操作系统和系统结构就比较系统和综合了。

组成原理和系统结构告诉怎么实现硬件。微机原理和接口更多的是告诉你怎么连接和使用硬件。C是一种高级语言。操作系统是使用汇编语言和C语言实现的一个综合的控制硬件和提供虚拟软件接口的程序。 如果你偏向软件领域,学完《汇编语言》后还是从C语言开始吧!

发表日期:2007年12月17日

网友评论(17)

【游客 发表于:11/02/09 22:05】

受教了

【游客 发表于:08/01/02 20:40】

希望大家能够真正的考虑汇编的出路,考虑自己的出路,而不是不痛不痒的发出一声喘息。求各位了!!

【游客 发表于:08/01/02 20:35】

记得曾经有很多人都喜欢用汇编来调试分析程序的BUG,破解或者加密复杂的程序——象很多病毒之类的。DOS帮的高手在WINDOWS派的大肆屠杀之后,就基本绝迹了。那些传说中的功夫也成了街头卖艺的吆喝!
    希望更多的汇编爱好者能够深入的考虑一下自己的下一步该如何走——是把汇编当作终生伴侣,还是把汇编当作一夜情人!(恐怕很多人都是考虑后者吧!!!)
    诚然,“学习计算机知识的目的是为了使用计算机解决问题”;但是,在当今社会,更直接或者更间接的目的都是为了获得经济利益!一切都向钱看的时候,你就会觉得那种学院派、象牙塔里面的东西似乎不再能够满足自己的需求了。
    “作为一个渴望知识和并不满足于现状的你”,很可能渴望知识的同时不满足于现状。但是,渴望知识的你到后来对汇编也会不再满足。因为根本的原因并非是“渴望知识和并不满足于现状”,而是“经济利益”!是“钱”!
    所以奉劝那些想学习汇编的朋友们,抛开技术的高低不说,你在学习汇编之前就应当考虑最终的目的是什么,而不是学了一半才发现自己犯了错。这样不仅浪费自己的青春和钱财,同时也影响他人的能力和机会。试想走路迈步之前都不看方向,不看脚下的路,这样能够很快到达自己目的地的人,实在是运气太好了!道路就这么宽,你要走回头路,势必挡住别人的前进之路。或者说,你还没有看到路,就被前面折返的人潮给冲回去了!
    如果学习汇编没有狂热的欲望,那么,你就不要把它当作赚钱的饭碗,不要寄发财的希望于汇编,不要花费过多的资金和时间在上面。或许冷静的把它当作茶余饭后的一份点心,你会发现它的独特滋味!

【dengknight 发表于:07/12/29 22:50】

高手啊!还得好好学习啊

【游客 发表于:07/12/18 09:14】

成体系,高人

【Wednesday 发表于:07/12/17 13:32】

脉络打通了,一切都这么自然,天地是这样广阔!

【游客 发表于:07/12/17 13:10】

不要跟随我,跟随你的心

【游客 发表于:07/12/14 10:35】

汇编之后,就是汇编的儿子--小汇编

【starrynight 发表于:07/12/12 14:30】

知道什么叫水平了

【sunshine 发表于:07/12/12 12:55】

高屋建瓴,融汇贯通,人机一体

当前1/2页 首页 上一页下一页 尾页

我也跟评:

     验证码 验证码... [看不清]