CPU中的寄存器和地址概念

来源:互联网 发布:注册淘宝店要多少钱啊 编辑:程序博客网 时间:2024/05/16 05:56

一般的CPU都是由以下部分组成:运算器、控制器和寄存器。

这些器件之间自然也要相互交换信息,所以他们也是有导线相连的,也就是总线了。但是这个总线是内部总线,而CPU和内存、显卡之类做信息交换的是外部总线。

他们的作用分别是:

运算器:信息处理

寄存器:信息储存

控制器:控制器件

好吧,从名字来看就很容易明白……

通用寄存器(8086CPU):

8086CPU寄存器都是16位的,可以存放两个字节,一个字节是八个二进制位哦。

它的通用寄存器有:AX,BX,CX,DX,话说就是ABCD嘛。

特殊的是这些寄存器都是可以拆成8位寄存器来使用,为了兼容。

AX可以拆分为AHAL

BX可以拆分为BXBL

CX可以拆分为CHCL

DX可以拆分为DHDL

H代表high的意思,L代表low的意思,这样是不是很好理解。

这个16位寄存器,说起来就是它里面可以存放0和1的小格子有16个。一个小格子就是一个二进制位。

来张图应该会很清晰,没网……以后补充吧……

说到这里,如果你看到这样的一个数字4E2C,不用慌张,它是一个16进制的数据。这种类型的数据,你只要死死记住,16禁止的一位,相当于二进制的四位,所以呢4E2C你要是换算成二进制,它是16个。

书上的例子是这样的:

4E20,这是一个16进制数,换算以后成二进制:0100111000100000,

4就是0100,E就是1110,2就是0010,0就是0000.怎么换算还不知道,请打你的计算机老师……

最后,有些时候我们不能一眼看出它是一个16进制数,或者说会有误解的时候,就会在十六进制数的后面加上一个H,这里的H不是high,而是Hex的意思。

二进制数呢,就会在后面加上B,也就是byte的意思,而十进制数就不用加了,毕竟都是小学都会的。

现在来使用寄存器吧!

首先呢,在写汇编代码的时候,你不用区分大小写。

比如:mov ax 22,这个是可以,他表示将22的数据送入AX寄存器

不仅可以把数据送进寄存器,还可以把其它寄存器的数据送过来,如:mov ax bx 它表示把BX中的数据送入AX,当然,BX的数据还在的哦。

如果你很高兴,mov AX 22 mov AX BX这种大写代码也是可以接受的……

这里说到了mov ax bx的情况,有时候如果说ax寄存器没有数据,那么一切ok,但是如果ax里面有数据会怎么样?这个时候把bx的数据送进来,那ax的数据还在吗?

答案是否定的,ax的数据将会被bx中传递过来的数据覆盖。

其实很好理解,这个ax这个容器很小,当你把别的数据是送进来,它只能以这种方式存储数据。

物理地址

这里说的可不是你的MAC地址……

在内存当中,不管你的内存有多大,CPU在访问的时候都是把它当成一维的,这样确保了每个内存单元都有唯一的地址。嗯,不排除以后科技更牛逼……

这些内存单元的地址,就是它们的物理地址。

CPU会首先在内部安排好地址,然后再发出去。那么CPU是怎么发出地址的?自然是靠地址总线。

这里说的内存单元,绝不仅仅是内存条,还有显存之类的也属于内存单元。

在讨论CPU问题,其实涉及到的是计算机的工作原理,和本质,我们不应当将概念人为地局限为一个或者一种特殊器件。

 

 

0 0
原创粉丝点击