内容简介:大概有很多童鞋会说,现在这个时代,学汇编还有啥意思?现在写网站有java、.net、php,写应用有c、c++,还有谁在用汇编来写程序。确实是这样,现在软件开发确实绝大多数都在使用高级语言来开发,包括现在做硬件也大多是c语言了。但是汇编语言是学习很多其它知识(数据结构、操作系统、编译原理等)的重要基础,所以为了能够在编程的道路走的更远,学习汇编还是很有必要的,因为汇编是人与计算机沟通最直接的方式(不要和我说啥机器语言,那玩意你看的不累嘛),它描述了机器最终要执行的指令序列。当然,每一种不同的处理器都有其独
大概有很多童鞋会说,现在这个时代,学汇编还有啥意思?现在写网站有 java 、.net、php,写应用有c、c++,还有谁在用汇编来写程序。确实是这样,现在软件开发确实绝大多数都在使用高级语言来开发,包括现在做硬件也大多是 c语言 了。
但是汇编语言是学习很多其它知识(数据结构、操作系统、编译原理等)的重要基础,所以为了能够在编程的道路走的更远,学习汇编还是很有必要的,因为汇编是人与计算机沟通最直接的方式(不要和我说啥机器语言,那玩意你看的不累嘛),它描述了机器最终要执行的指令序列。
当然,每一种不同的处理器都有其独特的汇编指令,我们只通过其中一种结构简单的处理器来学习汇编就够了,毕竟我们的最终目的不是学用汇编编程,而是深入了解机器运行程序的原理,充分获得底层编程经验而已。
下面所讲述的内容都基于8086PC,虽然8086只存在于历史之中了,相信绝大多数的同学都没见过那玩意。但是只要是Intel兼容的系列都可以以8086的方式进行工作。放心,在开始写程序前,我会教大家搭建8086的开发环境的。不过在这之前,我们还是需要知道一些基础知识的。
机器语言
啥是机器语言?机器语言就是机器指令的集合。机器指令是一大串的二进制,计算机将它们转换成一列的高低电平来驱动电子器件进行运算。
说了那么多,还是迷迷糊糊的,我们还是直接来看两个案例吧:
// 在8986CPU完成运算:s=768+12288-1280 101100000000000000000011 000001010000000000110000 001011010000000000000101
我去,看到这一串代码我就懵了,如果不小心把其中一个0写错了,要调试起来,得花费多少时间?况且这还是最简单的一个运算,如果是一个大应用的话,估计找个错都得好久时间把。
图上就是最早期的计算机程序,程序员们通过在纸上打洞来书写程序:1打孔,0不打孔,再将程序通过纸带机输入到计算机中。是不是突然觉得我们现在好幸福,有各种IDE,有各种智能提示,语法高亮以及强大的debug。
汇编的产生
是不是看过上面的代码后,头都大了几圈?不只是你,包括那个时代的前辈们也对这种编程方式深恶痛绝,然后咋办呢?大神们就通过一些简单直观的单词来代替010101。例如:
// 将寄存器BX的内容送到AX中 MOV AX, BX
是不是要比上面的那一大串1和0要清晰明了多了?这里我们不得不佩服先辈们的智慧。
于是,那个时期的 程序员 们,就愉快的用汇编来编写程序了。但是你有没有想过,计算机只认识机器语言,我们写的汇编它并不认识。就像我和老外沟通一样,我不会英文,他不会中文,那咋办?当然是请出我们的翻译官大人了。这里的翻译官大人就是我们的编译器了。我负责写汇编,再由翻译官将汇编翻译成机器语言。
上面的图就是使用汇编开发软件的整个流程了,手绘的图,丑点就丑点把。
汇编的组成
汇编语言主要是由下面几点组成的:
- 汇编指令:机器码的助记词,有对应的机器码
- 伪指令:没有对应的机器码,由编译器执行,计算机并不执行
- 其它符号:如+、-、*、/等。由编译器识别,没有对应的机器编码。
其实汇编语言的指令不多,语法也简单,为什么汇编会比高级语言更难呢?那是因为汇编我们是直面计算机底层,所以我们要做的工作很多,但是高级语言已经帮我们做好了这些,我们不需要太过于操心底层的东西,只需要关注业务即可。
想要学好汇编,计算机的各个组成部分我们是必须要了解的。
存储器
如果把计算机比喻成一个人的话,CPU是我们的大脑,而存储器则是我们大脑中的记忆部分。如果人没有了记忆,即使你有再聪明的大脑,也无法进行思考。所以计算机要想工作的话,是离不开存储器的。要灵活的使用汇编,则必须了解CPU是怎样从内存中读写数据的。
上面说的存储器是内存,而不是我们的磁盘。
指令和数据
指令和数据是应用上的概念,因为对于计算机来说,指令和数据是没有啥区别的,它们都是一串存储在计算机上的二进制信息。CPU会根据不同的场景来区分具体是数据还是指令。
存储单元
存储器划分为多个存储单元,每个存储单元从0开始编号。
计算机中最小的单位bit(一个二进制位),8个bit组成1Byte(字节),微机存储器的存储单元可以存储1个字节(8bit),如果一个存储器有128个存储单元,则可以存储128B的数据。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- iOS汇编入门教程(一)ARM64汇编基础
- iOS 汇编入门教程(一):ARM64 汇编基础
- iOS汇编入门教程(三)汇编中的 Section 与数据存取
- iOS汇编入门教程(二)在Xcode工程中嵌入汇编代码
- 基础知识:css3核心知识整理
- 密码学基础(二):数字证书、密钥基础知识
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
勇敢新世界‧互聯網罪與罰
許煜、劉細良 / CUP / 2005 / $48
我天天上網數小時,為的是要在節目裡面介紹世界的最新動態,尤其是網絡這個世界本身日新月異的變化。所以我不可能不注意到BT、共享軟件、 Wikipedia、網絡監管等各種影響政治、社會、經濟及文化的重要網絡現象。但是我發現市面上一直沒有一本內容充實全面,資料切時的中文參考書,直到這本《互聯網罪與罰》。而且,最大的驚喜是它易讀好看,簡直就像故事書。 梁文道 鳳凰衛視 《網羅天下......一起来看看 《勇敢新世界‧互聯網罪與罰》 这本书的介绍吧!