1.8086CPU中可供编程使用的有14个16位寄存器,按用途可以分成3类:通用寄存器、控制寄存器、段寄存器。
IP是指令指针寄存器,用来控制CPU的指令执行顺序,即里边存放下一条指令的地址。
控制寄存器的内容被称为处理器状态字PSW,用来存放8086CPU在工作过程中的状态。
6个状态标志位:
CF:进位标志,加法时最高位出现进位或减法时最高位出现借位,该位为1.
PF:奇偶标志,当运算结果的低8位中1的个数是偶数时,该位为1.
AF:半进位标志,作字节加法时,若低4位有向高4位的进位,或减法时,低4位有向高4位的借位,该位为1.
ZF:零标志,运算结果是0,该位为1.
SF:符号标志,运算结果最高位为1该位是1.
OF:溢出标志,有溢出,该位是1.
3个控制标志:
TF:陷阱标志,当该位为1时,8086进入单步工作状态,通常用于成语的调试。
IF:中断允许标志,当该位为1,处理器可以响应课屏蔽的中断。
DF:方向标志,若该位为1,串操作指令的地址为自动递减的方向。
2.指令的寻址方式:
每条指令包括操作码字段和地址码(操作数)字段。
要掌握指令的寻址方式,就得明确操作数和运算的结果通常存放的地方:指令的地址码字段、寄存器、存储器的数
据段、堆栈段或附加段。
(1)立即数寻址:直接把操作的数据写在指令中。
指令的目的操作数不允许立即数寻址;立即数作为指令的一部分直接从BIU的指令队列中取出,不占用
总线周期,所以执行速度快、源操作数目的操作数的长度一样、在存储器中立即数是放在代码段。
(2)寄存器寻址:指令所要的操作数已经存储在某寄存器中、或把目的操作数放入寄存器。
指令中的源操作数和目的操作数都允许是寄存器寻址、两操作数的字长要一样、由于存取这种操作完全在
CPU内进行,所以速度快。
(3)存储器寻址方式:
a.直接寻址方式:直接给出寻找的操作数的地址,存储器有效地址EA由位移量给出。
操作数物理地址PA = (DS)*16+EA;
该方式下段地址默认为在数据段寄存器。
b.寄存器间接寻址方式:这种寻址方式的有效地址EA可以直接从基址寄存器(BX或BP)或变址寄存
器(SI或DI)中获得。如果指令中指定的寄存器是BX、SI、DI,则操作数默认在数据段,如果是BP,
默认在 堆栈段。
操作数的物理地址PA = (DS)*16+(BX或SI或DI)
操作数的物理地址PA = (SS)*16+(BP)
c.寄存器相对寻址:操作数的有效地址是由基址寄存器(BX或BP)或变址寄存器(SI或DI)与偏移
地址之和。
操作数的物理地址PA = (DS)*16+(BX或DI或SI)+位移量。
操作数的物理地址PA = (SS)*16+(BP)+位移量。
d.基址变址寻址:有效地址EA = [基址寄存器]+[变址寄存器]。
操作数物理地址PA = (DS)*16+(BX)+(SI或DI)。
操作数物理地址PA = (SS)*16+(BP)+(SI或DI)。
e.相对基址变址寻址:有效地址由基址寄存器,变址寄存器和位移量三部分组成。
操作数物理地址PA = (DS)*16+(BX)+(SI或DI)+位移量。
操作数物理地址PA = (SS)*16+(BP)+(SI或DI)+位移量。
先整理这么多,之后再补充~~以上若有问题,希望指出,谢谢~~