不再疑惑,汇编之后
文章作者:伶妖
学习计算机知识的目的是为了使用计算机解决问题。为了更好的使用计算机我们必须要学会能与计算机直接沟通和交流的汇编语言。在我们认真学完《汇编语言》之后,就可以和计算机进行基本的沟通和交流了,也就是有了基础,但只有这些基础还不够,我们还需要更多的计算机方面知识。作为一个渴望知识和并不满足于现状的你,一定会想下一步该学习什么?任何简单的答复都让你质疑。但是你已学完了《汇编语言》,你应该对机器有了了解,也具备了独立判断下一步该学什么的能力了。下面是汇编相关的几个方面的介绍和分析,你看你应该从那方面入手进行下一步的学习。
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语言开始吧!
网友评论(47)
【ning1020 发表于:17/12/11 20:05】
伶妖给出了学习路线图,使得学习汇编语言之后不再迷茫,衷心感谢!!!
【游客 发表于:17/05/19 19:21】
Win32就是花架子,到处调用API函数,还不如直接就用VC呢!
【游客 发表于:11/09/08 08:55】
我自己总以为学汇编就是来理解机器结构.
学高级语言就是学习编程思维.
但我一直没有实现一直在学语法,命令,控件.
郁闷
【游客 发表于:11/07/06 11:14】
好像不懂汇编就没有办法对软件进行深层次的调试和编译处理。也没有办法破解软件。
【游客 发表于:10/11/13 16:34】
<a href=http://www.dsfds.net>爪式千斤顶</a>
[url=http://www.dsfdsf.net]爪式千斤顶[/url]
【sleepinglion 发表于:10/08/16 01:08】
楼主凭什么说windows 32位汇编就是花架子?给出理由!如果是花架子,为什么那么多人还在推荐windows 32位汇编?
【wulishuijiao 发表于:10/05/31 13:20】
win32汇编是花架子?不能完全相信你,还是老罗值得信任
【游客 发表于:10/03/19 19:11】
我先学的C语言,现在正在学汇编啊
【tanliwei 发表于:10/01/01 16:46】
有所受益
【laputasnoopy 发表于:09/12/31 22:34】
循序渐进
更多文章
- 心中的那一轮圆月
- 羊还是狼
- 斩心猿
- 我的世界
- “哲学家”与“猪”
- 谈骄傲
- 如何学习?
- 不再疑惑,汇编之后
- 汇编揭秘C中的参数传递
- 认识问题
- 人类以后,不再有必然
- 秘诀就是相信你
- 我从《士兵突击》中看到想到想说...
- 简单朴素的乐观主义!
- 你是你一生最大的敌人
当前1/3页
首页 上一页 下一页 尾页
程序员眼中的世界
本栏目所刊文章皆已获程序员眼中的世界期刊网<www.proeyes.net>授权,此处文章版权及解释权归程序员眼中的世界期刊网所有。凡转载本栏目文章的网站或个人,须于转载处声明“转载自汇编网www.asmedu.net”,并加注“文字来源为程序员眼中的世界期刊网”字样。
程序员眼中的世界期刊网为程序员人文电子期刊杂志网,提供人文科学类的网络电子杂志。
程序员眼中的世界期刊网立足IT行业,通过程序员的眼睛来观察世界,以程序员对行业和社会的认知反馈来影响行业和社会的发展,展现程序员的思想和人文科学价值,弘扬程序员群体积极向上的人文科学精神。
- 有话说请点击: