目录
一、8088/8086的功能结构
(1)概括
总线接口单元BIU负责CPU对存储器或外设进行访问(读/取,写/存),执行单元EU是负责指令的译码、执行和数据的运算;两个部件之间相互独立 各自工作 并行执行 实现了指令预取功能。
(2)功能
8088/86流水线功能https://blog.csdn.net/weixin_46629697/article/details/125354653?spm=1001.2014.3001.5501
二、8088/8086的寄存器结构
1.8个16位的通用寄存器
(1)数据寄存器
AX:累加器,在算术运算中是使用较多的一种寄存器且所有的外部设备的输入or输出指令只能使用AL或AX作为数据寄存器。
BX:基址寄存器,用作数据寄存器,在访问存储器也可以存放被RD or WR的存储单元的地址,是一种双向状态的寄存器。
CX:计数寄存器,用作数据寄存器,在字符串操作、循环操作和移位操作时用作计数。
DX:数据寄存器,在乘、除法中作为辅助的一种累加器,在输入 or 输出操作中存放端口的地址。
(2)变址寄存器
SI:源变址寄存器,主要用于存放地址,在字符串操作中存放源操作数的偏移地址,在变址寄存器内存放的地址在数据传送完成后,具有自动修改的功能。
DI:目的变址寄存器,主要用于存放地址,在字符串操作中存放目的操作数的偏移地址。
(3)指针寄存器
SP:堆栈指针寄存器,存放栈顶的偏移地址,供堆栈操作使用
BP:基址指针寄存器,用来存放堆栈内数据的基地址。
2.4个16位的段寄存器
CS:代码段寄存器,存放程序中指令所在内存单元的段首地址,程序代码超过64KB时需要分成几个段存放,CS中存放的是现在正在执行的程序段的段基址。
DS:数据段寄存器,存放当前使用的数据所在内存单元的段首地址,需要第二个数据段时可以使用 附加段寄存器(ES)
SS:堆栈段寄存器,存放内存堆栈段的段首地址,堆栈是内存中的一块存储区,用来存放专用的数据。
3.1个16位的标志寄存器
(1)状态标志
CF:进位标志位,运算结果中最高位(D7 or D15) 如果有进位 or 借位CF=1 ,否则CF=0,一般常表示于无符号数,也可以用于有符号数。
PF:奇偶标志位,看低8位中的1的个数是否为偶数,如果1的个数为偶数PF=1,否则PF=0。
AF:辅助进位标志位,在8位运算中,看低4位有没有在高4位进位 or 借位,如果借位AF=1,否则AF=0,相同的,在16位运算中,看低8位有没有在高8位进位 or 借位。
ZF:零标志位,8位 or 16位运算结果全为0的话ZF=1,否则ZF=0
SF:符号标志位,看最高位(D7 or D15)如果结果为1那么SF=1,结果为0那么SF=0。
OF:溢出标志位,在加法运算中,如果0+0=1 or 1+1=0 那么OF=1,否则OF=0;在减法运算中,如果0-1=1 or 1-0=0那么OF=1,否则OF=0,用于有符号数运算。
(2)控制标志
IF:中断允许标志位,IF=1表示可屏蔽中断,IF标志可通过STI指令置位(为1),也可通过CLI指令复位(为0)。
DF:方向标志位,在串操作指令中,如果DF=0,表示串操作指令执行后地址指针自动增量,串操作由低地址向高地址进行,如果DF=1,表示地址指针自动减量,串操作由高地址向低地址进行,这个标志可通过STD指令置1,也可通过CLD指令清0
TF:单步标志位,TF=1会进入单步工作方式,每执行完一条指令会自动产生一次内部中断。
4.1个16位的指令指针寄存器
IP:存放将要执行的下一条指令在代码段中的偏移地址,运行过程中,BIU自动修改IP中的内容,使它可以指向将要执行的下一条指令,程序并不能直接访问IP,但是可以通过某些指令修改IP的内容。