8086寄存器

来源:互联网 发布:淘宝如何加入亲宝贝 编辑:程序博客网 时间:2024/06/05 03:11

8086 所有的寄存器都是16位的,可以存放两个字节

通用寄存器

AX    可分为  AH和AL 

BX    可分为  BH和BL 

CX    可分为  CH和CL 

DX    可分为  DH和DL 

可以作为两个独立使用的8位寄存器来用  AX的低8位构成AL寄存器,高8位构成AH寄存器   在写一条汇编指令或者一个寄存器的名称时不用区分大小写

这4个寄存器用来存放一般性的数据,被称为通用寄存器


段寄存器

CS  DS       SS     ES


CS和IP是8086CPU 中最关键的寄存器,CS为代码段寄存器,IP为指令指针寄存器,任意时刻,CPU将CS:IP指向的内容当作指令执行。执行过程如下:

1    从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器。

2    (IP) = (IP) + 所读取的指令长度,从而指向下一条指令

3    执行指令,转到1,重复。



如果内存中的一段信息曾被CPU执行过,那么它所在的内存单元一定被CS:IP指向过

修改CS,IP内容:

JMP 2AE3:3

执行后 CS=2AE3,IP=0003H

CPU将从2AE33H处读取指令

寻址方式


段地址×16 + 偏移地址 = 物理地址

(段地址×16)显然是16的倍数,所以一个段的起始地址也一定是16的倍数,寻址能力为64KB,所以一个段的长度最大为64KB80


字单元:存放一个字型数据(16位)的内存单元,由两个地址连续的内存单元组成。

CPU要读写一个内存单元的时候,必须先给出这个内存单元的地址(由段地址和偏移地址组成) 8086CPU自动读取DS中的数据作为内存单元的段地址


例如 将AL中的数据送入内存单元10000H中


MOV BX,10000H

MOV DS,BX

MOV [0],AL



ADD  寄存器,寄存器

ADD  寄存器,数据

ADD  寄存器,内存单元

ADD  内存,寄存器



栈操作  PUSH  POP

在8086的CPU中,又两个寄存器,段寄存器SS和寄存器SP,栈顶的段地址存放在SS中,偏移地址存放在SP中,任意时刻,SS:SP指向栈顶元素



我们可以将一段长度为N(N<=64KB)地址连续,起始地址为16的倍数的内存单元当作专门存放数据的内存空间,从而定义了一个数据段

0 0