前言:公号 「编程有料」后台回复 “大礼包” 即可获取近1000本助力你编程之路的电子书
1,Intel 8086 的功能结构(重点)
-
16位处理器、40脚的DIP(双列直插)封装。
-
时钟频率:5MHz、8MHz和10MHz。
-
20条地址线,有220 =1024KB=1MB寻址能力。
内部组成结构图如下:
-
总线接口部件BIU(Bus Interface Unit)
外部总线连接,完成EU所需的总线操作,计算形成20位的物理地址。
从内存储器中取出指令送指令队列排队。
按EU的要求读写内存、IO中的操作数。
-
执行部件EU(Execution Unit)的功能
从指令队列获得指令,译码、执行指令操作。
译码指令、执行算术运算、逻辑运算。
向BIU提供操作数的内存或l/O端口的地址。
管理标志寄存器和指令操作数。
EU和BU独立并行流水线工作,比8085串行操作提高了运行速度。同时,我们需要知道Intel 8086 内部寄存器的组成有:8个通用寄存器,4个段寄存器,1个指令指针寄存器,1个标志寄存器。
- 8086的16位通用寄存器是:
AX BX CX DX
SI DI BP SP
其中前4个数据寄存器都还可以分成高8位和低8位两个独立的寄存器 。
- 8086 的8位通用寄存器是:
AH BH CH DH
AL BL CL DL
对其中某8位的操作,并不影响另外对应8位的数据。
-
段寄存器
DS数据段寄存器(Data Segment)
CS 代码段寄存器(Code Segment)
ES 附加段寄存器(Extra Segment)
SS堆栈段寄存器(Stack Segment)
这些段寄存器的内容与有效的地址一起,用于确定内存的物理地址。通常用CS、 DS、ES以及SS用于确定代码段、数据段、附加段以及堆栈段的基地址。
-
指令指针IP
- 指令指针寄存器IP,指示代码段中指令的偏移地址。
- 它与代码段寄存器CS 联用,确定下一条指令的物理地址。
- 计算机通过CS:IP 寄存器来控制指令序列的执行流程。
- IP 寄存器是一个专用寄存器。
-
标志寄存器
标志(Flag)用于反映指令执行结果或控制指令执行形式
8086处理器的各种标志形成了一个16位的标志寄存器FLAGS(程序状态字PSW寄存器)
标志的分类
-
进位标志CF (Carry Flag)
当运算结果的最高有效位有进位(加法)或借位(减法)时,进位标志置1,即CF =1;否则CF =0。
-
零标志位ZF (Zero Flag)
若运算结果为0,则ZF=1;否则ZF=0。
注意:ZF为1表示的结果为0
-
符号标志位SF(Sign Flag)
运算结果的最高位为1,则SF=1;否则SF=0
-
奇偶标志位PF(Parity Flag)
当运算结果最低字节中“1” 的个数为零或偶数时,PF=1;否则PF=0。
注意:PF标志仅反映最低8位中“1”的个数是偶或奇,即使是进行16位字操作。
-
溢出标志位OF(Overflow Flag)
若运算结果有溢出,则OF=1;否则OF=0
-
方向标志位DF (Direction Flag)
用于串操作指令中,控制地址的变化方向:设置DF=0,存储器地址自动增加;设置DF=1,存储器地址自动减少。
-
中断允许标志IF(Interrupt-enable Flag)
用于控制外部可屏蔽中断是否可以被处理器响应:
- 设置IF=1,则允许中断;
- 设置IF=0,则禁止中断。
-
2,Intel 8086 的存储组织及其寻址(难点)
-
存贮器的物理地址
以字节为最小基本存储单元的顺序编址。
从00000H到FFFFFH个单元的20位绝对地址。(220=1024K=1MB空间)
-
存贮器数据存储字
-
节数据
8位,对应每一地址存储一个数据
-
字数据
16位,连续2个字节数据构成一个字高8位字节对应高位地址,低8位字节对应低位地址。字的地址:为低8位字节的地址
-
-
主存储器的分段机构
8086CPU将1MB空间分成许多逻辑段(Segment)
描述一个存储单元的地址就需要描述它在哪个段以及段内在什么位置。
-
段地址:也叫段基址,用16位二进制数表示。
-
偏移地址:也叫有效地址,段内地址的顺序编号,用16位二进制数表示。
-
段地址:段内偏移地址的表示方法称逻辑地址。如:
2000H:100H
-
-
物理地址和逻辑地址的转换
- 物理地址PA=段地址×16+偏移地址(EA)
- 一个物理地址可以有多个逻辑地址
-
物理地址和逻辑地址的使用场合
物理地址:CPU访问内存时使用
逻辑地址:程序员描述内存单元的地址时使用