CPU的内部结构由于汇编语言是建立在机器指令基础之

上传人:平*** 文档编号:47526385 上传时间:2018-07-02 格式:PPT 页数:40 大小:100.65KB
返回 下载 相关 举报
CPU的内部结构由于汇编语言是建立在机器指令基础之_第1页
第1页 / 共40页
CPU的内部结构由于汇编语言是建立在机器指令基础之_第2页
第2页 / 共40页
CPU的内部结构由于汇编语言是建立在机器指令基础之_第3页
第3页 / 共40页
CPU的内部结构由于汇编语言是建立在机器指令基础之_第4页
第4页 / 共40页
CPU的内部结构由于汇编语言是建立在机器指令基础之_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《CPU的内部结构由于汇编语言是建立在机器指令基础之》由会员分享,可在线阅读,更多相关《CPU的内部结构由于汇编语言是建立在机器指令基础之(40页珍藏版)》请在金锄头文库上搜索。

1、l第二章 IBM PC 微型计算机 2.1 8086/8088CPU的内部结构l由于汇编语言是建立在机器指令基础之上的 ,是一种描述硬件运作的语言,所以要学习 汇编语言,必须对它对应的硬件结构先作了 解。l特别是对于CPU,因为每一种CPU都有自己 的指令系统,必须先对CPU的内部结构和工 作机制作一个概要的理解。l一般CPU由如下三个部分组成:l(1) 控制器:计算机系统中控制所有功能部件 (包括控制器本身)协同工作,自动执行计 算机程序的功能部件,它通过对机器指令进 行译码得到所需的控制信号,并根据时钟信 号使各种控制信号在适当的时刻产生,从而 产生一系列时序过程来完成指令所要求的操 作。

2、l(2) 运算器:计算机系统中加工、处理数据的 功能部件,其功能包括算术运算和逻辑运算 。l(3) 寄存器:CPU内部一般提供一组零散的存 储单元,每一个存储单元都能存储二进制数 据,并且都有自己独特的功能和相应的名称 ,这一组CPU内部的存储单元通常称为寄存 器。l8086和8088CPU内部结构大致是一致的,内 部处理的最大二进制数都是16位的,只不过 8086针对的数据总线是16位的,8088是8位 的,l也就是说,只是CPU的外部引脚有所区别。 8086/8088CPU内部结构大致如教材上P18的 图2-3所示。lCPU中的寄存器:8086CPU中总共有14个物 理寄存器,逻辑上的寄存

3、器有22个,下面就 它们的功能分别来讨论。参见教材P20图2-5 l(a) 段寄存器:包括CS(Code Segment )、SS(Stack Segment)、DS(Data Segment)、ES(Extra Segment)四个16 位物理寄存器,用于存放程序所要使用的4个 存储段的段基值,分别对应于内存中的四块 存储区域,代码段、堆栈段、数据段、附加 段。l段:内存中一段连续的空间,在程序中具有 特定的用途。l每个程序都可能会使用这样四个段,其中代 码段是必须的,实用的程序通常至少包含代 码段、堆栈段、数据段。l代码段用于存放程序的机器指令序列;l堆栈段用于存放程序使用堆栈指令所保存的

4、 数据,自动保存的断点等信息;l数据段存放程序直接使用的数据;l附加段中的内容不确定,可以由程序开发人 员根据实际需要自己决定。l(b)地址指针寄存器:包括BX、SI、DI、 BP、SP、IP五个16位寄存器,用于存放逻 辑地址的偏移量或者偏移量的一部分(分量 )l其作用在寻址时类似于游标,通过相对于段 基址的相对字节距离来定位具体的字节或字 单元。lBX称为基址寄存器,可以用于存放偏移量 或者是偏移量的一部分(后面介绍指令寻址 方式时会详细分析),通常和DS、ES这两 个段寄存器配合使用,用于定位数据段或附 加段中的内存单元;lSI称为源变址寄存器,用于存放偏移量或者 是偏移量的一部分,通常

5、和DS、ES这两个 段寄存器配合使用,用于定位数据段或附加 段中的内存单元。l在串操作指令中,SI用于指明源串偏移量, 所以被称为源变址寄存器。lDI称为目的变址寄存器,用于存放偏移量或 者是偏移量的一部分,通常和DS、ES这两 个段寄存器配合使用,用于定位数据段或附 加段中的内存单元。l在串操作指令中,DI用于指明目的串偏移量 ,所以被称为目的变址寄存器。lBP称为基址指针寄存器,用于存放偏移量 ,通常和SS段寄存器配合使用,用于定位 堆栈段中的内存单元。lSP称为堆栈指针,用于存放偏移量,只能 和SS段寄存器配合使用,且始终指向堆栈 的栈顶,在堆栈指令中隐含的使用它来定位 栈顶数据。lIP

6、称为指令指针,用于存放偏移量,只能和 CS段寄存器配合使用,且始终指向代码段中 下一条将要读取到CPU指令队列的那条指令 ;l修改IP中内容的操作是CPU在每读取一条指 令到指令队列后自动进行的,使它指向要读 取的下一条指令。l跳转指令中可以隐含的修改IP寄存器中的内 容。l(c) 数据寄存器:包括AX、BX、CX、 DX这样4个16位的寄存器l在逻辑上一个16位的数据寄存器可以看成是3 个寄存器例如AX,可以把它作为一个16位 的数据寄存器来使用,也可以把它的高低8位 分开,高8位为AH寄存器,低8位为AL寄存 器l在使用上要注意逻辑上不同的寄存器可能在 物理上是相互覆盖的。l这里的寄存器B

7、X在上面提到过,它既可以用 作数据寄存器,也可以用作地址指针寄存器 。l(d)标志寄存器:8086CPU提供一个16位 的标志寄存器FR,对这个寄存器的使用在指 令中往往是隐含的。l值得注意的是,FR是按位操作的,每一个二 进制位都有自己特定的含义,具体每一位的 含义可以参见教材P23的图2-8及其说明。l一般在汇编语言程序中的运算指令或者标志 位控制指令会影响特定标志位。l可以通过转移指令来判断标志位的变化,从 而实现程序中的分支结构或者循环结构。标 志寄存器是实现程序中分支、循环结构的重 要硬件基础。l)进位标志位CF(Carry Flag):在CPU 进行算术运算指令时,如果该指令要影响

8、CF 标志,并且用户把操作数看作无符号数,那 么该标志位是有效标志。l它标志着上次算术运算最高位(对字操作是 第15位,字节是第7位)是否产生进位(加法 指令)或者借位(减法指令)。l如果有进位或借位产生,那么CF=1;如果没 有,那么CF=0。CF标志位位于FR的第0位 。l例1观察下面的加减法运算,判断最后CF 标志应该为什么值,注意,算术运算中的操 作数必须理解为无符号数,这样CF标志的值 才有意义。l 10110011l+ 01010001l1 00000100l这次字节的加法运算后,最高位向更高一位 产生了进位,CF应该等于1。l00110000l+00001101l00011110

9、1l这次字节的加法运算后,最高位没有向更高 一位产生进位,CF应该等于0。l01010101l- 00111110l000010111l这次字节的减法运算后,最后位没有向更高 一位产生借位,CF应该等于0。l)奇偶标志位PF(Parity Flag):如果 CPU所执行的指令要影响PF标志,并且该指 令得到的数据结果低8位中含有偶数个“1”时 ,PF=1;含有奇数个“1”,PF=0。l注意无论指令的操作数有多么长,只有低8位 数据中1的个数能够影响到PF标志的取值。lPF标志位位于FR的第2位。l)辅助进位标志位AF(Auxiliary Carry Flag): 在CPU执行算术运算指令时,如

10、果该指令要影响AF 标志,并且用户把操作数看作无符号数,AF标志才 有意义。l如果低字节中的低4位向高4位产生进位或借位时( 也就是第3位向第4位产生进位或借位),AF被置为 1;如果低4位没有向高4位产生进位或借位,AF被 置为0。lAF标志,又称半进位标志,位于FR的第4位。l判别标准:和CF一样,使用无符号数的加减运算来 作判断,只是判断进位和借位的位置不在操作数的 最高位,而是在低字节的第3位。l4)零值标志位ZF(Zero Flag):如果CPU 执行的指令要影响ZF标志,并且保证ZF标志 是有意义的,那么当指令得到的结果数据各 位全为“0”时,则ZF置“1”,否则ZF置“0”。ZF

11、 标志位位于FR的第6位。l实用价值:ZF标志的使用主要是进行比较, 并根据比较的结果来进行程序的分支或循环 。例如,对两个整数进行比较,即对两个整 数进行相减的操作,如果两个数是相等的, 那么结果为0,ZF=1;如果不等,那么结果 非0,ZF=0。l5)符号标志位SF(Sign Flag):如果CPU 执行的指令要影响SF标志,并且用户把指令 得到的结果数据看作带符号数,那么当结果 为负数时,SF置“1”;当结果为正数时,SF 置“0”。l也就是说,SF标志位的取值和结果数据的最 高位是一致的,因为补码的最高位就是符号 位。lSF标志位位于FR的第7位。l(6)溢出标志位OF(Overflo

12、w Flag):如 果CPU执行算术运算指令,并且用户把操作 数看作带符号数时,OF标志位的取值才有意 义。l如果运算结果超出了补码的表示范围(对字 节来说,是-128到127,对字来说,是- 32768到32767),那么解释为溢出,OF置 为1;如果运算结果没有超出补码的表示范围 ,OF置为0。lOF标志位位于FR的第11位。l7)单步(或跟踪)标志位TF(Trace Flag):前 面讲到的标志位都属于状态标志位,是指令根据自 己的执行情况而为后续指令留下的一些可供参考的 状态信息。lTF标志位是一个控制标志位,和前面所讲的标志位 功能不同,它是用于触发单步中断的。l如果使用指令将TF标

13、志位置为1,那么CPU将进入 单步执行指令的工作方式,每执行完一条指令就会 触发单步中断,执行单步中断服务程序,一般会在 屏幕上显示CPU内部各寄存器和标志位的状态,以 便用户观察该指令产生的影响。l进入中断时,TF标志会自动被清0,所以中 断服务程序的执行并不会出现单步执行的情 况,中断服务程序结束后TF标志会恢复中断 以前的设置。lTF标志为用户单步调试自己的程序提供了相 应的硬件基础。如果使用指令将TF标志清0 ,那么将会使CPU退出单步运行模式,回到 连续执行机器指令的状态。TF标志位位于FR 的第8位。l(8)中断标志位IF(Interrupt-enable Flag ):这也是一个

14、控制标志位,用于控制CPU 是否处理可屏蔽中断。l如果使用指令将IF标志置为1,那么CPU将 会处理任何可屏蔽中断,如果使用指令将IF 标志置为0,那么CPU将不会处理可屏蔽中 断。IF标志位位于FR的第9位。l注意,IF标志只能屏蔽可屏蔽中断,对于一 些由严重错误或故障引起的不可屏蔽中断则 是无法屏蔽的。l(9)方向标志位DF(Direction Flag):这 也是一个控制标志位,用于控制串操作指令 存取数据的方向.l如果使用指令将DF标志置为0,每执行完一 次串操作以后,源串地址指针SI和目的串地 址指针DI中的内容会自动递增;l如果使用指令将DF标志置为1,那么每执行 完一次串操作以后

15、,SI和DI中的内容会自动 递减。l寄存器的分类可以参见教材P20图2-5,地址 指针寄存器和数据寄存器统称为通用寄存器 ,总共有8个,除了各自特殊的功能外,它们 都可以用于存放数据;l指令指针和标志寄存器统称为控制寄存器, 指令指针直接控制机器指令的执行流程,标 志寄存器可以由标志位间接影响机器指令的 执行流程或者运算结果;l段寄存器用于指示当前运行程序中可以使用 的4个当前段。主存储器l221 8086/8088系统中主存储器的编址 方式以及数据的存放方式l 主存储器就是前面提到的内部存储器,简 称内存,它是以字节为单位进行存储单元编 址的。也就是说,内存中每一个字节都有自 己独一无二的地

16、址,CPU读写内存中的数据 最小单位为字节。l8086/8088系统中地址线有20条,每个地址可以用 20位的无符号二进制数来表示,为了表达方便,在 程序中常常使用5位16进制数来表示内存单元的地 址。l系统的寻址范围为00000H到0FFFFFH,可以寻址 1MB的内存空间。内存中字节的编址可以参见教材 P24的图2-9。lCPU访问内存中的数据,可以以字节为单位,也可 以以字为单位。l字节是基本单位。一个字数据(16位)在内存中将 占据相邻的两个字节单元,数据的低8位存放在低 地址单元;高8位存放在高地址单元。l例1把16位数据5342H放入地址为20000H 的字单元,试说明其存放方式。l20000H:42Hl20001H:53Hl例2参见教材P25图2-10,试说明CPU读取地址为 10000H、10002H的字节单元时,将分别读取到什 么样的数据,读取地址为10000H、10001H的字单 元时,将分别读取到什么样的数据。l10000H:56H(字节) l10002H:12H(字节) l10000H:3456H(字) l10

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

当前位置:首页 > 中学教育 > 教学课件

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