本文说明的是单纯的一般的计算指令从储存设备中取出来之后,运行时(取址,译码,执行,回写 -- 这些操作)在CPU和我们的主存之间的执行过程
以下,我们使用一条简单的指令进行引入,后续再添加其他的情况:
ADD R0,[6] //将主存地址为6的内容取出和寄存器R0的内容相加,并回写入R0中

为了更加明确的了解后续的执行过程先普及一下基本的计算机结构(一个简单的模型机):
模型机的结构
主存的结构(模型机)
CPU的控制器(CC)结构

CPU的运算器(CA)结构

以上

好的,现在可以进入正题了,tips: 上面的都是说的模型机的结构,不代表现在的硬件的真实的结构
下面这个图是就是执行的环境
通过上面的图,我们可以看出:R0中储存的是数值3,PC中储存的内容是0001
第一步:取址
  • 控制器将指令的地址送往寄存器
  • 存储器按给定的地址读取处指令的内容,送回控制器
PC中是记录的当前下一条需要执行的指令的地址,开始执行
情景参与角色:CPU_控制电路,存储器_控制逻辑,存储器_MDR,CPU_MDR,CPU_IR
CPU_控制电路:    CPU_PC,把你的东西给CPU_MAR,好告诉存储器该做什么
PC,CPU_MAR:    收到   (于是CPU_MAR获得了PC中的东西)
----------此时,CPU_MAR在cpu控制电路的指导下,将数据通过 地址总线发送给了存储器的MAR ,CPU_控制电路并告诉了存储器的控制逻辑只是一个只读的
存储器_MAR:         地址译码器大哥,有你的任务
地址译码器 :        晓得了   (此时控制逻辑通过控制总线告诉CPU : "I am ready" 过了一会对MDR说)   莫睡了,快起来给你个数据。
存储器_MDR:      MMP,要的  (获得0001处的内容,10101010)
存储器_MDR:      CPU_MDR,我弄好了,给你
CPU_MDR:            好,给我嘛,已收到!
CPU_IR:                给我,我现在要给指令译码的部分了! (CPU_MDR的内容复制给)
CPU_PC:               悄悄的自增。(变成下一条指令的地址)
取址的工作完成
以下是图解:

第二步:译码
  • 控制器分析指令的操作性质
  • 控制器向有关部件发出指令所需的控制信号
CPU_IR现在将数据传送给指令译码器,指令译码器知道了这个指令代表的含义是:ADD R0,[6]
第三步:执行

  • 控制器从通用寄存器或存储器取出操作数
  • 控制器命令运算器对操作数进行指令规定的运算
通过译码找到了加数的位置是内存中的第6个的位置,此时CPU_MAR中保存着这个数值0110,CPu控制电路发送只读命令,CPU_MAR将数据送入存储器_mar中,通过地址译码器找到第0110位置的内容,将内容给存储器_MDR,此时控制逻辑发送Ready信号,CPU_MDR开始接收数据,变为00000010,然后MDR和R0通过内部总线将数据送入X,Y寄存器中,XY的内容作为A,B输入进ALU中,然后将结果保存在Z寄存器中,F寄存器中保存的是当前运算结果的状态。

图解:
第四步:回写
  • 将运算结果写入通用寄存器或存储器(这个要看是代码是怎么写的,默认前面的存储空间就是回写的位置)

声明:以上图片来自北京大学陆俊林老师的计算机组成原理课程PPT

这个过程就完成了,寄存器和内存中的内容进行ADD操作并回写如寄存器中的步骤就是这样的
思考:如果是寄存器和寄存器中的内容进行相加呢?内存某位置内容和寄存器内容相加回写入内存某一个位置呢?

转载于:https://www.cnblogs.com/lictemolix/p/9094755.html

一条汇编指令是如何在计算机的硬件中进行执行的相关推荐

  1. MIPS指令集处理器设计(支持64条汇编指令)

    一.题目背景和意义 二.国内外研究现状 (略) 三.MIPS指令集处理器设计与实现 (一).MIPS指令集功能性梳理 1.MIPS指令集架构 (1).mips基础指令集格式总结 MIPS是(Micro ...

  2. 如何执行一条汇编指令

    在电脑中执行一条指令主要又三个步骤: (1)在指定地址上写入一条汇编指令 (2)使cs寄存器与ip寄存器指向指令所在的地址 (3)开始执行 (1)在指定地址写入一条汇编指令: 终端上常用的命令有:R命 ...

  3. C51最全111条汇编指令合集,以及使用时的注意事项,超详细

    direct 以地址来命名的变量 所有的变量都需要放到一个存储单元中,这个存储单元都一定有一个地址 特别注意!!!!!寄存器的名字单独写出就代表了把该寄存器中的数据,即它就代表其里面的内容,而不是他的 ...

  4. go语言调度器源代码情景分析之五:汇编指令

    本文是<go调度器源代码情景分析>系列 第一章 预备知识的第4小节. 汇编语言是每位后端程序员都应该掌握的一门语言,因为学会了汇编语言,不管是对我们调试程序还是研究与理解计算机底层的一些运 ...

  5. 【实验报告】微处理器原理与应用 CPUHomework1.2 上篇【掌握DEBUG基本命令及其功能 查看CPU和内存 用机器指令和汇编指令编程】

    实验报告 课程名称:微处理器原理与应用 实验名称:CPUHomework1.2 掌握 DEBUG 基本命令及其功能 文章目录 实验报告 [实验目的] [实验要求] 上篇[查看CPU和内存,用机器指令和 ...

  6. ida pro 反汇编 Android so 库后修改 arm 汇编指令的方法总结

    1 前言 最近博主在学习Android逆向的时候,参照吾爱破解论坛的<教我兄弟学Android逆向系列课程>学习的时候,学到第8章<教我兄弟学Android逆向08 IDA爆破签名验 ...

  7. arm学习之基本汇编指令

    文章目录 1. 汇编文件中的主要符号 1.1 汇编指令 1.2 伪指令 1.3 伪操作 2. 汇编指令的分类 3. 基本汇编指令语法格式 4. 数据操作指令 4.1 数据搬移指令 4.1.1 指令格式 ...

  8. 汇编指令对应的机器码_二进制如何变成汇编语言

    计算机基础课第 26 期分享 转载请联系授权(微信ID:qianpangzi0206) 01 从硬件到软件 之前我们把重点放在硬件 - 组成计算机的物理组件,比如电,电路,寄存器,RAM,ALU,CP ...

  9. C语言x86汇编指令理解volatile(三十五)

    常见寄存器 寄存器 16位 32位 64位 累加寄存器 AX EAX RAX 基址寄存器 BX EBX RBX 计数寄存器 CX ECX RCX 数据寄存器 DX EDX RDX 堆栈基指针 BP E ...

最新文章

  1. Effective Java 读书笔记----第三章
  2. ASP.NET web.config
  3. 总结Vue中index.html、main.js、App.vue、index.js之间关系以及Vue项目加载流程
  4. eclipse中ctrl+h默认打开是JavaSearch,怎么设置成默认打开是FileSearch
  5. android的按钮状态,保持android按钮选择状态
  6. 山西省职业技能鉴定计算机操作员(中级工)理论知识试卷,山西省职业技能鉴定统一试卷 中级...
  7. 明基5560 win7 64驱动_这个Win7系统,稳定又纯净!
  8. CocoStudio 骨骼动画制作过程
  9. 1024福利|硬核无Bug,码上有红包!
  10. 【华为】某中小型企业网 组网案例—总公司+分公司模式
  11. libero soc 11.9 modelsim仿真
  12. 【2021】01 最大流
  13. yolov7的export.py转换时显存报错 If reserved memory is >> allocated memory try setting max_split_size_mb to a
  14. CheckM-Options-zn
  15. 组原4_指令偏移寻址
  16. 服务器内存占用太高如何解决及知识点介绍
  17. 30张地图看懂世界格局,用大数据说话
  18. RocksDB 常见问题
  19. 物联网新零售项目 物联网亿万级通信一站式解决方案EMQ
  20. c++沙盒小游戏1.0

热门文章

  1. spring 定时任务---task
  2. 求给定数组中两数和为给定值的数量
  3. *** cannot be resolved or is not a field
  4. 关于使用struts2上传文件时获取不到文件内容的问题的解决方案
  5. 十种最受前辈宠爱的职场新人
  6. python实现批量转换文件编码(批转换编码示例)
  7. 线程属性pthread_attr_t简介-转
  8. Ubuntu有了第一个全球CDN更新源
  9. [Python] L1-021. 重要的话说三遍-PAT团体程序设计天梯赛GPLT
  10. L1-027. 出租-PAT团体程序设计天梯赛GPLT