寄存器
对程序员来说,CPU中最主要部件是寄存器,可以通过改变寄存器的内容来实现对CPU的控制
不同的CPU,寄存器的个数、结构是不相同的(8086是16位结构的CPU)
-
8086有14个16位寄存器:
通用寄存器
- AX、BX、CX、DX这4个寄存器通常用来存放一般性的数据,称为通用寄存器(有时也有特定用途)
- 通常,CPU会先将内存中的数据存储到通用寄存器中,然后再对通用寄存器中的数据进行运算
- 假设内存中有块红色内存空间的值是3,现在想把它的值加1,并将结果存储到蓝色内存空间
- CPU首先会将红色内存空间的值放到AX寄存器中:mov ax,红色内存空间
- 然后让AX寄存器与1相加:add ax,1
-
最后将值赋值给内存空间:mov 蓝色内存空间,ax
- AX、BX、CX、DX这4个通用寄存器都是16位的, 上一代8086的寄存器都是8位的,为了保证兼容, AX、BX、CX、DX都可分为2个独立的8位寄存器来使用
- H代表高位寄存器
-
L代表低位寄存器
段寄存器
- CS为代码段寄存器,IP为指令指针寄存器,它们指示了CPU当前要读取指令的地址, 任意时刻,8086CPU都会将CS:IP指向的指令作为下一条需要取出执行的指令
-
指令的执行过程
1.从CS:IP指向的内存单元读取指令,然后放入指令缓存器
2.改变IP指针(IP = IP + 所读取指令的长度)
3.执行缓存器中的指令,然后又跳回步骤1,重复执行这个过程
具体步骤如下图所示:
在内存或者磁盘上,指令和数据没有任何区别,都是二进制信息,那么如何区分指令与数据呢?
CPU将CS:IP指向的内存单元的内容看做指令
CPU将DS指向的内存单元的内容看做数据