了解寄存器的基本概念
-
在计算机领域, 对于某种特定的计算机设计而言,字是用于表示其自然的数据单位的术语。在这个特定计算机中,字是其用来一次性处理事务的一个固定长度的位(bit)组。一个字的位数(即字长)是计算机系统结构中的一个重要特性。 字长在计算机结构和操作的多个方面均有体现。计算机中大多数寄存器的尺寸是一个字长。计算机处理的典型数值也可能是以字长为单位。
一个典型的cpu 由运算器、控制器、寄存器等器件组成,这些器件靠内部总线相连。
区别:内部总线实现cpu 内部各个器件之间的联系。外部总线实现cpu和主板上其他器件的联系。
8086 cpu 有14个寄存器,他们的名称为: AX、BX、CX、DX、SI、DI、SP、IP、CS、SS、DS、ES、PSW。8086 cpu所有的寄存器都是16位的,可以存放两个字节。
为什么8086的寄存器是16位的? 这个比较的好理解哈,因为要做加法,没有16位存不下去。
现在cpu 是64位,那么寄存器起码得是64位,不然没法实现加法。cpu 64位之所以可以使用32位的软件,那是因为64位的cpu兼容了32位的。AX、BX、CX、DX 通常用来存放一般性的数据,称为通用寄存器。寄存器的逻辑结构:EAX 就是32位的cpu的叫法。
数据18:二进制表示:10010;在寄存器ax中的存储。
然后16位的寄存器存储的最大值为:2的16次方-1。这里就有人问了,万一计算的比16位还多的数字怎么办呢? 这个靠设计解决,比如说有一个32位的数字要计算,那么可以设计2个16位去处理,这种要靠设计去实现了,cpu 能做的只有这个。8086 上一代的cpu 寄存器都是8位的;为保证兼容性,这四个寄存器都可以分为两个独立的8位寄存器使用。
然后怎么兼容的,那是因为AX 可以分为AH和AL,那么AH 是8位的。那么其他的也是这样BX 分为BH和BL。CX 分为CH和CL。DX分为DH和DL
这些分出来的就是8位的。说白了就是兼容兼容这些指令了。AH 表示高位,AL表示低位。 所以8位的程序,只能用到AL这种低位的。一个32位程序也不要想换成64位cpu就能跑的更快,没有这回事。
AX的低8位(0-7)构成了AL寄存器,高8位(8位-15位)构成了AH寄存器。AH和AL寄存器可以独立使用的8位寄存器。
一个字可以存储在一个16位寄存器中,这个字的高位字节和低位字节自然就存在这个寄存器的高8位寄存器和低8位寄存器中。
西南地区IT社群(QQ)
- 云南
- 【昆明网页设计交流吧】243627302
- 【昆明nodejs交流吧】 243626749
- 【VUE】838405306
- 【云南程序员总群】343606807
- 【昆明UI设计】104031254
- 【云南软件外包】15547313
- 贵州
- 【PHP/java源码/站长交流群】55692114
- 四川
- 【成都Java/JavaWeb交流】86669225
- 【vaScript+PHP+MySql】116270060
- 【UI设计/设计交流学习群】135794928
- 重庆
- 【诺基亚 JAVA游戏博物馆】 559479780
- 【PHP,Java,Python,C++接单】 442103442
- 西藏