程序执行两大部件:总线接口单元(BIU) 执行单元(EU)
指令和数据都在内存中
BIU与EU是并行执行的
BIU负责取指令和存取操作数
EU负责译码和指令的执行
8086的8个16位通用寄存器
AX, BX, CX, DX
SI, DI, BP, SP
4个数据寄存器
AX——累加器,使用频度最高,用于算术、逻辑运算以及与外设传送信息等;
BX——基址寄存器,常用做存放存储器地址;数组首地址。
CX——计数器,作为循环和串操作等指令中的隐含计数器;
DX——数据寄存器,常用来存放双字长数据的高16位,或存放外设端口地址。
2个变址寄存器
SI是源变址寄存器
DI是目的变址寄存器
串操作类指令中,SI和DI具有特别的功能
2个指针寄存器
SP为堆栈指针寄存器,指示栈顶的偏移地址
SP不能再用于其他目的,具有专用目的
BP为基址指针寄存器,表示数据在堆栈段中的基地址
SP和BP寄存器与SS段寄存器联合使用以确定堆栈段中的存储单元地址
指令指针IP
指令指针寄存器IP,指示代码段中指令的偏移地址(相当于程序计数器PC)
它与代码段寄存器CS联用,确定下一条指令的物理地址
计算机通过CS : IP寄存器来控制指令序列的执行流程
IP寄存器是一个专用寄存器(区别于通用寄存器)
EIP始终存放下一条要被CPU执行的指令的地址。
有些机器指令可以修改EIP,使程序分支转移到新的地址执行。例如:JMP, RET
标志寄存器
进位标志CF(Carry Flag): 当运算结果的最高有效位有进位(加法)或借位(减法)时,进位标志置1,即CF = 1;否则CF = 0。
零标志ZF(Zero Flag): 若运算结果为0,则ZF = 1;否则ZF = 0
符号标志SF(Sign Flag):运算结果最高位为1,则SF = 1;否则SF = 0
奇偶标志PF(Parity Flag):当运算结果最低字节中"1"的个数为零或偶数时,PF = 1;否则PF = 0
溢出标志OF(Overflow Flag):若算术运算的结果有溢出,则OF=1;否则 OF=0
注:"溢出标志"在有符号运算中有意义,"进位"在无符号运算中有意义
辅助进位标志AF(Auxiliary Carry Flag):运算时D3位(低半字节)有进位或借位时,AF = 1;否则AF = 0。用户一般不必关心。
方向标志DF(Direction Flag):用于串操作指令中,控制地址的变化方向:设置DF=0,存储器地址自动增加;设置DF=1,存储器地址自动减少。(CLD指令复位方向标志:DF=0;STD指令置位方向标志:DF=1)
中断允许标志IF(Interrupt-enable Flag):用于控制外部可屏蔽中断是否可以被处理器响应:设置IF=1,则允许中断;设置IF=0,则禁止中断。(CLI指令复位中断标志:IF=0;STI指令置位中断标志:IF=1)
陷阱标志TF(Trap Flag):用于控制处理器进入单步操作方式:设置TF=0,处理器正常工作;设置TF=1,处理器单步执行指令。
4个段寄存器
CS(代码段)指明代码段的起始地址
SS(堆栈段)指明堆栈段的起始地址
DS(数据段)指明数据段的起始地址
ES(附加段)指明附加段的起始地址