学习汇编语言你需要了解的基础知识01

栏目: 编程语言 · 发布时间: 7年前

内容简介:大概有很多童鞋会说,现在这个时代,学汇编还有啥意思?现在写网站有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写错了,要调试起来,得花费多少时间?况且这还是最简单的一个运算,如果是一个大应用的话,估计找个错都得好久时间把。

学习汇编语言你需要了解的基础知识01

图上就是最早期的计算机程序,程序员们通过在纸上打洞来书写程序:1打孔,0不打孔,再将程序通过纸带机输入到计算机中。是不是突然觉得我们现在好幸福,有各种IDE,有各种智能提示,语法高亮以及强大的debug。

汇编的产生

是不是看过上面的代码后,头都大了几圈?不只是你,包括那个时代的前辈们也对这种编程方式深恶痛绝,然后咋办呢?大神们就通过一些简单直观的单词来代替010101。例如:

// 将寄存器BX的内容送到AX中
MOV AX, BX

是不是要比上面的那一大串1和0要清晰明了多了?这里我们不得不佩服先辈们的智慧。

于是,那个时期的 程序员 们,就愉快的用汇编来编写程序了。但是你有没有想过,计算机只认识机器语言,我们写的汇编它并不认识。就像我和老外沟通一样,我不会英文,他不会中文,那咋办?当然是请出我们的翻译官大人了。这里的翻译官大人就是我们的编译器了。我负责写汇编,再由翻译官将汇编翻译成机器语言。

学习汇编语言你需要了解的基础知识01

上面的图就是使用汇编开发软件的整个流程了,手绘的图,丑点就丑点把。

汇编的组成

汇编语言主要是由下面几点组成的:

  • 汇编指令:机器码的助记词,有对应的机器码
  • 伪指令:没有对应的机器码,由编译器执行,计算机并不执行
  • 其它符号:如+、-、*、/等。由编译器识别,没有对应的机器编码。

其实汇编语言的指令不多,语法也简单,为什么汇编会比高级语言更难呢?那是因为汇编我们是直面计算机底层,所以我们要做的工作很多,但是高级语言已经帮我们做好了这些,我们不需要太过于操心底层的东西,只需要关注业务即可。

想要学好汇编,计算机的各个组成部分我们是必须要了解的。

存储器

如果把计算机比喻成一个人的话,CPU是我们的大脑,而存储器则是我们大脑中的记忆部分。如果人没有了记忆,即使你有再聪明的大脑,也无法进行思考。所以计算机要想工作的话,是离不开存储器的。要灵活的使用汇编,则必须了解CPU是怎样从内存中读写数据的。

上面说的存储器是内存,而不是我们的磁盘。

指令和数据

指令和数据是应用上的概念,因为对于计算机来说,指令和数据是没有啥区别的,它们都是一串存储在计算机上的二进制信息。CPU会根据不同的场景来区分具体是数据还是指令。

存储单元

存储器划分为多个存储单元,每个存储单元从0开始编号。

计算机中最小的单位bit(一个二进制位),8个bit组成1Byte(字节),微机存储器的存储单元可以存储1个字节(8bit),如果一个存储器有128个存储单元,则可以存储128B的数据。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Dream Machine

The Dream Machine

M. Mitchell Waldrop / Penguin Books / 2002-8 / USD 16.00

While most people may not be familiar with the name J. C. R. Licklider, he was the guiding spirit behind the greatest revolution of the modern era. At a time when most computers were big, ponderous ma......一起来看看 《The Dream Machine》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

SHA 加密
SHA 加密

SHA 加密工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具