汇编语言初探

 

一、什么是汇编语言

汇编语言是(英语:Assembly Language)是一种用于电子计算机、微处理器、微控制器、或其他可编程器件的低级语言。

这是维基百科上对汇编语言的解释。其实汇编语言与常见的 C、C++、Java 等语言一样,都用来 “ 指挥 ” 计算机完成某项工作。只不过汇编语言是直接在硬件上运行的一种编程语言,像 C、C++、Java 等高级语言最终也会被 “ 翻译 ” 成汇编语言。

二、为什么要学习汇编语言

汇编语言是人和计算机沟通最直接的方式,它描述了最终计算机所要执行的指令序列的意义。当你和一个会说八国语言的人交流时,最有效的方式还是和他用母语交流。这个比喻好像有点牵强,但是中心思想就是:通过学习汇编语言我们可以更加深入的理解计算机的工作方式

学习汇编还有一个好处,那就是能体验到底层编程所带来的乐趣。

我目前使用的是 Java 语言进行一些开发,都知道 Java 语言是跨平台的,一个 java 文件(源代码)如下:

复制代码
public class demo {     public static void main(String[] args) {         int a = 1;         a = 6;         for (int i = 0; i < a; i++) {             a++;         }     } }
复制代码

该文件首先被编译成 class 文件(字节码),再将 class 文件送入 JVM 中执行。JVM 再将 class 文件中的字节码翻译成对应平台的机器码。下面贴出这个 class 文件反汇编后(使用 javap 命令)得到的汇编代码。

虽然这些汇编指令是 JVM 中特有的,但是应用起来和一般微处理器的汇编指令都是相通的。

都说深入 JVM 是一个 Java 高级工程师的必经之路,在我看来知识都是一步一步积累起来的,任何跳跃式的学习都是不靠谱的,让一个连汇编语言都不会的人直接去学习 JVM 相关的知识,效果可想而知。

综合这些因素,我开启了汇编语言的学习之路。在我的学习过程中,主要的参考书籍是王爽教授的 

 

一眼就能看到 CPU 所在的位置和一些黄色的插槽,插槽上可以插各类接口卡(如显卡、网卡、内存卡等)。

具体说来,物理意义上的存储器分为 RAM(读写) 和 ROM(只读)。

其中内存卡全是 RAM,网卡和显卡中有 ROM,ROM 中一般装有 

 

从地址 0 ~ 9FFFF 的内存单元读取数据,实际就是在读取主随机存储器的数据;向地址 A0000 ~ BFFFF 的内存单元中写数据,就是想显存中写入数据,这些数据会被显示卡输出到显示器上;向 C0000 ~ FFFFF 的内存单元中写入数据是无效的,因为这一段地址空间是只读的。

四、总结

《汇编语言》的第一章主要是介绍了一些计算机硬件基础知识,为下面两张对寄存器的学习做了很好的铺垫。王爽教授的这本书真的挺不错,短短的一章内容就足以让我有了很强的阅读欲望,期待下面两章对寄存器的阅读。https://www.cnblogs.com/KKSJS/p/9901120.html

50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信