《汇编语言》 - 来自底层的较量 - 温故而知新

  在学校时,可能大部分同学的入门语言都是c语言,但是往往或多或少的都会学习过汇编语言。然而那个时候的我们,觉得汇编真的是太难了,而且意义貌似也不大。

  而如今,工作之后,发现一些道理,越是基础的,越能体现你的不凡。所以,我再次打开了这本书,来回味当年的苦涩。

  先做些读后总结吧,这应该也是能快速体现获得多少知识的表现!

一、汇编语言能干什么?仅次于机器语言?

  计算机工作是由一系列的机器指令进行驱动工作的,这些指令是一系列二进制数字 0101000110,对应计算机的高低电平,而这些机器指令的集合就是机器语言,这已经是最底层,和硬件一对一了已经。

  很明显,这样的机器语言是反人类的。只有天才和疯子才有能力去把控他。

  于是汇编语言产生了。汇编语言就是将一些难于记忆的0100100转换为便于记忆的格式,让人能够稍微理解点。如 将寄存器bx的内容送到ax中,对应的机器指令是: 100001001110110000(完全不知道是啥玩意,如果真要细究,那么你就得去查看其电路连接了),而变成汇编指令后: mov ax, bx 。哈哈,是不是容易理解多了。所以,我也总结出一个道理,其实所谓的困难与简单,真的只是相对的,没有对比就没有伤害!

  回到前面的问题,汇编语言能干什么? 这个问题有点low了,机器语言都能干成的事,汇编都能干?但是,机器语言这么牛逼吗?难道现在这么多高科技的东西机器语言都能干吗?这是废话,所有语言转到最后,都是机器语言,没有机器语言干不了的事,也可以说,没有汇编干不了的事,只是咱功力不够,哈哈!

  汇编主要有三类指令:1)汇编指令(机器码助记符,与机器指令一一对应,如果可以,其实只要这玩意你就可以操作计算机所有硬件了); 2)伪指令(没有对应机器码,由编译器执行,计算机不执行,也就是说被编译器转换成了一组或更多的机器码去了,现代高级语言编译器都是干这事儿的); 3) 其他符号(如+-*/,和第二个一样,由编译器识别转换)

二、要编写汇编,有哪些基础知识要了解?(我觉得这比语言本身更有意思)

  存储器,其作用仅次于CPU,CPU进行运算,它进行记忆。

  存储单元。

  CPU对存储器读写,需进行3步交互:存储单元的地址(地址信息);器件的选择,读或写的命令(控制信息);读或写的数据(数据信息)。

  地址总线,地址总线的数量,决定了CPU可操作的内存最大值(这个和有的操作系统用不很大的内存有点像,也可以解释为什么有的手机最大只能扩展xxG内存了);

  数据总线,它的宽度(数量)决定了CPU与外界的传送速度(数据总线越宽,一次能传送的数据量越大,速度越快)。

  控制总线,它的数量决定了对外部器的控制方式数量。

  了解以上这些,也算是对硬件的一些理解,及对真正代码作用的深层次理解吧!

三、汇编所能操作的东西有哪些?(这和写代码还不太一样)

  寄存器,这是整个汇编操作的核心,绝大部分的操作,都是对寄存器的操作。

  对于学习,我们更多的是了解原理,教科书也没有将最新的设备拿出来难我们。

  针对8086CPU,有14个寄存器,分别为: AX, BX, CX, DX, SI, DI, SP, BP, IP, CS, SS, DS, ES, PSW.。

  ABCD-X,通用寄存器,存储一般性数据。 不过,在汇编中,CX 有个特殊功能,用于存储 loop的循环次数。 这里的寄存器都有分高低位,H、L分别表示高低。示例:

mov ax, 11 ; 将11送入寄存器ax mov bl, 3 ; 将3送入bl寄存器 add ax, 5 ; 将ax寄存器的值加3

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpgdgg.html