1.通用寄存器(16位的)
1.数据寄存器(4个16位寄存器;也可当作8个8位的寄存器去使用)
分为:累加器AX;基址寄存器BX;计数器CX;数据寄存器DX
4个16位的寄存器又可分为8个8位的数据寄存器(AH,AL,BH,BL,CH,CL,DH,DL)
CX寄存器既可以做数据寄存器,又可以在移位指令和串指令当中作计数器用
BX基址寄存器除可作数据寄存器外,还可放内存的逻辑偏移地址
2.指针寄存器和变址寄存器
指针和变址寄存器一般用来保存存放主存地址的偏移地址(即相对于段起始地址的距离),用于参与地址运算。
另外他们也可以作为16位通用寄存器存放操作数和结果)
指针寄存器分为:堆栈指针寄存器(SP),基址指针寄存器(BP)
变址寄存器分为:源变址寄存器(SI),目的变址寄存器(DI)
SI:source index DI:destination index
SP:指出当前在堆栈中栈顶的位置,入栈(PUSH)和出栈(POP)由SP给出当前栈顶的偏移地址
**BP:**指出要处理的数据在堆栈段的起始地址。特别值得注意的是:凡是包含BP的寻址方式中,其段地址由SS段寄存器提供,也就是说,该寻址方式是对堆栈区的存储单元进行寻址的。
**SI和DI:**在某些间接寻址方式中,用来存放段内偏移量的全部或者一部分。在字符串操作指令中,SI用作源变址寄存器,DI用作目的变址寄存器。
2.专用寄存器
1.段寄存器
在8086系统中,访存存储器的地址由两部分组成:段基址和偏移地址。段寄存器提供各个逻辑段的段基址并且指示当前使用的逻辑段。分为,数据段寄存器(DS),代码段寄存器(CS),堆栈段寄存器(SS),附加段寄存器(ES)
DS:提供当前程序中的数据所使用的数据所存放的段基址
**CS:**存放代码所在段的段基址,相应的偏移地址在IP中取得
**SS:**指出当前堆栈的底部地址,即存放堆栈段的段基址
**ES:**指出程序附加数据段的段基址,该段是串操作指令中的目的串所在的段。
2.控制寄存器
包含✨指令指针寄存器(IP)和标志寄存器(FLAGS)
🚩注意:此处的是:指令指针!寄存器,而不是指针寄存器,要分清
**指令指针寄存器IP:**用来存放下一条要执行的指令在代码段的偏移地址,程序员不能直接使用,它具有自动加1的功能。每当执行一次取指令操作,它将自动加1,总是指向下一条要取得指令在现行代码段得偏移地址,它与CS相结合,形成指向指令存放单元得物理地址,每取一个字节,IP加1,每取一个字,IP加2.
标志寄存器: 是一个16位得寄存器,但是实际上8086只用到9位。其中,6位是状态标志位,3位是控制标志位。
状态标志位:
CF:D7或D15有向上一位进位的情况,CF=1
ZF:结果全是0,ZF=1
OF:溢出,OF=1
PF:奇偶校验,奇校为0,偶校为1
SF:符号,负1正0
AF:辅助进位,D3上D4进位或D4向D3上的借位,AF=1