汇编学习2——寄存器(CPU工作原理)

CPU概述:一个典型的CPU由运算器、控制器、寄存器等组成,这些器件由内部总线相连。
寄存器概述:CPU工作时存储数据的器件。8086CPU有14个寄存器:通用寄存器(AX BX CX DX) SI DI SP BP IP 段寄存器(CS SS DS ES) PSW,都是16位。
通用寄存器可以分为两个独立的8位寄存器,以保证兼容性:AX可以分为AH和AL。AL的进数不会放入AH。
一个字word可以存放在一个16位寄存器中。16进制后面加H,2进制后面加B,10进制什么都不加。

汇编指令不区分大小写。
mov ax,18 //将18放入AX
mov ah,78
add ax ,8 //AX=AX+8
mov ax,bx
add ax,bx

CPU访问内存单元时要给出内存单元的地址。所有的内存单元构成的存储空间是一个一维的线性空间,这个唯一的地址为物理地址。
8086内部为16位结构,但有20位地址总线(寻址能力位1MB)。8086使用2个16位地址合并成一个20位地址。物理地址=段地址*16+偏移地址
汇编学习2——寄存器(CPU工作原理)
汇编学习2——寄存器(CPU工作原理)

错误认识:内存被划分了一个一个的段,每个段有一个段地址。
内存并没有分段,段地址来源于2个16位地址合并成一个20位地址。
段是人为理解的概念,以后在编程时可以根据需要,将若干地址连续的内存单元看成一个段,用段地址*16定位段的起始地址(基础地址),用偏移地址定位段中的内存单元。偏移地址位16位,所以一个段的长度最大位64K。
CPU可以使用用不同的段地址和偏移地址形成一个物理地址。
内存单元21F60H可以表示为2000:1F60

8086段寄存器(CS SS DS ES) :
CS为代码段寄存器;IP为指令指针寄存器。他们指示了CPU当前要读取指令的地址。
CPU启动时,从FFFF0H单元中读取指令。
下图步骤:
1.从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器;
2.IP=IP+所读取指令的长度,从而指向下一条指令;
3.执行指令。重复
汇编学习2——寄存器(CPU工作原理)

程序员可以通过改变CS、IP的值来控制CPU执行的指令
同时修改CS、IP的内容:jmp 段地址:偏移地址
仅修改IP的内容:jmp 某一合法寄存器(如jmp ax)

在8086PC中,编程时,可以根据需要,将一组内存单元定义为一个段。
可以将长度为N(N<=64KB)的一组代码,存在一组地址连续、起始地址为16的倍数的内存单元中,这段内存是用来存放代码的,从而定义了一个代码段。