二、存储器和寄存器简介

1.   扩展插槽和接口卡:

       a.  扩展插槽位于主板上;

       b. 扩展插槽一般插有RAM内存条和接口卡;

       c. CPU不能直接控制外设,而接口卡可以直接控制外设,因此CPU和接口卡插槽用总线相连,从而实现CPU通过控制接口卡的方式间接控制外设;


2.   各类存储器芯片:

       a. 注意:不要狭隘地认为存储器就是磁盘,而其实存储器的大部分都是由模拟电路实现的,因此存储器的本质就是一个个芯片组;

       b. 一台机器上有多个存储器芯片,而不是简单的RAM和ROM两个,很多接口卡上也有RAM和ROM,它们从屋里连接上看都是相互独立的不同的器件;

       c. 从读写属性上看分为两类:

           RAM:Ramdom Access Memory,随机存储器,带点存储(比磁盘快,省去很多电磁反应的时间),断电将丢失数据;

           ROM:Read-Only Memory,只读存取器,只读不写(如果强行通过程序修改将是无效的),断电后数据保留;

       d. 不仅仅只有系统主板才有RAM和ROM:

           i.   ROM和BIOS:

                BIOS(Basic Input/Output System,基本输入输出系统,是一种软件)存于ROM中,通过BIOS可以对相应的硬件系统进行最基本的输入输出操作,主板和一些接口卡都有各自的BIOS ROM,主板BIOS称为系统BIOS,有些系统的显卡和网卡都有自己的BIOS ROM;

           ii.  接口RAM:主板的RAM就是我们通常所说的内存或主存,而实际上很多外设的接口都有自己的RAM,特别是显卡(即显示器的接口卡),现在计算机对图形处理的要求越来越高(特别是速度和画质等),因此只有系统RAM已经不够用了,还需要自己的RAM用于存放需要输出到屏幕上的数据,以到达快速、高质、高效,显卡的RAM就是我们通常所说的显存,将需要显示在屏幕上内容输入显存就可以显示在屏幕上了;注:某些高速网卡也有自己的RAM;

       e. PC机中各类存储器的逻辑连接情况:

            


3.   CPU的内存地址空间:

       a. 因为CPU只能用一种通用的方式管理众多的设备(不可能没出现一种新的设备就要给CPU加上一种和这种设备相对应的新的控制功能,这是不现实的);

       b. 所以在CPU眼里,所有众多的存储设备(不管其内部使用何种不同的模拟电路实现的)都是由一个个相同的内存单元组成的,这就是CPU的逻辑;

       c. 因此CPU将这些空间都看成逻辑空间,这里的逻辑是指CPU的逻辑而不是人的逻辑(因为从现实角度来看,人肯定是喜欢将这些存储设备分门别类看待的, 但是由于CPU太笨了,它只能将这些存储设备都看成一样的);

       d. 这么多的逻辑空间每一个单元都必须有自己的地址,因此不同的地址范围就对应了现实中不同的存储器物理存储空间,但是CPU自己是不知道哪段逻辑空间是对应哪个存储设备的,只能靠人对其进行划分,每段逻辑地址对应哪个实际存储器的空间只有人自己心里清楚;

       e. 这个总的逻辑存储器就是CPU的内存地址空间,简称为内存地址空间,但是使用时一定要清楚,这个概念是从CPU的角度出发的,而不是实际的内存空间;

           !!注意:这个空间中全部都是地址,每段地址对应不同的实际物理设备的存储空间;

       f.  实际主板中,不同存储器映射到内存地址空间中的哪些地址段都存在了各个ROM中,开机自动执行ROM之后,内存地址空间中各个存储器的段就全部都划分好了,每个存储器在内存地址空间中都有一段属于自己的空间,因此物理和逻辑的对应关系都是人为设定的(人为写在ROM中),但是CPU是不知道这种关系的,你让它指向哪段空间它就指向哪段空间,不会因为你让它指向的是操作系统内核它就会禁止你这样做;

           注:既然是认为规定的,那么不同的机器的内存地址空间的分配情况就会不同;

       g. CPU对内存地址空间中不同的段进行操作就相当于对不同的物理设备进行操作,如果向代表只读存储设备段写数据将是无效的;


4.   内存地址空间的大小:

       a. 其实这个前面已经讲过,其受制于地址总线的宽度,其寻址能力直接决定了CPU总共可以寻到多少个内存单元;

       b. 地址总线宽度为n就代表其内存地址空间大小为2的n次方B;

       c. 例如:20位总线的内存地址空间为1MB,而32位总线的内存地址空间为4GB,虽然内存地址空间可以很大,但是最终都是要映射到实际的物理内存上的,例如32位地址线,如果实际物理内存的总量达不到4GB但是内存地址空间也是由4GB的,这就可以使得程序员对内存地址空间的管理变得更加灵活和自如;

           比如:在分配段空间时,不同段之间的空隙可以大一点,这样就可以在对一个段进行扩展的时候不用担心其会越界到另一个程序正在占用的空间;


5.   关于内存地址空间的小节:

       a. 所有存储单元都处于一个统一的逻辑存储器中,称为内存地址空间;

       b. 内存地址空间的大小受制于CPU的控制总线宽度;


6.   寄存器与汇编指令简介:

       a. 程序员可以用指令读写的部件只有CPU寄存器和内存,程序员就是通过改变寄存器和内存中的内容来实现对CPU的控制;

       b. 而目前我们学习汇编语言的目的就是为了用它直接控制硬件系统,并且体验一个裸机环境(即在一个没有操作系统的环境中直接对硬件进行编程);

       c. 通用寄存器:

            i.   即指AX、BX、CX、DX、SP、BP、DI、SI这八个16位寄存器;

            ii.  通用就是指对于8080以上(指8088、8086等更高的版本,有的是32位的,但是不包括8080(仅支持8位))版本,在编程时都可以使用这8个寄存器;

            注意:对于寄存器来讲按照寄存器的不同其宽度可以不同,比如AL是8位的,AX是16位的,即以一个寄存器为单位其位数不固定,但是对于内存来说,其每个单元的大小是固定的(即对于同一型号的机器而言,内存单元的宽度都是固定的),这里以8086为主,因此就认为每个内存单元都是8位(即一个字节)的,即内存单元是按照地址从小到大顺序排列,并且每个内存单元的宽度都是1个字节;

            比如,从内存中读取数据的存入AX中,则必须取出内存中连续的两个内存单元中的数据,如果是存入AL中,则只需要取出内存中的一个内存单元中的数据即可;

       d. 关于字和双字:

            i.    最早的计算机是8位的,因此只有Bit和Byte的概念;

            ii.   后来发展到了16位机,因此就发明了字(Word)表示两个字节;

            iii.  32位机出现了以后就发明了双字(Double Word)的概念,用来表示两个字;

            因此,为了规范起见,Word就代表两个字节;

       e. 关于进制数的表示:

            i.   以H为后缀就表示是16进制的(Hex);

            ii.  以B为后缀就表示是2进制的(Bin);

            iii. 无后缀就表示10进制的;

       f.  汇编指令对大小写不敏感,不管是对调试器还是对编译器而言都不区分大小写;

       g. 寄存器的独立性:

            i.   寄存器之间有些相互独立的有些是相互之间有联系的,各司其职,不能想当然将几个寄存器强行联系起来,否则可能导致错误;

            ii.  注意H和L寄存器之间的相互独立性,比如,使用L寄存器是机器将其看成一个独立的寄存器来使用,和H寄存器没关系;

                 举例:将AL和一个数相加,如果产生进位,则不会将进位加在AH中,而是加在其它专门加载进位的寄存器中,因此L和H寄存器没有直接的联系;

            iii. X中产生的进位将会丢失,但这个丢失和ii.中的一样,既不是真正将其丢弃,也不是将进位加在EAX的高16位中,同样也是将进位加在一个专门加在进位的寄存器中;

       h. 汇编语言一定要注意“位数一致性”:

            i.   和C语言的类型转换不同,C语言支持窄化转换;

            ii.  汇编语言不仅不支持窄化转换也不支持扩展转换;

            iii. 即两个操作对象的位数必须保持严格的一致性,如果有一点不一样就会导致编译器报错,例如MOV AX, BL等都是不对的;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值