| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3320 人关注过本帖
标题:为了加深C语言的学习,用不用学习汇编?
只看楼主 加入收藏
zhuzhuchar
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2007-11-24
收藏
 问题点数:0 回复次数:14 
为了加深C语言的学习,用不用学习汇编?
如题,

下面是一篇汇编网上关于学习完汇编之后学那门语言的文章,反过来,要想深入理解C语言

用不用学习汇编?

想研究C语言的机制,用不用有汇编的基础?

 

文章原文:

学习计算机知识的目的是为了使用计算机解决问题。为了更好的使用计算机我们必须要学

会能与计算机直接沟通和交流的汇编语言。在我们认真学完《汇编语言》之后,就可以和

计算机进行基本的沟通和交流了,也就是有了基础,但只有这些基础还不够,我们还需要

更多的计算机方面知识。作为一个渴望知识和并不满足于现状的你,一定会想下一步该学

习什么?任何简单的答复都让你质疑。但是你已学完了《汇编语言》,你应该对机器有了

了解,也具备了独立判断下一步该学什么的能力了。下面是汇编相关的几个方面的介绍和

分析,你看你应该从那方面入手进行下一步的学习。


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语言开始

吧!转载自汇编网文章链接[url]http://www.[/url]
搜索更多相关主题的帖子: C语言 汇编 计算机 学习 基础 
2007-12-15 14:42
zhuzhuchar
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2007-11-24
收藏
得分:0 
没人顶阿
我记得有人说过C语言就是用汇编语言写的吧,并且C语言的函数之间传递都是使用的栈,难道要想真正的弄明白C语言,不用学习汇编码?
2007-12-15 15:09
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
收藏
得分:0 
如你要加深对c语言的学习那当然,学习汇编更好一点.
因汇编贴近机器,它使你对硬件更加了解,它要比c语言难掌握的多.
2007-12-15 15:29
xinxin-xiao88
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2007-12-15
收藏
得分:0 
总结:汇编是基础;弄懂原理就行!
我觉得楼主的引用是有一定道理的,谢谢!!!!!!!!!!
2007-12-15 15:39
布拉莫斯
Rank: 1
来 自:中国太平洋舰队
等 级:新手上路
帖 子:169
专家分:0
注 册:2007-3-31
收藏
得分:0 
C相对大多的高级语言的优势在于它能够直接操作底层,比如内存,需要进行操作底层就最好有一点汇编语言的基础,了解掌握一定的汇编知识,有利于对底层操作的理解与把握。。

真理往往掌握在少数人手中,可现实却是少数服从多数!
2007-12-15 16:23
zhuzhuchar
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2007-11-24
收藏
得分:0 
找到同一思想的不容易啊~
2008-01-02 18:02
linsua
Rank: 1
等 级:新手上路
帖 子:275
专家分:0
注 册:2008-1-2
收藏
得分:0 
我觉得不用学汇编了。C本来就是想取代ASM的。
2008-01-02 18:05
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 
我觉得我们已经不用学数学了,计算器本就是想取代数学的.
2008-01-02 18:23
灭火的风
Rank: 2
来 自:杭州
等 级:论坛游民
帖 子:161
专家分:10
注 册:2006-6-15
收藏
得分:0 
如果你不喜欢汇编却去学的话你会很痛苦,所以先尝试下,喜欢就学不喜欢就不要学。不是必须的,毕竟不是人人都适合做底层开发的。
2008-01-02 18:35
linsua
Rank: 1
等 级:新手上路
帖 子:275
专家分:0
注 册:2008-1-2
收藏
得分:0 
人问:为了加深C语言的学习,用不用学习汇编?
我觉得就不用。你为了加深计算器的学习取学数学?
计算器想取代数学?什么逻辑?

如果你对我的话感到再明白不过 那恐怕你是误解了我的意思
2008-01-02 18:38
快速回复:为了加深C语言的学习,用不用学习汇编?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018716 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved