小吴学汇编之第二章--寄存器(1)

第二章   寄存器

上次我们学完了第一章,懂了一些基本的知识,今天,小吴带你们学习第二章内容寄存器。

          一个典型的CPU由运算器、控制器、寄存器(CPU工作原理)等器件构成,这些器件靠总线连接,我们上一章说过这个问题。前一章说的总线,相对于CPU内部来说是外部总线。内部总线实现CPU各个器件之间的联系,外部总线实现CPU和主板上其他器件的联系。即在CPU中,我们可以这么理解:

  1. 运算器进行信息处理
  2. 寄存器进行信息储存
  3. 控制器控制各种器件进行工作
  4. 内部总线连接各器件,在它们之间进行数据的传送

对于一个汇编程序员来说,CPU中的主要部件是集训器,我们可以通过指令来进行读写的部件。程序员可以通过改变各种寄存器的内容来实现对CPU的控制。

不同的CPU,寄存器个数、结构是不一样的。例如8086CPU中,有14个寄存器,每个寄存器的名字是唯一的:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。我们暂时不一一介绍,我们本着用到那个寄存器就介绍哪个寄存器的原则进行学习。

2.1          通用寄存器

         8086CPU的寄存器都是16位的,即2个字节大小的存储空间。AX、BX、CX、DX这4个寄存器通常用来存放一般性的数据,被称为通用寄存器。

         以AX为例,寄存器的逻辑结构如图所

 

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

 

 

         一个16位寄存器可以存储16位二进制数据,存储情况如上图所示。

         8086CPU可以将这四个通用寄存器分为两个独立的8位寄存器使用:     

  1. AX可分为AH和AL
  2. BX可分为BH和BL
  3. CX可分为CH和CL
  4. DX可分为DH和DL

下面我们给出实例存储数据,分别用16位寄存器与8位寄存器做例子。

数据:2000

二进制表示:0100 1110 0010 0000

十六进制表示:4E20H

这是AX16位寄存器中存放数据2000的存储情况:

 

0

1

0

0

1

1

1

0

0

0

1

0

0

0

0

0

 

 

这里,我们可以看出,数据在寄存器中的存放格式以二进制数存放的,之前我们有说过这个问题,现在可以理解之前为什么这么说了吗。

下图是AX寄存器分高8位AH与低8位AL存放数据的情况:

0

1

0

0

1

1

1

0

0

0

1

0

0

0

0

0

 

 

MSB                           AH                          LSB     MSB                   AL              LSB

从上图我们可以看出,AH高8位寄存器中存放的数据以二进制来说是78,十六进制来说是4EH;AL低8位寄存器中存放的数据以二进制来说是32,十六进制来说是20H。看到这里,有些人人疑惑了,怎么数据不一样了?其实数据时一样的,只是表示方法不一样而已。我们首先要清楚,1个十六进制数是要用4个二进制表示,所以十六进制中最大的数也只是15,即F。为什么呢?4位二进制1111,表示的就是15。所以,上面说到的16位寄存器与两个8位寄存器存放数据的方式不一样,数据是一样的,因为这两个8位寄存器是独立的。

2.2          字在寄存器中的存储

         8086CPU,出于兼容性考虑,可以一次性处理两种尺寸的数据。

  1. 字节:一个字节由8bit组成,可以存在8位寄存器中。
  2. 字:记为word,一个字由两个字节组成,这两个字节分别称为高位字节和低位字节,如下图所示:

字:0100 1110 0010 0000

左边8位是高位字节(0100 1110),右边8位是低位字节(0010 0000)

         今天先到这里,明天继续。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值