




已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
概述程序是计算机的大脑 计算机能完成人交付的各种任务的原因是计算机能理解并执行人编写的程序 程序是程序设计语言表示形式的求解特定问题操作步骤的集合 要让计算机理解人编写的程序 必须要让计算机理解程序中的各种操作命令 计算机能直接理解的操作命令称作机器指令 计算机中执行机器指令的部件称作中央处理器 在中央处理器的控制下 计算机重复不断地执行一条又一条机器指令 从而完成了人交付的各种各样的数据处理任务 3 1机器指令3 2中央处理器CPU3 3逻辑运算和逻辑指令3 4计算机的组成 如何把算法表示成计算机可理解的形式 首先归纳出所有算法中可能出现的基本操作 然后分别用各种不同的0 1编码来表示这些不同的基本操作 机器指令用0 1编码表示的基本操作称作机器指令 本节主要内容 算法中的基本操作机器指令指令系统 3 1机器指令 简单算法举例计算两个二进制数的和 设被加数放于内存单元x中加数放于内存单元y中内存单元sum为存放和的单元二进制数求和算法为 把内存单元x中的数值加上内存单元y中的数值 其和放于内存单元sum中 3 1 1算法中的基本操作 问题包括了三个内存地址加法操作的0 1编码将会很长 而其他很多操作一般都仅包含一个内存单元地址 这些操作的0 1编码将会很短 为了处理方便和提高效率 我们希望所有操作的编码长度基本相同 解决方法规定每次要处理的数据都先存放在寄存器中 从而缩短机器指令编码的长度 寄存器一种少量的 地址编码较短 临时数据存储单元 二进制数求和问题的算法可以表示为 1 从内存单元x中取出被加数放于寄存器A 2 寄存器A中的数值加上从内存单元y中的数值 其和放于寄存器A中 3 把寄存器A中的数值存于内存单元sum中 上述二进制数求和算法中包含了三种不同的操作 1 从某个内存单元中取出数值放于某个寄存器中 2 把某个寄存器中的数值加上某个内存单元中的数值 其和存于寄存器中 3 把某个寄存器中的数值存于某个内存单元中 算法中的基本7种操作 1 数据传送 如 a 从某个内存单元中取出数值放于某个寄存器中 b 把某个寄存器中的数值放于某个内存单元中 2 算术运算 如 a 把某个寄存器中的数值加上某个内存单元中的数值 其和存于寄存器中 b 把某个寄存器中的数值减去某个内存单元中的数值 其差存于寄存器中 c 把一个寄存器中的数值加上另一个寄存器中的数值 其和存于第三个寄存器中 d 把一个寄存器中的数值减去另一个寄存器中的数值 其差存于第三个寄存器中 3 逻辑运算 如 a 两个寄存器中的数值进行逻辑与 AND 运算结果放于第三个寄存器中 b 两个寄存器中的数值进行逻辑或运算 OR 结果放于第三个寄存器中 c 把某个寄存器中的数值求反 NOT 结果放于另一个寄存器中 4 移位 如 a 按照某个寄存器中的数值把某个寄存器中的数值左移若干位 b 按照某个寄存器中的数值把某个寄存器中的数值右移若干位 5 转移 如 a 转移到某个内存单元地址去执行程序 6 输入 输出 如 a 从键盘输入数据到某个内存单元中 b 把某个内存单元中的数据输出显示在屏幕上 7 控制 如 a 结束程序的运行 只要基本操作集合包括有比上述7类15个基本操作还要少的若干个基本操作 所有算法都可以用这些基本操作来表示 例如 计算两个二进制数乘积计算pro x y根据图3 1所示的方法 可以编写出用基本操作表示的处理该问题的算法 图3 1二进制数相乘 分析图3 1所示的二进制数相乘过程可知 用基本操作表示的两个二进制数相乘的算法如下 1 从内存单元x中取出被乘数放于寄存器A 2 从内存单元y中取出乘数放于寄存器B 3 把寄存器C置为0 4 若寄存器B中最低位为0则转移到步骤 6 5 把寄存器C中的数值和寄存器A中的数值相加 其和存于寄存器C中 6 把寄存器A中的数值左移一位 7 把寄存器B中的数值右移一位 8 若寄存器B中的位数尚未移完 转移到步骤 4 9 把寄存器C中的乘积存于内存单元pro中 机器指令把编码表示的计算机可识别和处理的命令称为机器指令 分析算法中的基本操作可知 所有的基本操作都包含两个信息 1 该操作的功能信息 即要执行什么样的操作 2 该操作的数据处理信息 即要对什么数据进行操作 机器指令的组成 1 操作码表示要执行什么样操作的编码部分 2 操作数表示要对什么数据进行操作的部分 3 1 2机器指令 假设用两个字节 16位 来为机器指令编码 前边4位 操作码 24 16个 后边12位 操作数 机器指令的格式如图3 2所示 规定每个机器指令的操作含义 如 0001表示把某个内存单元中的数值存放到某个寄存器中0010表示把某个寄存器中的数值存放到某个内存单元中 0011表示把某个寄存器中的数值和某个内存单元中的数值相加后结果存入寄存器中 操作数的编码按操作数中所含有的内存地址个数来分 单内存地址 编码很长 功能很强双内存地址 编码长度相对较短三内存地址 编码长度相对很短对于单内存地址方式编码来说 若操作数长度为12位 可以用其中的前2位编码表示寄存器的编号 用后10位编码表示内存单元地址 2位编码共可表示22 4个不同的寄存器 10位编码共可表示最大为210 1024个内存单元地址 假设寄存器编号为00表示寄存器A 寄存器编号为01表示寄存器B 寄存器编号为10表示寄存器C 寄存器编号为11表示寄存器D 假设定义机器指令的操作码为0001表示从某个内存单元中取出数值置于某个寄存器的操作 称为取数操作 则机器指令为 0001000000100000表示从内存单元100000中取出数值置于寄存器A中 假设我们定义机器指令的操作码为0011表示把某个寄存器中的数值加上某个内存单元中的数值 其和存于寄存器的操作 称为加法操作 则机器指令为 0011000000100001表示把寄存器A中的数值加上内存单元100001中的数值 其和存于寄存器A中 假设我们定义机器指令的操作码为0010表示把某个寄存器中的数值存于某个内存单元的操作 称为存数操作 则机器指令为 0010000000100010表示把寄存器A中的数值存于内存单元100010中 假设我们定义机器指令的操作码为0000表示结束程序运行的操作 称为结束操作 则机器指令为 0000000000000000表示结束程序执行 表3 1给出了上述定义下4条机器指令的二进制码和十六进制码表示格式和操作定义 因每个十六进制码表示4位二进制码 所以用十六进制码表示机器指令对人来说更为简洁 内存单元的划分程序区 用于存储程序 数据区 用于存储数据 假设内存为1024字节 程序区和数据区如图3 3所示划分 图3 3内存的划分 对于求解二进制数求和问题 假设 内存单元100000中已存储了二进制数101 内存单元100001中已存储了二进制数111 内存单元100010为保存和数的单元 程序存放于从内存地址0000000001开始的内存单元中 内存以字节为单位编码 即一条机器指令占两个内存单元 那么 二进制数求和问题的程序和数据在内存中的表示形式如下所示 内存地址内存单元内容操作含义00000000010001000000100000从内存100000中取数值置于寄存器A00000000110011000000100001寄存器A的数值加内存单元100001的数值 和存于寄存器A00000001010010000000100010把寄存器A的数值存于内存单元100010中00000001110000000000000000结束程序执行0000100000101数据x 50000100001111数据y 700001000101100和sum的内存单元 指令系统把一台计算机的机器指令集合称为该计算机的指令系统 一般来说 计算机指令系统的指令个数越多 类型越丰富 其功能越强 理论研究和实验都表明 当指令系统的指令个数增加到一定程度时 再增加指令个数不仅不会增强系统的功能 反而会降低系统的功能 机器指令编码方法可以有各种各样的机器指令编码方法 当两台计算机的机器指令编码方法不相同时 对于相同的一组0 1编码表示的机器指令形式的程序 两台计算机的理解和相应的处理将不相同 3 1 3指令系统 机器指令级别兼容当两台计算机对于相同的一组0 1编码表示的机器指令形式的程序理解和相应的处理相同时 我们称这两台计算机是在机器指令级别兼容的 否则称它们在机器指令级别是不兼容的 计算机的字长目前实际使用的计算机的机器指令都是用32位或64位二进制编码的 当机器指令的位数越长时 可编码组合的基本操作就越多 可表示的内存地址也越大 把机器指令的位数称作计算机的字长 计算机的字长越长表示计算机的性能越好 本节主要内容 CPU的基本构成CPU的工作原理机器指令的寻址方式 3 2中央处理器CPU 图3 4CPU的基本构成 3 2 1CPU的基本构成 1 程序计数器由若干位功能类似触发器的电路组成 用来存放即将要执行的机器指令在内存中的地址 CPU就是根据程序计数器得到每一条机器指令在内存中的地址 操作人员首先必须用特殊命令方式给出程序在内存中存放的首地址 这个程序首地址就存放在程序计数器中 在程序顺序执行情况下 通过地址形成器的程序计数器自动加1功能 使程序计数器得到下一条指令在内存中的存放地址 有时程序不是按照顺序方式执行 需要跳转到某一条指令去执行 这可以通过转移指令来实现 转移指令是把指令的内存单元地址部分的值作为新的程序地址值赋给程序计数器 从而实现程序执行顺序的转移 2 地址形成器由加法器以及逻辑电路组成 实现程序计数器的内容自动加1 转移地址的形成 以及根据指令所提供的寻址方式和形式地址信息形成操作数有效地址等功能 地址形成器提供的程序计数器的内容自动加1功能 使程序计数器在每次操作后得到的是下一条机器指令在内存中的地址 从而使CPU可以按顺序从内存中取出一条又一条的机器指令 从而实现了有条不紊的执行程序 3 指令寄存器由若干位功能类似触发器的电路组成 用来存放每次从内存中取出的当前要执行的机器指令 4 通用寄存器通用寄存器通常有若干个 每个由若干位功能类似触发器的电路组成 用来存放当前操作要临时存放的数据 5 变址寄存器由若干位功能类似触发器的电路组成 用来存放变址操作时的变址基址数据 6 加法器部件主要由一个加法器和相关控制电路组成 加法器部件从通用寄存器和内存得到输入数据 主要用来实现两个二进制数的加法运算 通过加法器部件还可以实现二进制数的左移和右移操作 只要在传送时左偏移数位或右偏移数位即可 以及3 3节要讨论的逻辑操作 7 操作码译码器实现操作码的译码 从而使CPU理解当前正在执行的机器指令操作码部分的编码 8 控制器控制器从操作码译码器得到输入 控制器按照每条指令的功能要求 向CPU的上述部件以及计算机的其它组成部件 如内存等 发送控制信号 从而使整个计算机按照每条机器指令的功能有条不紊的执行 控制器的基础信号来源于控制器中时序部件的时序信号 计算机一旦开机 时序部件即开始工作 产生连续不断的时序信号 以3 1 2节的二进制数求和问题sum x y 5 7的机器指令程序为例来讨论CPU的工作原理 计算机接到命令 例如要执行二进制数求和问题程序的命令后 将把该程序在内存中存放的首地址值 本例为内存地址0000000001 赋予CPU的程序计数器 然后进入程序执行状态 在程序执行状态下 CPU根据程序计数器中的数值 0000000001 从内存单元0000000001中取出第一条机器指令 0001000000100000 传送给指令寄存器 3 2 2CPU的工作原理 操作码译码部件分析指令寄存器的操作码 得知执行从地址100000中取数值置于寄存器A 控制器按照操作码译码部件分析得出的操作要求 控制各个部件协调一致地完成 从内存地址100000中取出数值 101 置于寄存器A中 第一条指令执行完后 程序计数器自动加1 形成程序的第二条机器指令在内存中的存放地址 0000000011 CPU根据程序计数器中的数值 0000000011 从内存单元0000000011中取出第二条机器指令 0011000000100001 传送给指令寄存器 操作码译码部件分析指令寄存器的操作码 得知执行寄存器A的数值加内存单元100001的数值 和存于寄存器A 控制器按照操作码译码部件分析得出的操作要求 控制各个部件协调一致地完成 把寄存器A的数值 101 与内存地址100001中取出的数值 111 相加 其和存于寄存器A中 第二条指令执行完后 程序计数器自动加1 形成程序的第三条机器指令在内存中的存放地址 0000000101 CPU根据程序计数器中的数值 0000000101 从内存单元0000000101中取出第三条机器指令 0010000000100010 传送给指令寄存器 操作码译码部件分析指令寄存器的操作码 得知执行把寄存器A中的数值存于内存单元100010中 控制器按照操作码译码部件分析得出的操作要求 控制各个部件协调一致地完成 把寄存器A中的数值 1100 存于内存单元100010中 第三条指令执行完后 程序计数器自动加1 形成程序的第四条机器指令在内存中的存放地址 0000000111 CPU根据程序计数器中的数值 0000000111 从内存单元0000000111中取出第四条机器指令 0000000000000000 传送给指令寄存器 操作码译码部件分析指令寄存器的操作码 结束程序的执行 控制器按照操作码译码部件分析得出的操作要求 控制各个部件协调一致地完成 结束程序的执行 从而结束CPU周而复始的机器指令执行过程 CPU的工作过程 就是如图3 5所示的周而复始的取指令 分析指令和执行指令的过程 这样的过程是从人给出的运行程序的命令开始 直到遇到结束程序执行指令为止 图3 5CPU的工作过程 对于简单的程序 如上述的二进制数求和问题程序 CPU每次取指令的地址都是在上次程序计数器数值的基础上加1条指令的字节个数得到的 我们说程序这样的执行方式为顺序执行方式 但有时程序的执行过程需要转移到某个非顺序的内存单元去 例如3 1 1节的二进制数相乘问题算法 此时需要利用转移指令 CPU处理转移指令的方法是把转移指令的操作数部分的数值赋予程序计数器 从而使CPU取到的下一条指令是非顺序的 机器指令由操作符和操作数两部分组成 操作数在内存中的地址表示方法称为机器指令的寻址方式 机器指令的操作数组成寻址方式设寻址方式为3位 寻址方式用符号x表示 形式地址设形式地址有若干位 形式地址用符号d表示 操作数地址的不同表示方法就可以编码为不同的寻址方式数值 为表示方便 我们用符号EA表示操作数的有效地址 机器指令中常见的寻址方式有如下几种 1 设x 001表示操作数为直接寻址方式 直接寻址就是形式地址d就是操作数的有效地址 即 EA d3 1 2节讨论的操作数地址的表示方法就是直接寻址方式 3 2 3机器指令的寻址方式 2 设x 010表示操作数为间接寻址方式 间接寻址就是形式地址d是操作数的有效地址的地址 我们用括号表示一个内存地址中的数值 则间接寻址方式表示为 EA d 由于此时形式地址d是操作数地址的地址 所以称为间接寻址方式 3 设x 011表示操作数为相对寻址方式 相对寻址就是程序计数器 用符号PC表示 的数值加上形式地址d的数值为操作数的有效地址 即 EA PC d由于此时有效地址EA实际上是相对于程序计数器PC的一个相对值 偏差为形式地址d 所以称为相对寻址方式 4 设x 100表示操作数为变址寻址方式 变址寻址就是变址寄存器 用符号IX表示 的数值加上形式地址d的数值为操作数的有效地址 即 EA IX d变址寻址方式和相对寻址方式的区别是基础地址不同 相对寻址是在程序计数器PC基础上的变化 变址寻址是在变址寄存器IX基础上的变化 显然 变址寻址方式的地址变化范围更大 5 设x 101表示操作数为立即寻址方式 立即寻址就是形式地址d的数值即为操作数 由于立即寻址方式中形式地址d的数值即为操作数 所以立即寻址方式不用到内存中去读取数据 这既可简化有些问题的程序编写 也可提高程序的运行速度 逻辑运算逻辑与 AND 逻辑或 OR 逻辑非 NOT 逻辑指令用于实现逻辑运算的机器指令称为逻辑运算机器指令 简称逻辑指令 一位逻辑运算多位逻辑运算是一位逻辑运算的迭加 即在多位逻辑运算中每一位都是按照一位逻辑运算的定义进行 一个多位逻辑与 AND 运算 例子如下 3 3逻辑运算和逻辑指令 一个多位逻辑或 OR 运算 例子如下 一个多位逻辑非 NOT 运算 例子如下 逻辑指令的使用方法把要进行逻辑运算的一个操作数先存放在一个通用寄存器中 然后用该寄存器中的数值和一个内存单元中的数值做逻辑运算 逻辑运算结果仍存放在通用寄存器中 逻辑指令的应用一种情况是机器状态的检测 在计算机中 计算机很多部件的各种状态组成一个称作状态字的0 1编码 另一种情况是程序设计中的组合条件判断 例如用高级程序设计语言编写的程序中经常有这样的组合条件判断语句 if x 0 x 10 3 4计算机的组成 本节主要内容 计算机硬件的基
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025包头市喜桂图文化旅游开发有限公司招聘讲解员15人笔试参考题库附带答案详解
- 2025年企业安全培训考试试题附参考答案(完整版)
- 2025班组安全培训考试试题答案a4版
- 2025生产经营单位安全培训考试试题附参考答案【黄金题型】
- 2025无线网络基站租赁合同
- 2025合同自我评估示范文
- 2025上海市新全日制劳动合同书
- 2025复印机购销合同 复印机购销合同范本
- 2025建筑材料供货合同模板
- 2025年房屋买卖合同范本2
- 心理健康-如何培养强大的心理韧性
- 影视标书模板
- 2024年中国东方航空技术有限公司招聘笔试参考题库含答案解析
- 小学生飞花令大全
- 2024年九省联考新高考 数学试卷(含答案解析)
- Unit2-social-media-detox课件-高一英语外研版(2019)选择性必修二
- 2023版设备管理体系标准
- 空乘 空中老幼孕乘客服务现状、困难及对策分析
- 01S201室外消火栓安装图集
- 亲子沟通主题班会课件:有效的亲子沟通
- 双语 -【白皮书】新时代的中国绿色发展
评论
0/150
提交评论