第二章 寄存器
上节说到CPU通过系统总线与内部各个器件的联系,这一节开始说说其中一个重要的器件---寄存器,程序员在编程时,可以通过改写寄存器的内容达到对CPU的控制;在8086CPU的
16位寄存器中,AX,BX,CX,DX都是通用寄存器,可以存放一般性的数据。为了兼容上代的CPU这些寄存器可以分成两个八位使用,低八位,和高八位,一AX为例就是分为AL,AH;
出于兼容性的问题,8086CPU可以处理两种尺寸的数据:
字节:byte,由8个bit位组成
子:word,由两个字节组成,这两个字节分别被称为高位字节和低位字节
汇编指令:mov ax,18 将18送入ax寄存器 add ax 8 将8与ax内容相加
举例:
再寄存器中的改变情况:
值得注意的是:在进行相加操作的时候要注意内存的溢出,导致出错
每一个内存单元都有唯一的地址,成为物理地址
16位结构的CPU{
1.运算器一次最多可以处理16位的数据;
2.寄存器的最大宽度为16位;
3.寄存器和运算器之间的通路为16位
}
8086CPU给出物理地址的方法:用段地址和偏移地址 计算公式:段地址 X 16 + 偏移地址
如图:
本质含义:CPU在访问内存时,用一个基础地址和一个相对于基础地质的偏移地址相加,给出内存单元的物理地址
段的概念:每一个段有一个段地址,但是内存并不是被划分成一段一段的,而是由于CPU的划分
由于16位地址的寻址能力是64KB,所以一个段的最大长度为64KB
段寄存器:有CS DS SS ES
CS和IP:代码段寄存器和指令指针寄存器
CS和IP的值是可以修改的:Ip每次是根据指令的空间大小进行更新,同时可以用jmp命令