第二章80x86计算机组织(modify)

上传人:我** 文档编号:116883288 上传时间:2019-11-17 格式:PPT 页数:37 大小:723KB
返回 下载 相关 举报
第二章80x86计算机组织(modify)_第1页
第1页 / 共37页
第二章80x86计算机组织(modify)_第2页
第2页 / 共37页
第二章80x86计算机组织(modify)_第3页
第3页 / 共37页
第二章80x86计算机组织(modify)_第4页
第4页 / 共37页
第二章80x86计算机组织(modify)_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《第二章80x86计算机组织(modify)》由会员分享,可在线阅读,更多相关《第二章80x86计算机组织(modify)(37页珍藏版)》请在金锄头文库上搜索。

1、第二章 80x86计算机组织 计算机系统 存储器 中央处理机 外部设备 存 储 器 I/O 接 口 输 入 设 备 I/O 接 口 数据总线 DB 控制总线 CB 地址总线 AB 输 出 设 备 CPU 一、 计算机系统 程序的执行过程 程序 指令1 指令2 指令3 指令4 指令n 取指令 指令译码 取操作数 执行指令 存结果 指令周期 操作码 操作数 执行 1。CPU如何知道从哪里取出程序的第一条指令?操作系统 2。CPU如何按程序控制流执行指令?程序计数器 3。CPU如何知道从哪里取操作数?地址、寻址方式 例:计算5+8 汇编语言程序对应的机器指令 对应的操作 - - - MOV AL,

2、5 10110000 将立即数1传送到累加寄存器AL中 00000101 ADD AL, 8 00000100 计算两个数的和,结果存放到AL中 00001000 HLT 11110100 停机 指令执行过程见下页图 指令执行过程(取指/译码/执行) 累加器A 加法器 数据寄存器DR 指令寄存器IR 指令译码器ID 时序逻辑电路 时序控制信号(控制命令) 1011 0000 0000 0101 0000 0100 0000 1000 1111 0100 内部总线 存储器 0 1 2 3 4 程序计数器PC 地址 MOV A, 5 ADD A, 8 HLT 地址总线 +1 地 址 译 码 器 读

3、写控制电路 输出地址 1011 0000 锁存指令 锁存数据 置初值 输出指 令地址 锁存地址 读写命令 指令译码 锁存 输出 地址寄存器AR 8086内部结构 内部暂存器 IP ES SS DS CS 总线控制 逻辑 外部总线 执行部分 控制电路 1 2 3 4 5 6 ALU 标志寄存器 AH AL BH BL CH CL DH DL SP BP SI DI 通用寄存器 地址加法器 指令队列缓冲器 执行部件 (EU) 总线接口部件 (BIU) 16位 20位 16位 8位 1执行部件EU 执行部件中包含一个16位的算术逻辑单元(ALU),8 个16位的通用寄存器,一个16位的状态标志寄存器

4、,一个数 据暂存寄存器和执行部件的控制电路。 功能:从BIU的指令队列中取出指令代码,经指令译码 器译码后执行指令所规定的全部功能。执行指令所得结果或 执行指令所需的数据,都由EU向BIU发出命令,对存储器 或I/O接口进行读/写操作。 2总线接口部件BIU 总线接口部件BIU内部设有四个16位段地址寄存器:代 码段寄存器CS、数据段寄存器DS、堆栈段寄存器SS和附加 段寄存器ES,一个16位指令指针寄存器IP,一个6字节指令 队列缓冲器,20位地址加法器和总线控制电路。 主要功能:根据执行部件EU的请求,负责完成CPU与 存储器或I/O设备之间的数据传送。 等待取指1 执行1等待取指2 执行

5、2等待取指3 执行3MPU 总线 忙闲忙闲忙闲 传统微处理器的指令执行过程 取指1取指2取指3取指4取指5取指6 EU 总线 执行1执行2执行3执行4执行5执行6 忙忙忙忙忙忙 BIU 8086CPU的指令执行过程 . 总线接口部件的组成: 总线接口部件负责与存储器、I/O端口传送数据 ,由下列4部分 组成: (1) 4个段地址寄存器(CS、DS、ES、SS) 8086/8088 CPU总线接口部件BIU中设置有4个16位段寄存器 , 它们是代码段寄存器CS,数据段寄存器DS,附加段寄存器ES和 堆栈段寄存器SS。 CS(代码段)指明代码段的起始地址 SS(堆栈段)指明堆栈段的起始地址 DS(

6、数据段)指明数据段的起始地址 ES(附加段)指明附加段的起始地址 每个段寄存器用来确定一个逻辑段的起始地 址,每种逻辑段均有各自的用途 、代码段(Code Segment): 代码段用来存放程序的指令序列 v代码段寄存器CS存放代码段的段地址 v指令指针寄存器IP指示下条指令的偏移地址 处理器利用CS:IP取得下一条要执行的指令 、堆栈段(Stack Segment): 堆栈段确定堆栈所在的主存区域 v堆栈段寄存器SS存放堆栈段的段地址 v堆栈指针寄存器SP指示堆栈栈顶的偏移地址 处理器利用SS:SP操作堆栈顶的数据 、数据段(Data Segment) : 数据段存放运行程序所用的数据 v数

7、据段寄存器DS存放数据段的段地址 v各种主存寻址方式(有效地址EA)得到存储器中操作数的偏移 地址 处理器利用DS:EA存取数据段中的数据 、附加段(Extra Segment) : 附加段是附加的数据段,也用于数据的保存: v附加段寄存器ES存放附加段的段地址 v各种主存寻址方式(有效地址EA)得到存储器中操作数的偏移 地址 处理器利用ES:EA存取附加段中的数据 串操作指令将附加段作为其目的操作数的存放区域 、如何分配各个逻辑段? 程序的指令序列必须安排在代码段 程序使用的堆栈一定在堆栈段 程序中的数据默认是安排在数据段,也经常安排在附加段,尤其 是串操作的目的区必须是附加段 数据的存放比

8、较灵活,实际上可以存放在任何一种逻辑段中 没有指明时,一般的数据访问在DS段;使用BP 访问主存,则在SS段 默认的情况允许改变,需要使用段超越前缀指 令;8086指令系统中有4个: CS:;代码段超越,使用代码段的数据 SS: ;堆栈段超越,使用堆栈段的数据 DS: ;数据段超越,使用数据段的数据 ES: ;附加段超越,使用附加段的数据 、段超越前缀指令 段超越的示例 没有段超越的指令实例: MOV AX,2000H ;AXDS:2000H ;从默认的DS数据段取出数据 采用段超越前缀的指令实例: MOV AX,ES:2000H;AXES:2000H ;从指定的ES附加段取出数据 段寄存器的

9、使用规定 访问存储器的方式默认可超越偏移地址 取指令CS无IP 堆栈操作SS无SP 一般数据访问DSCS ES SS有效地址EA BP基址的寻址方式SSCS ES DS有效地址EA 串操作的源操作数DSCS ES SSSI 串操作的目的操作数ES无DI (2)16位的指令指针寄存器:IP(Instruction Pointer) 8086/8088 CPU中有一个16位指令指针寄存器IP,用 来存放将要执行的下一条指令在代码段中的偏移地址。 在程序运行过程中,BIU自动修改IP中的内容,使它始终 指向将要执行的下一条指令。 注意:程序不能直接访问IP,但是可通过某些指令修改 IP的内容。例如,

10、 执行转移指令时,会将转移的目标地 址送入IP中,以实现程序的转移。 (3) 20位的地址加法器 (4) 6字节的指令队列缓冲器 . 执行部件的组成: AX:称为累加器,是算术运算时使用的主要寄存器,所有外部设备 的输入输出指令只能使用AL或AX作为数据寄存器。 BX:称为基址寄存器,它可以用作数据寄存器,在访问存储器时, 可以存放被读写的存储单元的地址,是具有双重功能的寄存器。 执行部件负责指令的执行 ,由下列几部分组成: 8086/8088 CPU指令执行部件EU中有8个16位通用寄存器,它们可 分成两组。 (1) 4个通用寄存器,即AX、BX、CX、DX: 它们可用来存放16位的数据或地

11、址。也可把它们当作8个8位寄存 器来使用,也就是把每个通用寄存器的高半部份和低半部份分开: 低半部份被命名为AL、BL、CL和DL;高半部份被命名为AH、 BH、CH和DH。8位寄存器只能存放数据而不能存放地址。 CX:称为计数寄存器,它可以用作数据寄存器,在字符串操作 、循环操作和移位操作时用作计数器。 DX:称为数据寄存器,它可以用作数据寄存器,在乘、除法中 作为辅助累加器,在输入输出操作中存放接口的地址。 (2) 4个专用寄存器,即BP、SP、SI、DI; 主要用来存放操作数的偏移地址(即操作数的段内地址)。 SP:称为堆栈指针寄存器,在堆栈操作中存放栈顶的偏移地址。 BP:称为基址指针

12、寄存器,常用作堆栈区的基地址寄存器。 SI:称为源变址寄存器,主要用于存放地址,在字符串操作中存放 源操作数的偏移地址。变址寄存器内存放的地址在数据传送完成后 ,具有自动修改的功能。例如,传送1字节数据后把地址加1,为下 次传送做好准备,变址寄存器因此得名。 DI:称为目的变址寄存器,主要用于存放地址,在字符串操作中存 放目的操作数的偏移地址。 ()控制寄存器 指令指针寄存器IP :是一个16位的寄存器,存放EU要执行的 下一条指令的偏移地址,用以控制程序中指令的执行顺序,实 现对代码段指令的跟踪 。 标志寄存器F :是一个16位的寄存器,共9个标志,其中6个用作 状态标志,3个用作控制标志。

13、 、状态标志:状态标志用来反映EU执行算术和逻辑运算 以后的结果特征。 CF:进位标志 ;PF:奇偶标志 ;AF:辅助进位标志 ZF:零标志 ;SF:符号标志 ;OF:溢出标志 、控制标志 :控制标志是用来控制CPU的工作方式或工 作状态 。 TF:陷阱标志或单步操作标志 :IF:中断允许标志 DF:方向标志 标志寄存器 ( FLAGS / PSW ) 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 条件码标志: 控制标志: OF 溢出标志 DF 方向标志 SF 符号标志 IF 中断标志 ZF 零标志 TF 陷阱标志 CF 进位标志 AF 辅助进位标志 PF 奇偶标

14、志 OF DF IF TF SF ZF AF PF CF 例:ADD AX, BX JO / JC ERROR ? 进位标志CF(Carry Flag) 当运算结果的最高有效位有进位(加法)或借 位(减法)时,进位标志置1,即CF = 1;否则 CF = 0。 3AH + 7CHB6H,没有进位:CF = 0 AAH + 7CH(1)26H,有进位:CF = 1 零标志ZF(Zero Flag) 若运算结果为0,则ZF = 1; 否则ZF = 0 3AH + 7CHB6H,结果不是零:ZF = 0 84H + 7CH(1)00H,结果是零:ZF = 1 注意:ZF为1表示的结果是0 符号标志S

15、F(Sign Flag) 运算结果最高位为1,则SF = 1; 否则SF = 0 3AH + 7CHB6H,最高位D71:SF = 1 84H + 7CH(1)00H,最高位D70:SF = 0 有符号数据用最高有效位表示数据的符号 所以,最高有效位就是符号标志的状态 奇偶标志PF(Parity Flag) 当运算结果最低字节中“1”的个数为零或 偶数时,PF = 1;否则PF = 0 3AH + 7CHB6H10110110B 结果中有5个1,是奇数:PF = 0 PF标志仅反映最低8位中“1”的个数是 偶或奇,即使是进行16位字操作 溢出标志OF(Overflow Flag) 若算术运算的结果有溢出, 则OF1;否则 OF0 3AH + 7CHB6H,产生溢出:OF = 1 AAH + 7CH(1)26H,没有溢出:OF = 0 溢出标志OF(Overflow Flag) 问题 什么是溢出? 溢出和进位有什么区别? 处理器怎么处理,程序员如何运用? 如何判断是否溢出? 什么是溢出 处理器内部以补码表示有符号数 8位表达的整数范围是:127128 16

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号