资源预览内容
第1页 / 共37页
第2页 / 共37页
第3页 / 共37页
第4页 / 共37页
第5页 / 共37页
第6页 / 共37页
第7页 / 共37页
第8页 / 共37页
第9页 / 共37页
第10页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第二章 80x86计算机组织 计算机系统 存储器 中央处理机 外部设备 存 储 器 I/O 接 口 输 入 设 备 I/O 接 口 数据总线 DB 控制总线 CB 地址总线 AB 输 出 设 备 CPU 一、 计算机系统 程序的执行过程 程序 指令1 指令2 指令3 指令4 指令n 取指令 指令译码 取操作数 执行指令 存结果 指令周期 操作码 操作数 执行 1。CPU如何知道从哪里取出程序的第一条指令?操作系统 2。CPU如何按程序控制流执行指令?程序计数器 3。CPU如何知道从哪里取操作数?地址、寻址方式 例:计算5+8 汇编语言程序对应的机器指令 对应的操作 - - - MOV AL, 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 地 址 译 码 器 读写控制电路 输出地址 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位的状态标志寄存器,一个数 据暂存寄存器和执行部件的控制电路。 功能:从BIU的指令队列中取出指令代码,经指令译码 器译码后执行指令所规定的全部功能。执行指令所得结果或 执行指令所需的数据,都由EU向BIU发出命令,对存储器 或I/O接口进行读/写操作。 2总线接口部件BIU 总线接口部件BIU内部设有四个16位段地址寄存器:代 码段寄存器CS、数据段寄存器DS、堆栈段寄存器SS和附加 段寄存器ES,一个16位指令指针寄存器IP,一个6字节指令 队列缓冲器,20位地址加法器和总线控制电路。 主要功能:根据执行部件EU的请求,负责完成CPU与 存储器或I/O设备之间的数据传送。 等待取指1 执行1等待取指2 执行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(数据段)指明数据段的起始地址 ES(附加段)指明附加段的起始地址 每个段寄存器用来确定一个逻辑段的起始地 址,每种逻辑段均有各自的用途 、代码段(Code Segment): 代码段用来存放程序的指令序列 v代码段寄存器CS存放代码段的段地址 v指令指针寄存器IP指示下条指令的偏移地址 处理器利用CS:IP取得下一条要执行的指令 、堆栈段(Stack Segment): 堆栈段确定堆栈所在的主存区域 v堆栈段寄存器SS存放堆栈段的段地址 v堆栈指针寄存器SP指示堆栈栈顶的偏移地址 处理器利用SS:SP操作堆栈顶的数据 、数据段(Data Segment) : 数据段存放运行程序所用的数据 v数据段寄存器DS存放数据段的段地址 v各种主存寻址方式(有效地址EA)得到存储器中操作数的偏移 地址 处理器利用DS:EA存取数据段中的数据 、附加段(Extra Segment) : 附加段是附加的数据段,也用于数据的保存: v附加段寄存器ES存放附加段的段地址 v各种主存寻址方式(有效地址EA)得到存储器中操作数的偏移 地址 处理器利用ES:EA存取附加段中的数据 串操作指令将附加段作为其目的操作数的存放区域 、如何分配各个逻辑段? 程序的指令序列必须安排在代码段 程序使用的堆栈一定在堆栈段 程序中的数据默认是安排在数据段,也经常安排在附加段,尤其 是串操作的目的区必须是附加段 数据的存放比较灵活,实际上可以存放在任何一种逻辑段中 没有指明时,一般的数据访问在DS段;使用BP 访问主存,则在SS段 默认的情况允许改变,需要使用段超越前缀指 令;8086指令系统中有4个: CS:;代码段超越,使用代码段的数据 SS: ;堆栈段超越,使用堆栈段的数据 DS: ;数据段超越,使用数据段的数据 ES: ;附加段超越,使用附加段的数据 、段超越前缀指令 段超越的示例 没有段超越的指令实例: MOV AX,2000H ;AXDS:2000H ;从默认的DS数据段取出数据 采用段超越前缀的指令实例: MOV AX,ES:2000H;AXES:2000H ;从指定的ES附加段取出数据 段寄存器的使用规定 访问存储器的方式默认可超越偏移地址 取指令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的内容。例如, 执行转移指令时,会将转移的目标地 址送入IP中,以实现程序的转移。 (3) 20位的地址加法器 (4) 6字节的指令队列缓冲器 . 执行部件的组成: AX:称为累加器,是算术运算时使用的主要寄存器,所有外部设备 的输入输出指令只能使用AL或AX作为数据寄存器。 BX:称为基址寄存器,它可以用作数据寄存器,在访问存储器时, 可以存放被读写的存储单元的地址,是具有双重功能的寄存器。 执行部件负责指令的执行 ,由下列几部分组成: 8086/8088 CPU指令执行部件EU中有8个16位通用寄存器,它们可 分成两组。 (1) 4个通用寄存器,即AX、BX、CX、DX: 它们可用来存放16位的数据或地址。也可把它们当作8个8位寄存 器来使用,也就是把每个通用寄存器的高半部份和低半部份分开: 低半部份被命名为AL、BL、CL和DL;高半部份被命名为AH、 BH、CH和DH。8位寄存器只能存放数据而不能存放地址。 CX:称为计数寄存器,它可以用作数据寄存器,在字符串操作 、循环操作和移位操作时用作计数器。 DX:称为数据寄存器,它可以用作数据寄存器,在乘、除法中 作为辅助累加器,在输入输出操作中存放接口的地址。 (2) 4个专用寄存器,即BP、SP、SI、DI; 主要用来存放操作数的偏移地址(即操作数的段内地址)。 SP:称为堆栈指针寄存器,在堆栈操作中存放栈顶的偏移地址。 BP:称为基址指针寄存器,常用作堆栈区的基地址寄存器。 SI:称为源变址寄存器,主要用于存放地址,在字符串操作中存放 源操作数的偏移地址。变址寄存器内存放的地址在数据传送完成后 ,具有自动修改的功能。例如,传送1字节数据后把地址加1,为下 次传送做好准备,变址寄存器因此得名。 DI:称为目的变址寄存器,主要用于存放地址,在字符串操作中存 放目的操作数的偏移地址。 ()控制寄存器 指令指针寄存器IP :是一个16位的寄存器,存放EU要执行的 下一条指令的偏移地址,用以控制程序中指令的执行顺序,实 现对代码段指令的跟踪 。 标志寄存器F :是一个16位的寄存器,共9个标志,其中6个用作 状态标志,3个用作控制标志。 、状态标志:状态标志用来反映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 奇偶标志 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 符号标志SF(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
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号