汇编第一课课后整理——基础知识
第一章 基础知识
1.1 由机器语言到汇编语言
机器语言是所有计算机语言的“鼻祖”,也是计算机唯一能“直接懂”的语言。机器语言是机器指令的集合。
机器指令就是一台机器能正确执行的命令,机器指令是由一串二进制数(二进制数的序列)表示的。
因为机器语言是完全面向机器的,完全不符合人性化这一特点(我们用自己的语言来表达交流而不是二进制语言),为了方便,汇编语言应运而生。
汇编语言的主体是汇编指令,而汇编指令是机器指令便于记忆的书写格式,说白了,就是用助记符去代替二进制数的序列。比方说:
用汇编语言写程序的工作过程:
- 程序员编写汇编语言程序。
- 系统内部的编译器将汇编指令变成机器指令。
- 机器按照机器指令执行相应操作。
汇编语言的具体组成:
- 汇编指令(主体):机器指令的助记符,有对应的机器码。
- 伪指令 :没有对应的机器码,而是帮助编译器工作的符号,由编译器执行。
-
其他符号 : 没有对应的机器码,由编译器识别。
1.2 计算机组成(逻辑组成)
汇编指令不过是机器指令的便于记忆的书写格式,所以汇编语言还是面向机器的,有必要来重新整理一下计算机的组成。
先插一句题外话,在预习的时候,书上一句话,由于我自己理解问题,把我给弄晕了,先来看看原文:
我当时想啊,最常见的硬盘肯定是存储器,那它就是RAM咯,毕竟可写可读嘛!但是好像计组不是这么教的啊,我上网一搜,哇,乱七八糟的回答,于是我就更懵逼了,没办法只能看权威的书籍或者网站了。经过一两个小时的搜寻和思考,发现,错!错!错!大错特错!来看看完整的说法:
RAM、ROM根本就不是所有存储器的分类,而是半导体存储器的分类!再结合一些其他内容:
那RAM、ROM不就是内存的分类嘛!外存既不是RAM也不是ROM!hai,这句话坑的我啊,其实也挺好,发现了问题。现在看来计组真的是还给老师了。
一个计算机系统的总的概括:
汇编语言的学习只需要了解CPU和存储器即可,而它们之中的寄存器和内存最为重要。
先了解存储器,按存储器在计算机系统中的作用分类:
- 主存储器(内存):用于存放指令和数据,其速度高、容量较小、价位高。
主存和内存通常混用,但也有细微区别。
- 辅助存储器(外存):主要用于存放当前不活跃的数据,其速度慢、容量大、价位低。
指令和数据在内存或外存中都是以二进制信息的方式存储的。CPU在工作时把有的二进制信息看作指令,把有的二进制信息看作数据,根据情况不同来区别对待。
二进制数一旦大了,不方便识别,我们一般用十六进制数表示:000FH,它代表着十进制的15,H是十六进制的标识。常用进制的标识:二进制是Binary,简写为B;八进制是Octal,简写为O;十进制为Decimal,简写为D;十六进制为Hexadecimal,简写为H。
再到内存,按功能和连接上的详细分类:
cache的中文名字叫高速缓冲存储器,8086里肯定没有,是随着时代发展产生的。它就是起缓冲作用的,它的速度更快、容量也更小,一般把最活跃的指令和数据存进去。它一般由RAM组成。以前cache放在内存中,现在有些cache已经被封装进CPU里了。
在上图中可以看到,RAM是其中最重要的存储器,所以有时候说内存指的是RAM。内存就出现了多义性,就是些说法习惯。
存储单元的大小是八个二进制数(bit),用字节(B)为单位表示,即一个存储单元的大小是一字节。
CPU和其他部件进行数据交换是通过总线来进行的。系统总线又称内总线或板级总线,简称总线。因为该总线是用来连接微机各功能部件而构成一个完整微机系统的,所以称之为系统总线。CPU对内存的读写自然也是通过总线进行的,并且按照总线上数据传送信息的不同分为三大类:地址总线、数据总线、控制总线。
XX总线的宽度是指导线(一根导线一次传递一位二进制数)的根数,有几根线宽度就是几。
地址总线的寻址能力就是看地址总线的宽度,然后计算出能表示多少个二进制数,以对应多大的字节。
1.3 内存的读写和地址空间
CPU对内存的读写要进行三类信息的交互:
- 存储单元的地址(地址总线)
- 器件的选择,读或写命令(控制总线)
- 读或写的数据(数据总线)
那么存储单元的地址怎么安排的呢?这也就是内存地址空间的问题。
8086解决方法是:将所有的这些内存储器看成是一个整体——假想的逻辑存储器,整体统一编址。