看的是王爽老师的《汇编语言》第三版
基础知识
一.汇编语言的诞生
上古时期在汇编语言还未出现的时候,那时的程序员还只能用二进制也就是所谓的机器语言写代码,将0和1编成的程序代码打在纸带或卡片上,再将纸带卡片输入计算机,进行运算;代码相当抽象,查错就更难了;难以辨别和记忆成为了机器语言的瓶颈;
但是怎么可能会有问题能难住程序员呢,于是汇编语言诞生了!
二.汇编语言VS机器语言
汇编语言的主体是汇编指令,它相比机器指令更容易书写和记忆;
例如
汇编指令 | 机器指令 | 操作 |
---|---|---|
mov ax,bx | 1000100111011000 | 寄存器BX的内容送到AX |
先不用关心这指令,一眼就看出如果写代码只能从汇编语言和机器语言选一个的话我肯定选汇编;
当然汇编语言无法直接让计算机运行,它需要编译成机器码然后在让计算机运行;
三.汇编语言的组成
- 汇编指令:机器码的助记符,有对应的机器码;
- 伪指令 : 没有对应的机器码,由编译器执行,计算机并不执行;
- 其他符号:如加减乘除符号,也是由编译器识别,没有对应的机器码;
汇编指令容易理解,至于伪指令和其他符号他们既然没有对应的机器码计算机也不执行为什么要有它们呢?上文写到汇编语言需要编译成机器语言后才能被计算机运行,这原因其中之一就是为了协助编译器编译汇编源代码,其二就是为了汇编源代码更好的可读性;
四.CPU与储存器
- cpu可以直接使用的信息在存储器(内存)中存放;(这里我狠查了一波CPU能否直接从硬盘拿数据,但是发现资料方向慢慢走向了操作系统所以就没深入下去)
- 在存储器中指令和数据没有任何区别都是二进制;(后面的学习会写到CPU如何区分数据和指令)
- 存储器的大小跟它存储单元的多少有关,一个存储单元可以存储一个字节,从零开始编号;
- 连接CPU与其他芯片的导线称为总线,总线从逻辑上又分三类,地址总线,控制总线,数据总线;
地址总线
在计算机中一根导线可以传送两种稳定状态高电平,低电平,用二进制表示就是0和1;如果有十根地址总线,那么它就能表示2的十次方个不同数据,编号从0到1023;这也是CPU能找到的地址范围;
数据总线
数据总线的宽度决定了CPU与外界数据传输的速度;一根数据总线能传1bit二进制数据,如果传送数据超过数据总线一次能传送数据的最大值,那就得分批传了;例如只有一根数据总线,要传个3过去,那只能一次传0010,第二次传0001,分两次传完;
控制总线
CPU对外部器件的控制通过控制总线来进行,例如需要读取和写入数据到内存,那么就需要一根读取控制线,和一根写入控制线;
其实这些是在为CPU如何对存储器进行读写做铺垫
年轻的时候送过快递感觉作为例子很贴切;
企鹅男孩是一名快递员,他每天的工作就是把货物送到规定的地址;这里企鹅男孩就是CPU,货物就是数据信息,货物的地址就是存储单元的地址信息,而送快递这个动作就是传达的控制信息;送快递简直和CPU读写存储器如出一辙;
- 1.CPU需要确定存储单元的地址;(快递员确定货物地址)
- 2.器件选择,读取信息还是写入信息;(快递也是一样,你是要给客户去送快递还是给客户发个快递);
- 3.读或写的数据;(送到的快递,或者收回的快递)
这些都是我对王爽老师《汇编语言》第一章的总结,有不对的地方还请多指教;书中前言真是写到心坎了,也是我的瓶颈,学习框架也好语言也好总是没有深度,这是因为我开始学习编程就没走一个循序渐进的路线,所以导致知识不成体系不够扎实,不想做编程界的泥腿子,向成为一名真·程序员前进;