精华内容
下载资源
问答
  • 寄存器 寄存器(Register)是CPU内部非常小、运行非常快的存储部件,...即,我们常说的多少位的CPU,指的就是寄存器的位数。 CPU用寄存器来记录程序的运行状态,然后根据它的值再决定下一步的操作。 References ...
    • 寄存器

      寄存器(Register)是CPU内部非常小、运行非常快的存储部件,一般容量很小,32位的CPU寄存器一般能储存32位(4字节)的数据;64位CPU寄存器一般存储64位(8个字节)的数据。

      所以,现代CPU都内置了几十上百个寄存器。

      即,我们常说的多少位的CPU,指的就是寄存器的位数。

      CPU用寄存器来记录程序的运行状态,然后根据它的值再决定下一步的操作。

    • 数据总线

      数据总线位于主板上,与CPU是并列关系。用于在内存和CPU之间传输数据。

      CPU的最大数据处理能力,就是CPU所能够支持的数据总线的最大根数。

      8位–>16位–>32位–>64位,

      位数即可以指寄存器,也可以指总线,大部分时候两者相同。

      还有个地址总线,用于在内存上定位数据。

    • 主频

      表示单位时间内,计算的次数。

      几十KHz–> 几百MHz --> 4GHz,

      硅晶体的硬件限制,导致只能往多核方向发展,

    • CPU的两个方面

      CPU有两个重要指标:数据总线主频,决定了两个方面:数据处理能力和单位时间里数据处理次数,两者的乘积就是CPU单位时间内的数据处理量。

      而数据处理能力(即数据总线)是一次的数据处理量。

      CPU一次(一个时钟内)能处理的数据的大小由寄存器的位数数据总线的宽度决定。

    • 编译模式

    • 32位编译模式

      32位模式下,一个指针或地址占用4个字节的内存,共有32位,理论上能够访问的虚拟内存空间大小为2^32 = 0X100000000 Bytes,即4GB,有效虚拟地址范围是0 - 0XFFFFFFFF

      就是说,32位编译模式下,不管实际物理内存有多大,程序能够访问的有效虚拟地址空间最大就是4GB

      即便很多PC机扩容到8GB的内存(物理),对于32位编译模式下的程序也不会有提高,它只能用其中的4GB

    • 64位编译模式

      64位编译模式下,一个指针或地址占用8个字节的内存,共有64位,理论上能够访问的虚拟内存空间大小位2^64,远超实际物理内存所能到达的可能。

    • CPU读取内存数据限制

      计算机内存是以字节(Byte)为单位划分的,理论上CPU可以访问任意编号的字节,但实际并非如此。

      CPU通过地址总线来访问内存,一次能够处理几个字节的数据,就命令地址总线读取几个字节的数据。32位CPU一次可以处理4个字节的数据,那么每次就从内存读取4个字节的数据;少了浪费主频,多了没有用。

      32CPU实际寻址的步长为4个字节,因此只能对编号为4的倍数的内存寻址,比如*0,4,8,12…而不会对编号1、2、3、5、6…*的内存寻址。

      因此,一个变量最好位于一个寻址步长的范围内,这样一次就可以读取到变量的值,如果跨补偿存储,就需要读取两次进行拼接,自然降低效率。

      比如一个长度为4个字节int类型,如果地址为8,非常简单,对编号为8的内存寻址一次就可以;如果地址为10,就需要三步操作:

      1. 先对编号8的内存寻址,读取4个字节,得到这个int数据的前半部分;
      2. 再对编号为12的内存寻址,读取4个字节,得到这个int数据的后半部分;
      3. 最后将上面两个部分拼接起来,得到需要的int数据

      将一个数据尽量放在一个步长之内,避免跨步长存储,这称为内存对齐。

      内存对齐,是计算机的运行原理,并不是C语言的特性,Python等其他编程语言也会有内存对齐的问题。

    • References

    1. C语言中文网
    展开全文
  • 2.1 通用寄存器 1. 8086CPU所有的寄存器都是16的,可以存放两个字节。... 思考:一个16寄存器所能存储的数据最大值为多少? 4. 8086CPU的AX、BX、CX、DX(16位寄存器)每个都可以分为两个可独立使用的8...

    2.1 通用寄存器

    1.  8086CPU所有的寄存器都是16位的,可以存放两个字节

    2.  AX、BX、CX、DX,4个寄存器通常用来存放一般性数据,被称为通用寄存器

    3.  一个16位的寄存器可以存储一个16位的数据。    思考:一个16位的寄存器所能存储的数据最大值为多少?

    4.  8086CPU的AX、BX、CX、DX(16位寄存器)每个都可以分为两个可独立使用8位寄存器来用:

          AX可分为AH、AL

          BX可分为BH、BL

          CX可分为CH、CL

          DX可分为DH、DL

     

    2.2 字在寄存器中的存储

    1.  8086CPU可以一次性处理以下两种尺寸的数据:

          (1)字节:byte,一个字节由8个bit组成,可以存在8位寄存器中。

          (2)字:word,一个字由两个字节组成,分别称为高位字节和低位字节。

          *还存在双字、四字

     

    2.3 几条汇编指令

      【重要】计算

    【重要】计算

                          

     

    2.4 物理地址

    1.  CPU通过地址总线送入存储器的,必须是一个内存单元的物理地址。

    2.  在CPU向地址总线上发出物理地址之前,必须要在内部先形成这个物理地址。

     

    2.5 16位结构的CPU

    1.  8080、8085等是8位机,8086是16位机。

    2.  16位结构CPU的结构特性

          (1)运算器一次性可以处理16位数据。

          (2)寄存器的最大宽度位16位。

          (3)寄存器和运算器之间的通路为16位。

     

    2.6 8086CPU给出物理地址的方法

    1.  8086CPU有20位地址总线,可以传送20位地址,达到1MB的寻址能力。

    2.  8086CPU是16位结构,在内部一次性处理、传输、暂时存储的地址为16,这样看来,表现出的寻址能力只有64KB。

    3.  8086CPU采用一种在内部用两个16位地址合成的方法来形成一个20位的物理地址

    4.  物理地址=段地址*16+偏移地址            记为   段地址:偏移地址

     

    2.7 “物理地址=段地址*16+偏移地址”的本质含义

    1.  CPU在访问内存时,用一个基础地址(段地址*16)和一个相对于基础地址的偏移地址相加,给出内存单元的物理地址。

     

    2.8 段的概念

    1.  内存无分段,段的划分来自CPU。

    2.  可将若干地址连续的内存单元看成一个段。

    3.  一个段的起始地址(段地址*16)一定是16的倍数

    4.  偏移地址为16位,16位的寻址能力为64KB,所以一个段的长度最大为64KB

     

    **小结:

    1.    CPU可以用不同的段地址和偏移地址形成同一个物理地址

    2.    给定一个段地址,仅通过变化偏移地址来进行寻址,最多可寻64KB个内存单元。      偏移地址16位,变化范围为0~FFFFH      例:给定段地址1000H,CPU寻址范围为:10000H~1FFFFH

    3.    在8086PC机中,存储单元的地址用两个元素来描述,即段地址和偏移地址。    例:  (数据存在21F60H内存单元中)  数据存在内存2000:1F60单元中   数据存在内存的2000H段中的1F60H单元中。

    4.    可以将地址连续起始地址为16的倍数的一组内存单元定义为一个段。

        【例题】

     

    2.9 段寄存器

    1.  8086CPU有4个段寄存器:CS、DS、SS、ES。

    2.  段寄存器提供内存单元的段地址

     

    2.10 CS和IP

    1.  CS和IP指示了CPU当前要读取指令的地址。

    2.  CS为代码段寄存器,IP为指令指针寄存器。

    3.  任意时刻,CPU将CS:IP指向的内容当做指令执行。

    4.  工作过程简述为下:

          (1)从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器;

          (2)IP=IP+所读取指令的长度,从而指向下一条指令

          (3)执行指令。转到步骤 (1) ,重复这个过程。

    5.  8086CPU加电启动或复位后(CPU刚开始工作时)CS=FFFFH   IP=0000H,即,8086PC机刚启动时,CPU从内存FFFF0H单元中读取指令执行,FFFF0H单元中的指令是其开机后执行的第一条指令。

     

    2.11 修改CS、IP的指令

    1.  在CPU中,程序员能用指令读写的部件只有 寄存器。

    2.  8086大部分寄存器的值可以用mov 指令改变,mov指令被称为传送指令

    3.  CS、IP的值不能使用mov指令改变值。   不能  mov  IP,ax

    4.  jmp段地址:偏移地址   同时改变CS、IP

         jmp 某一合法寄存器    只修改IP   例:jmp ax 

       

     

    2.12 代码段

      例:把代码放到123B0H~123B9H,如果要让这段代码执行,设CS=123BH,IP=0000H

     

    *小结:

    1.    段地址在8086CPU的段寄存器中存放,提供内存单元的段地址。

    2.    CS存放指令的段地址。

    3.    8086CPU提供转移指令修改CS、IP的值。

    转载于:https://www.cnblogs.com/Master-Sun/p/9786833.html

    展开全文
  • TRIO-basic变量的状态

    2019-03-31 21:28:00
    TRIO运动控制器在应用中,我们一般会用一个VR寄存器的状态来控制一些报警信号,这样有利于代码的优化,同时和触摸屏设置报警信息大大的方便和节约时间。 首先测试了一下一个寄存器可以设置多少个状态。 DIM ...

    TRIO运动控制器在应用中,我们一般会用一个VR寄存器的状态位来控制一些报警信号,这样有利于代码的优化,同时和触摸屏设置报警信息大大的方便和节约时间。

    首先测试了一下一个寄存器可以设置多少个状态位。

    DIM num AS INTEGER   '定义一个变量
    FOR num = 0 TO 53      'for 循环54次
        PRINT #0,num          '打印出num
        VR(100).num = 1       '让VR寄存器的每个状态位置1
    NEXT num                    '直到循环完成
    

     下面是循环完成的结果:

    状态位到 53 就会报错超出范围,因此状态位只有52位,具体数量原因还不是很清楚。

    尽量多多使用寄存器的状态位来做报警,有什么问题大家多多提问与支持。

    转载于:https://www.cnblogs.com/httpcc/p/10633294.html

    展开全文
  • 首先,字节和字都是计算机的存储单位。 (bit) 是最小的存储单位 它只可以容纳一二进制数 即只能存储一个0或者存储一个1 字节(byte) 是最常用的单位 对所有的机器,1个字节...从51单片机寄存器一般都是8,3

    首先位,字节和字都是计算机的存储单位。

    位(bit) 是最小的存储单位 它只可以容纳一位二进制数 即只能存储一个0或者存储一个1

    字节(byte) 是最常用的单位 对所有的机器,1个字节都是8位。这是字节的标准定义

    **字(word)**是针对具体的操作系统和处理器来说的。对于51单片机一个字是8位,对于32单片机是一个字是32位,对于32位和64位的操作系统一个字就是32位或者64位。字的大小是指处理器或者操作系统一次拿出多少个位的数据作为一个整体进行操作。从51单片机寄存器一般都是8位,32单片机寄存器一般都是32位可以看出。

    最后尤其注意字和字节的区别!!!!

    展开全文
  • 支持多大内存,需要看此款CPU的地址总线有多少根,如我们之前CPU一般都是32根地址总线,那么支持的内存为:2^32=4*1024*1024*1024=4G。再者现在最新的64 CPU的地址总线一般为36根,同样计算得到是...
  • 32操作系统针对32CPU设计,cpu的是指一次性可处理的数据量是多少,也等于寻址空间的大小或是通用寄存器的大小,一般数据总线的宽度也和cpu位数相同,但也有例外(如8088数据总线宽度为8然而却是16处理器)。...
  • 现在内存条都是白菜价的时代,很多人手中都是4G大内存了。...一般的cpu厂商标示的多少位cpu,其实说cpu的运算位宽。而CPU的位宽一般是以 min{ALU位宽、通用寄存器位宽、数据总线位宽}决定的!也就是说CPU由AL...
  • 现在内存条都是白菜价的时代,很多人手中都是... 一,cpu的寻址能力 一般的cpu厂商标示的多少位cpu,其实说cpu的运算位宽。而CPU的位宽一般是以 min{ALU位宽、通用寄存器位宽、数据总线位宽}决定的!也就是说CPU由A...
  • 原子性(CPU核\总线\周期\锁)

    千次阅读 2015-01-14 21:09:08
    如何看Linux是多少位的CPU uname -an CPU的位宽一般是以 min{ALU位宽、通用寄存器位宽、数据总线位宽}决定的!也就是说CPU由ALU、通用寄存器、数据总线三者之中最少的位宽决定!所以CPU位宽与其寻址能力并不是挂钩...
  • 由内存1的讲解我们知道,内存仅仅是一个存放指令和数据的地方,要完成计算...我们经常说到的多少位的CPU其实指的就是寄存器的位数,对于32位的CPU,每个寄存器一般能存储32位(4个字节,一个字节是8位)的数据,对于6
  • 第2章 寄存器(CPU工作原理) ... 那么一个16位寄存器所能存储的数据的最大值为多少呢? 8086CPU的上一代CPU中的寄存器都是8的,为了保证兼容,使原来基于上代CPU编写的程序稍加修改就可以运行...
  • 机器字长

    万次阅读 2007-11-07 15:57:00
    机器字长是指该计算机能进行多少位二进制数的并行运算,实际上是指该计算机中的运算器有多少位,通常计算机的数据总线和寄存器的位数与机器字长一致。如某机器字长16位,表示该机器中,每次能完成两个16位二进制数的...
  • CPU一次(一个时钟内)能处理的数据的大小由寄存器的位数和数据总线的宽度(也即有多少根数据总线)决定,我们通常所说的多少位的CPU,除了可以理解为寄存器的位数,也可以理解数据总线的宽度,通常情况下它们是相等...
  • usb芯片调试经验

    千次阅读 2014-05-16 20:47:42
    工作速率一般有100K和400K两种,而且里面寄存器一般为一个byte.I2c出错时,需要测量一下i2c bus上是否真的有信号   2.有时钟的芯片,搞清楚时钟采用的是那种时钟,晶振还是RTC。一般芯片为了方便使用,可

空空如也

空空如也

1 2 3 4
收藏数 79
精华内容 31
关键字:

寄存器一般多少位