当前位置:编程学习 > 汇编语言 >>

学汇编语言需要什么基础啊

追问:恩,我学过一点C语言,需要学到什么程度,要会用API吗,现在那觉汇编程序的书完全看不懂
答案:我知道

汇编语言(Assembly Language)是面向机器的程序设计语言.汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。汇编语言”作为一门语言,对应于高级语言的编译器,需要一个“汇编器”来把汇编语言原文件汇编成机器可执行的代码。高级的汇编器如MASM, TASM等等为我们写汇编程序提供了很多类似于高级语言的特征,比如结构化、抽象等。在这样的环境中编写的汇编程序,有很大一部分是面向汇编器的伪指令,已经类同于高级语言。现在的汇编环境已经如此高级,即使全部用汇编语言来编写windows的应用程序也是可行的,但这不是汇编语言的长处。汇编语言的长处在于编写高效且需要对机器硬件精确控制的程序。
  在汇编语言中,用助记符(Mnemonic)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。因此汇编语言亦称为符号语言。
  使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编语言编译器把汇编程序翻译成机器语言的过程称为汇编。
  汇编语言比机器语言易于读写、调试和修改,同时具有机器语言全部优点。但在编写复杂程序时,相对高级语言代码量较大,而且汇编语言依赖于具体的处理器体系结构,不能通用,因此不能直接在不同处理器体系结构之间移植。
  汇编语言的特点:
  1.面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的。
  2.保持了机器语言的优点,具有直接和简捷的特点。
  3.可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。
  4.目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。
  5.经常与高级语言配合使用,应用十分广泛。
  汇编语言的应用:
  1.70%以上的系统软件是用汇编语言编写的。
  2.某些快速处理、位处理、访问硬件设备等高效程序是用汇编语言编写的。
  3.某些高级绘图程序、视频游戏程序是用汇编语言编写的。 
  汇编语言是我们理解整个计算机系统的最佳起点和最有效途径
  人们经常认为汇编语言的应用范围很小,而忽视它的重要性。其实汇编语言对每一个希望学习计算机科学与技术的人来说都是非常重要的,是不能不学习的语言。 
  所有可编程计算机都向人们提供机器指令,通过机器指令人们能够使用机器的逻辑功能。
  所有程序,不论用何种语言编制,都必须转成机器指令,运用机器的逻辑功能,其功能才能得以实现。
  机器的逻辑功能,软件系统功能构筑其上,硬件系统功能运行于下。 
  汇编语言直接描述机器指令,比机器指令容易记忆和理解。通过学习和使用汇编语言,能够感知、体会、理解机器的逻辑功能,向上为理解各种软件系统的原理,打下技术理论基础;向下为掌握硬件系统的原理,打下实践应用基础。 
  学习汇编语言,向上可以理解软件,向下能够感知硬件,是我们理解整个计算机系统的最佳起点和最有效途径
其他:老实说学习汇编要对cpu的内部结构非常清楚,有几个寄存器,几个通用存储器等等,因为汇编语言是指明把哪个数从哪里送到哪里(例如:从哪个寄存器送到哪个内存单元,从哪个I/O口读取数据到cpu),这跟高级语言(c c++ java等)不一样,高级语言不用考虑硬件的结构问题。
所以说要学习汇编,建议先参考微型计算机原理这门课程,毕竟现要对微机系统有一定的了解(大概看一下就行),
但是微机原理这门课的先修课程是数字电子技术基础,个人感觉如果没学过数电的话问题不是太大,遇到问题回去查书就行。
PS:电驴上有从模电 数电 微机原理 到汇编语言的视频课程,可以下载来看看 毕竟比自己看书轻松多了不是吗?!
还有 如果以上课程没学过,可以先学一门高级语言,这可不需要什么硬件的知识,要知道,大学里高级语言可是在汇编前头学的! C语言(谭浩强)或者VB 
反正学一门都要精一门 然后在学其他更实用的语言 
至于选什么资料你自己看看是自学还是开辅导班 
视情况而定 不知道你用的是哪本书,有些汇编书还没给你将多少基础,就给你来很多代码,很打击人自信。
建议你学一下《汇编语言(王爽)》的这本书,完全可以引导你入门和进一步提高,还有网上有针对这本书出的视频教程,主讲人小甲鱼,视频有77讲,但每一讲大概三四十分钟,讲课风格风趣幽默,号称:零基础入门学习汇编语言,对API没要求。给你关键字吧。把最后一行copy搜一下,你就可以找到这个教学视频了,这里还有这本书的电子书下。(教学视频下载——>栏目表——>汇编语言)

鱼C工作室-编程学习-编程视频教程-编程资料下载 不需要什么基础,不过要理解,最好学过一些流程化的语言。比如C。 学习很多,二进制、八进制、十六进制、电子技术知识、(模拟电路、数字电路知识)寻址。。。。。。。。。。。。太多了 参见百度百科词条:汇编语言 高级编程语言能够实现的功能采用汇编语言一般也能实现。只不过在采用汇编语言编写程序时要掌握有关的硬件知识,比如微处理器内部的寄存器结构、主存储器的访问、输入输出接口电路的硬件结构等等内容,所以汇编语言是一种面向硬件的编程语言,与高级编程语言的编程风格迥异,给人的感觉可能觉得学习很困难,其实学习汇编语言时入门后后面就简单得多。另外还应该熟练掌握十进制、二进制、八进制和十六进制数据之间的相互转换、有符号数的补码编码。 需要核心硬件基础知识:需要对该汇编语言所对应的CPU工作原理有所了解,特别是对应的CPU都有什么内部寄存器,它们各自的功能,用法和名称。(不同的汇编语言对应不同的CPU硬件家族) 
上述硬件基础知识加上对二进制运算的了解就足够了。 
学习时只要背下常用的汇编指令助记符,会组织使用它们。再通过汇编软件包的上机练习就足以应付一般的考试啦。 当你知道你为什么要学汇编语言,你就知道该怎么学了。 电子线路,数字逻辑电路,计算机原理,计算方法等等 计算机硬件知识。cpu的结构。模拟电路。数字电路。数据结构一点点。 看来我的基础还不算差,我学过C 1 计算机基本工作原理,重点是cpu和内存的结构和工作原理。
2 学过计算机语言,如VB,VC\C++等
3 数学计算能力 基本了解一些计算机的常识性知识就可以入门学习了。。。 导师给我说过,任何事情都要回答3个问题:what,why,how。做一件事情,要明白做什么,为什么去做,怎么做。楼主想要学习汇编,我不知道具体为什么要去学,1.为了软件解密2.大牛们说过想要在软件行业走的更远,汇编是一个很重要的基础,很多大牛都在搞底层的东西。所以觉得学了对以后的帮助很大。3.听别人说汇编很难学,想尝试。4.觉得高级语言不能很好的反映计算机的二进制世界。以上是我分析楼主的目的不知道有没有以上目的,或者是其他我没想到的。其实我刚进大学(我专业是机械设计)的时候也是看很多书上啊,网上啊都说汇编对编程的提高有很大的帮主,个人对编程又比较感兴趣,所以一开始什么基础都没有就在看些汇编的书,结果当时是看不太懂了,后来学习编程的知识多了,上机实验的次数多了,就明白以前看的了。当然我也是经常到汇编语言这个板块也大家共同的学习,编过简单的程序,有网友还说我的程序写的不错。我不知道楼主打算走多远,如果只是为了个HELLO WORLD的话,完全没有必要学习汇编,现在的高级语言实现这个功能实在是太简单了,做出来的还是标准的windows程序。随着软件业的发展,用汇编来实现某个工程已经不可能了。如果不是搞计算机专业的,我个人认为完全没必要去研究那个东西,其他专业像我们机械设计专业,CAPP这些软件也都是高级语言能够搞定,软件也许没做的很好,但是核心算法在的话,这个事情还是做的很好的。当然与单片机这些东西接触的话,懂点汇编还是比较有用。看完这段我相信楼主已经都比较深的了解了。
  汇编比较好的书有:王爽老师《汇编语言》,杨季文老师的《80X86汇编语言程序设计》。看汇编不看保护模式的程序设计的话,汇编也就白学了,所以保护模式非常重要。当然这也是汇编一些应用的基础,比如软件解密,驱动的编写。有了好书,肯定会事半功倍的。这些书上也会肯定会有HELLO WORLD的实现。学习汇编首先从数制学起,各种数制的转换肯定也是非常重要的基础。然后学习基本的8086指令,程序设计的3种语句形式(顺序,循环,选择)接着是学习调用DOS的一些系统功能实现简单的程序,最后进入了最重要的一部分保护模式的程序设计,开始学习80386指令等等,我就不详说了,路漫漫其修远兮。以上还只是停留在DOS时代,还没有进入复杂的windows世界。现在的windows都是VISTA了。
汇编其实也不是这么神秘,不过是很多人习惯了高级语言的东西,再看汇编就很不习惯了,因为很多事情都得自己做。包括栈的平衡等。楼主既然一定想做,那么就回答了2个问题,what,why。接下来就死haw了,编程的学习当时是要靠多上机练习。轻松汇编,这是一个大学生开发的汇编集成环境,初学的时候可以在上面用。学习编程,最重要的是调试,汇编代码级的调试也是软件解密的关键。所以学了汇编,比较高的境界就是看懂别人的程序,当然不是从源代码,而是反汇编代码。保护模式很重要,因为在windows下,自己肯定是弄不了保护模式了,我不知道能不能在cmd下面调用从实模式到保护模式的程序,没试过,应该是不行吧。如果不行的话,可以装个虚拟机,里面安装DOS,在windows里面写好程序后,做成ISO文件,再进入DOS,编译执行保护模式程序,我是这么做的,不知道还有其他更简便的方法没有,你可以自己摸索下。以上是个人意见哈,供参考。 这样,其实只要会 计算机的基础知识,比如各个进制之间的转换,然后有热情和兴趣,就足够了!
这样,推介你一个网站:汇编网。
另外推介你一本书,王爽《汇编语言》,我这有电子版的,可以发给你。
这个网址和书,是配套的,非常的好!
看一下就知道是你想要的,加油! 觉得最好先把C语言学了,以后不管学什么都是轻车熟路 汇编本来就是一门基础的计算机语言,好好学就是了,它和别的语言的差别就是别的语言一句能说清楚的东西,它可能要好几句才能说清楚 计算机组成原理(越详细的那种越好),没这个底子你汇编根本学不好。
其他高级语言如C/C++、Pascal之类,无非就是把一些汇编代码组合,使其成为一种特定结构(如if for case 或 赋值 数学表达式 逻辑表达式),而汇编语言则是由一条条基本指令组成,灵活性上较高,但由于比较繁琐,所以现在一般是用高级语言和汇编语言混编的形式,在大体上用高级语言实现,局部需要优化的细节用汇编语言实现. 高级语言接近人的语言
汇编语言接近CPU的语言 学会汇编,再学C,让你对C的领悟更深! 这些就是最基础的 ,不过不需要的,你可以先学C语言!这是最基本的语言!只要你学会了一门语言! 

上一个:有会汇编语言的么 用C51做一个8人投票器的实验 led的 我在百度上提了这个问题悬赏200但没人会做,请帮助
下一个:汇编语言5+8=13的编译

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,