第02章2.1寄存器的结构
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(5)溢出标志OF(Overflow Flag)
若算术运算的结果有溢出,则OF=1; 否则 OF=0
3AH + 7CH=B6H,产生溢出:OF=1 AAH + 7CH=(1)26H,没有溢出:OF=0
什么是溢出
处理器内部以补码表示有符号数 8位表达的整数范围是:+ 127 ~ 128 • B6H =10110110B,最高位为 1- , 16位表达的范围是:+32767 ~ -32768 作为有符号数是负数 如果运算结果超出这个范围,就产生了溢出 • 对有溢出,说明有符号数的运算结果不正确 B6H求反加1等于:
寄存器是微处理器(CPU)内部暂存数据的存储单 元。 8088/8086的寄存器组有
8个通用寄存器 4个段寄存器 1个标志寄存器 1个指令指针寄存器
图示
它们均为16位! 汇编语言程序员看到的处理器,就是寄存器 所以,一定要熟悉这些寄存器的名称和作用
这个16位寄存器,按其用途可分为 3类:通用寄存器、 段寄存器、控制寄存器。
3AH+7CH=B6H,就是58+124=182, 已经超出-128~+127范围,产生溢出,故OF=1; 补码B6H表达真值是-74,显然运算结果也不正确
01001001B+1=01001010B=4AH=74 • 所以,B6H表达有符号数的真值为-74
溢出和进位的区别
溢出标志OF和进位标志CF是两个意义 不同的标志 进位标志表示无符号数运算结果是否 超出范围,运算结果仍然正确 溢出标志表示有符号数运算结果是否 超出范围,运算结果已经不正确
(2)寄存器阵列
(3)执行部件的控制电路
从总线接口的指令队列取出指令操作码,通过译码电 路分析,发出相应的控制命令,控制ALU数据流向。
2.1.2 总线接口部件BIU
功能:与外部总线相连,负责与存储器或者I/O端口 传送信息。根据执行部件EU的请求,管理预取指令 和存数、取数的实际过程。 组成:
(1)指令队列(8086六字节,8088四字节) 在执行指令的同时,将取下一条指令,并放入指令队 列中。CPU执行完一条指令后,可以接着执行下一条 指令(流水线技术)。提高CPU效率。 (2)地址加法器 (3)寄存器阵列 (4)总线控制逻辑(I/O控制电路)
3AH+7CH=B6H,最高位D7=1:SF=1
84H+7CH=(1)00H,最高位D7=0:SF=0
(4)奇偶标志PF(Parity Flag)
当运算结果最低字节中“ 1” 的个数为 零或偶数时,PF=1;否则PF=0
PF标志仅反映最低8位中“1”的个数是 偶或奇,即使是进行16位字操作 3AH+7CH=B6H=10110110B 结果中有5个“1”,是奇数:PF=0
16位微处理器8086/8088的性能远远优于8位机,不 仅在运行速度、运算能力和寻址范围等纵向能力有很大 提高,还由于具有协处理器接口,横向能力也大为提高。 特别是80286、80386、80486等更高性能的微处理器都 保持了对它的兼容。 8086/8088既有广泛的应用,也有 很好的承上启下 作用。 所以我们以8086/8088为例作重点介绍。
用于串操作指令中,控制地址的变化方向:
设置DF=0,存储器地址自动增加; 设置DF=1,存储器地址自动减少
CLD指令复位方向标志:DF=0
STD指令置位方向标志:DF=1
(8)中断允许标志IF(Interrupt-enable Flag)
控制可屏蔽中断是否可以被处理器响应:
设置IF=1,则允许中断; 设置IF=0,则禁止中断
MPU 等待取指1 执行1 等待取指2 执行2
等待取指3 执行3
总线
忙
闲
忙
闲
忙
闲
传统微处理器的指令执行过程
BIU
EU 总线 忙 取指1 取指2 取指3 取指4 取指5 取指6 执行6
执行1 忙
执行2 忙
执行3 忙
执行4 忙
执行5 忙
8086CPU的指令执行过程
2.1.3 8088/8086的寄存器结构
(2)对指令进行译码,执行指令所规定的全部功能。
( 3 )执行指令所得结果或执行指令所需的数据,都由 EU 向 BIU发出命令,让BIU对存储器或I/O接口进行读/写操作。
执行部件的组成:EU由算术/逻辑运算器ALU,寄存器 阵列,EU控制器组成。
(1)算术逻辑单元ALU
完成8位或者16位二进制算术和逻辑运算,计算偏移量。
控制寄存器
段寄存器
8086CPU内部寄存器结构
2.1.3.1 通用寄存器
8088有8个通用的16位寄存器
(1)数据寄存器: AX BX CX DX (2)变址寄存器: SI DI (3)指针寄存器: BP SP
4个数据寄存器还可以分成高 8位和低8位两 个独立的寄存器,这样又形成 8 个通用的 8 位寄存器
半 进 借 位 标 志
奇 偶 标 志
进 借 位 标 志
1-有进、借位 0-无进、借位
1-低4位向高4位有进、借位 0-低4位向高4位无进、借位
(1)进位标志CF(Carry Flag)
当运算结果的最高有效位有进位(加法)或借 位(减法)时,进位标志置1,即CF=1; 否则CF=0
3AH + 7CH=B6H,没有进位:CF = 0 AAH + 7CH=(1)26H,有进位:CF = 1
IP(Instruction Pointer)为指令指针寄存 器,指示主存储器指令的位置 随着指令的执行, IP 将自动修改以指示下 一条指令所在的存储器位置 IP寄存器是一个专用寄存器 IP 寄存器与 CS 段寄存器联合使用以确定下 一条指令的存储单元地址
2.1.3.3 标志寄存器
标志( Flag )用于反映指令执行结果 或控制指令执行形式 8088 处理器的各种标志形成了一个 16 位的标志寄存器 FLAGS (程序状态字 PSW寄存器)
(6)辅助进位标志AF(Auxiliary Carry Flag)
运算时D3位(低半字节)有进位或
借位时,AF=1;否则AF=0
这个标志主要由处理器内部使用, 用于十进制算术运算调整指令中, 用户一般不必关心 3AH+7CH=B6H,D3有进位:AF=1
(7)方向标志DF(Direction Flag)
(2)零标志ZF(Zero Flag)
若运算结果为0,则ZF=1; 否则ZF=0
注意:ZF为1表示的结果是0
3AH+7CH=B6H,结果不是零:ZF=0
84H+7CH=(1)00H,结果是零:ZF=1
(3)符号标志SF(Sign Flag)
运算结果最高位为1,则SF=1; 否则SF=0
有符号数据用最高有效位表示数据的符号 所以,最高有效位就是符号标志的状态
AX: AH AL CX: CH CL BX: BH BL DX: DH DL
(1)数据寄存器
AX称为累加器(Accumulator)
使用频度最高。用于算术、逻辑运算以及与外设传送信 息等
BX称为基址寄存器(Base address Register)
常用做存放存储器地址
CX称为计数器(Counter)
堆栈(Stack)
(1)堆栈的概念
堆栈是主存中一个特殊的区域,用8088/8086形成的微机系统 中,堆栈区域被称为堆栈段。这片存储区的一端固定,另一 端活动,且只允许数据从活动端进出。采用“先进后出”的 规则 ,而不是随机存取方式。堆栈主要用于暂存数据和在过 程调用或处理中断时暂存断点信息。
2.1.3.2 指令指针寄存器
作为循环和串操作等指令中的隐含计数器
DX称为数据寄存器(Data register)
常用来存放双字长数据的高16位,或存放外设端口地址
(2)变址寄存器
16位变址寄存器SI和DI 常用于存储器变址寻址方式时提供地址
SI是源地址寄存器(Source Index) DI是目的地址寄存器(Destination Index)
在串操作类指令中, SI 、 DI 还有较特殊的 用法
(3)指针寄存器
指针寄存器用于寻址内存堆栈内的数据
SP为堆栈指针寄存器(Stack Pointer), 指示 堆栈段栈顶的位置(偏移地址) BP为基址指针寄存器(Base Pointer),表示 数据在堆栈段中的基地址
SP 和 BP 寄存器与 SS 段寄存器联合使用以确 定堆栈段中的存储单元地址
CLI指令复位中断标志:IF=0
STI指令置位中断标志:IF=1
(9)陷阱标志TF(Trap Flag)
用于控制处理器进入单步操作方式:
设置TF=0,处理器正常工作; 设置TF=1,处理器单步执行指令
第2章 80X86微处理器及其体系结构
2.1 8086/8088的内部结构 2.2 8086/8088的总线周期 2.3 8086/8088的管脚特性 2.4 8086/8088的两种组态模式
2.5 80X86高档微处理器
微型计算机是由具有不同功能的一些部件组成的, 包含运算器和控制器电路的大规模集成电路,称为“微 处理器”,又称“中央处理器(CPU)”,其职能是执 行算术/逻辑运算,并负责控制整个计算机系统,使之能 自动协调地完成各种操作。
2.1
8086/8088的内部结构
8086: • Intel系列的16位微处理器; • 采用高速运算性能的HMOS工艺制造,芯片上集成 了2.9万只晶体管; • 使用单一的+5V电源,40条引脚双列直插式封装; • 时钟频率为5MHz~10MHz; • 16根数据线和20根地址线,可寻址的地址空间达 1MB; • 8086可以和浮点运算器、I/O处理器或其他处理器 组成多处理器系统,从而极大地提高了系统的数据 吞吐能力和数据处理能力。
AH AL BH BL CH CL DH DL SP BP
DI SI
AX BX CX DX
地址加 法器
16位 ALU数 据总线
I/O 控制 电路
暂存寄存器 ALU
外 部 总 线
执行部分 控制电路 执行部件 EU
1 2 3 4 5 6
8位 指令队列缓冲器 总线接口部件 BIU
标志寄存器
8088CPU结构图
AH BH CH DH SP BP SI DI IP FLAGS CS DS SS ES AL BL CL DL 累加器 基址寄存器 计数寄存器 数据寄存器 堆栈指针寄存器 基址指针寄存器 源变址寄存器 目的变址寄存器
数据寄存器 通用寄存器 地址指针和 变址寄存器
指令指针寄存器 标志寄存器
代码段寄存器 数据段寄存器 堆栈段寄存器 附加段寄存器
标志寄存器
总线接口部件 BIU
8086/8088 的内部结构从功能上分成两个单元 1)执行部件EU 负责指令的译码、执行和数据的运算 2)总线接口部件BIU 管理8086/8088与系统总线的接口 负责CPU对存储器和外设进行访问
2.1.1 执行部件EU
功能: EU不与外部系统总线相连,只负责指令的译码和执行。 (1)从指令队列中取出指令。
8088:内部与8086兼容,也是一个16位微处理器,只 是外部数据总线为8位,所以称为准16位微处理器。 它具有包括乘法和除法的16位运算指令,所以能处 理16位数据,还能处理8位数据。8088有20根地址 线,所以可寻址的地址空间达220即1M字节。
8086CPU结构图
通 用 寄 存 器
20位 16位 CS DS SS ES IP 内部寄存 器
OF DF IF TF SF ZF
AF
PF
CF
(6)标志寄存器
1-低8位有偶数个1
16位寄存器,其中有7位未用。 D15
OF DF IF TF SF ZF
0-低8位有奇数个1
D0
AF PF CF
方 向 标 志
单 步 中 断
符 零 号 标 标 志 志
1-结果为0 0-结果不为0
溢 出 标 志
中 断 允 许
通 用 寄 存 器
20位 8位 CS DS SS ES IP 内部寄存 器
AH AL BH BL CH CL DH DL SP BP
DI SI
AX BX CX DX
地址加 法器
ห้องสมุดไป่ตู้
16位 ALU数 据总线
I/O 控制 电路
暂存寄存器 ALU
外 部 总 线
执行部分 控制电路 执行部件 EU
1
2
3
4
8位 指令队列缓冲器
程序设计需要利用标志的状态
标志寄存器的分类: 状态标志--用来记录程序运行结果的状态 信息,许多指令的执行都将相应地设置它
CF ZF SF PF OF AF
控制标志--可由程序根据需要用指令设置, 用于控制处理器执行指令的方式
DF IF TF
标志寄存器FLAGS
15 12 11 10 9 8 7 6 5 4 3 2 1 0