8086CPU的所有寄存器都是16位的,可以存放两个字节。AX、BX、CX、DX这4个寄存器通常用来存放一般性的数据,被称为通用寄存器。
以AX为例,寄存器的逻辑结构如下图:
16位寄存器的逻辑结构
一个16位寄存器可以存储一个16位的数据,数据在寄存器中的情况如下图所示:
16位数据在寄存器中存放的情况
想一想,一个16位的寄存器所能存储的数据的最大值为多少?
8086CPU的上一代CPU中的寄存器都是8位,为了保证兼容性,使原来基于上代CPU编写的程序稍加修改就可以运行在8086之上。8086CPU的AX、BX、CX、DX这4个寄存器都可分为两个独立使用的8位寄存器来用:
(1)AX可分为AH和AL;
(2)BX可分为BH和BL;
(3)CX可分为CH和CL;
(4)DX可分为DH和DL。
数据:18
二进制表示10010
在寄存器AX中的存储:
数据:20000
二进制表示100111000100000
在寄存器AX中的存储:
以AX为例,8086CPU的16位寄存器分为两个8位寄存器的情况如下图:
16位寄存器分为两个8位寄存器
AX的低8位(0位~7位)构成了AL寄存器,高8位(8位~15位)构成了AH寄存器。AH和AL寄存器是可以独立使用的8位寄存器。下图展示了16位寄存器及它所分成的两个8位寄存器的数据存放的情况:
16位寄存器及所分成的两个8位寄存器的数据存储情况
想一想,一个8位寄存器所能存储的数据的最大值为多少?
问:一个16位寄存器所能存储的数据的最大值为多少?
答:2^16=65536 准确来说是65535,因为0~65536,总共是65536。
问:一个8位寄存器所能存储的数据的最大值为多少?
答:2^8=256 准确来说是255,因为0~255,总共是256。
问:为什么一个16位的寄存器要分为两个8位寄存器?
答:因为,为了兼容上代CPU编写的程序,稍加修改就可以运行。
问:为什么AX寄存器,要分为低8位和高8位?
答:这个与设计者的命名有关。一个16位寄存器分为两个8位寄存器,第一个8位寄存器,你可以叫做X8位寄存器。第二个8位寄存器,你可以叫做Y8位寄存器。简单地说,你可以任意命名。
问:为什么AX、BX、CX、DX只能存放一般性的数据?
答:在你的办公抽屉里。一般有重要的文件和不重要的文件,以及其他的文件。