东北大学-计算机硬件技术基础

CPU执行指令的步骤

取指令 Fetch
指令译码 Decode
执行指令 Execute
回写 Write-back
修改指令指针
  1. 取指令
    将CS和IP的内容通过地址加法器得到指令的物理地址,经地址译码器选址后将指定单元中的指令取入CPU的IR当中。

  2. 译码
    ID对IR中的指令进行译码,分析指令的操作码(执行什么操作)和操作数(具体数,存放位置),以及操作结果的存放位置,并由控制器向存储器,运算器等有关部件发出指令所需要的微命令,如:取操作数,运算等。

  3. 执行:

  • 如果操作数在CPU内部的寄存器中,则直接将操作数送往运算器
  • 如果操作数在存储器中,则由控制器根据指令给出的地址,从指定的存储单元取得操作数,经数据暂存器送往运算器。
  • 如果操作结果要写入存储器,由控制器根据写入地址,将数据经由数据暂存器写入指定的存储单元,或者按照指令要求写入CPU内部的寄存器。
  1. 修改指令指针
    IP的内容自动修正(根据DF来决定加还是减)指向要执行的下一条指令。遇到转移指令时,控制器会把转移地址送入IP来更新内容

RESET信号

当CPU接收到有效的RESET信号且至少维持4个时钟周期,不管之前在执行什么动作,只要正常供电,8086就结束现行操作,进入复位状态,直到RESET信号失效。在复位状态下,CPU内部的各寄存器被置为缺省值。

寄存器 复位后默认值
CS FFFFH
IP 0000H
DS,SS,ES 0000H
FLAGs 0000H
指令队列 清空
其他寄存器 0000H

缺省的CS和IP的内容,通过地址加法器得到FFFF0H,这就是复位后的第一条指令地址。

FFFF0H处存放了一条无条件转移指令,用来转移到固化在主板BIOS里的一段系统程序的入口。这样,系统一旦被启动仍自动进入程序,开始正常工作。

复位时,FR被清空,IF = 0, 此时不接受INTR信号

复位操作时序

8086的复位与启动 CPU执行指令的步骤的更多相关文章

  1. win 7启动tensorboard的详尽步骤

    TensorBoard是TensorFlow下的一个可视化的工具,能够帮助我们在训练大规模神经网络过程中出现的复杂且不好理解的运算.TensorBoard能展示你训练过程中绘制的图像.网络结构等. 1 ...

  2. iOS8后core location框架启动定位服务的步骤

    1.在使用CoreLocation前需要调用如下函数[iOS 8专用]: iOS 8对定位进行了一些修改,其中包括定位授权的方法,CLLocationManager增加了下面的两个方法: (1)始终允 ...

  3. 苹果官方制作MAC OS的启动U盘的步骤

    工具/原料 一个8G或者更大容量的U盘 MAC OS系统镜像DMG文件 方法/步骤 1.打开应用程序 - 使用工具里的磁盘工具,将U盘格式化为MAC OS扩展日志式,名称输入Mavericks,并创建 ...

  4. window10下启动vue项目具体步骤

    1. 安装nodejs 直接去nodejs官方网站下载安装包(https://nodejs.org/zh-cn/) 然后在cmd窗口里面输入 node -v 可以检测出来nodejs是否在全局环境下安 ...

  5. 8086 CPU 寄存器简介

    转载:http://www.cnblogs.com/BoyXiao/archive/2010/11/20/1882716.html 引子 打算写几篇稍近底层或者说是基础的博文,浅要介绍或者说是回顾一些 ...

  6. [转帖]8086 CPU 寄存器简介

    8086 CPU 寄存器简介 https://www.cnblogs.com/BoyXiao/archive/2010/11/20/1882716.html 哎 没看完 感觉好复杂. 引子 打算写几篇 ...

  7. 痞子衡嵌入式:16MB以上NOR Flash使用不当可能会造成软复位后i.MXRT无法正常启动

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是i.MXRT上使用16MB以上NOR Flash软复位无法正常启动问题的分析解决经验. 痞子衡这几天在支持一个i.MXRT1050客户项 ...

  8. CPU与内存的那些事

    下面是网上看到的一些关于内存和CPU方面的一些很不错的文章. 整理如下: 转: CPU的等待有多久? 原文标题:What Your Computer Does While You Wait 原文地址: ...

  9. 转:CPU与内存的那些事

    下面是网上看到的一些关于内存和CPU方面的一些很不错的文章. 整理如下: 转: CPU的等待有多久? 原文标题:What Your Computer Does While You Wait 原文地址: ...

随机推荐

  1. Servlet学习笔记(三)之HttpServletResponse

    init() 方法中参数 ServletConfig 对象使用 通过ServletConfig 获得 ServletContext对象 使用 HttpServletRequest 与HttpServl ...

  2. 一文读懂Base64编码

    Base64编码 字符对应表 上表就是用来表示Base64,一共64个字符,A-Z,a-z,0-9,+,-,还有=(作为补位) 无论将文件,字符串,还是什么转为Base64,一定是用上表的字符表示. ...

  3. 性能测试工具JMeter 基础(二)—— 主界面介绍

    主界面介绍 JMeter的主界面主要分为菜单导航栏.工具栏.计划树标签栏.内容栏 菜单导航栏:全部的功能的都包含在菜单栏中 工具栏:相当于菜单栏常用功能的快捷按钮 计划树标签栏:显示测试用例(计划)相 ...

  4. Linux环境搭建及项目部署

    一. VMWare安装图解 1.点击下一步 2.接受条款,下一步 3.选择安装目录,不建议有中文目录和空格目录.下一步 4.下一步 5.这两个选项根据可以爱好习惯选择,下一步 6.安装 7.完成 9. ...

  5. Vuex的同步异步存值取值

    1. vue中各个组件之间传值 1.父子组件 父组件-->子组件,通过子组件的自定义属性:props 子组件-->父组件,通过自定义事件:this.$emit('事件名',参数1,参数2, ...

  6. 内核软中断之tasklet机制

    1. 软中断IRQ简介 软中断(SoftIRQ)是内核提供的一种基于中断的延时机制, Linux内核定义的软中断有以下几种: enum { HI_SOFTIRQ=0, /*高优先级的tasklet*/ ...

  7. 随机生成uuid序号

    function guid() { function S4() { return (((1+Math.random())*0x10000)|0).toString(16).substring(1); ...

  8. [第九篇]——Docker 镜像使用之Spring Cloud直播商城 b2b2c电子商务技术总结

    Docker 镜像使用 当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载. 下面我们来学习: 1.管理 ...

  9. Java学习笔记--常用容器

    容器 1. 出现原因 解决程序运行时需要创建新对象,在程序运行前不知道运行的所需的对象数量甚至是类型的问题. Java中提供了一套集合类来解决这些问题包括:List.Set.Queue.Map 2. ...

  10. 解决国内npm安装太慢的方法,又不能FQ情况下,使用淘宝镜像教程

    安装npm及cnpm(Windows) [工具官网] 因为国内上网下载组件太慢,淘宝给我们提供了镜像源,,但是我不是建意FQ上网.条件有限的可以使用下面的方法安装CNPM,原文转自网络,正好自己需要也 ...