微机原理基础学习笔记(二)

一、怎样组合?

   微型计算机的组成和通用计算机组成相似,最大的特点是微型计算机采用总线结构(通常是三总线结构AB、DB、CB),如图(这张图很重要,理解了这张图,基本上单片机的架构就理解了),地址总线是单向总线,CPU通过地址总线发送地址寻找内存单元地址(寻址),然后将数据通过双向数据总线进行传送,控制总线用来传送控制信号,控制整个系统有序进行;

  再具体一点,一个单片机的基本组成架构可以用下面这张图来表示

  MCU Structure

   ——CPU

    • Registers ( 寄存器组 )
    • Instruction latch/decode/branch ( 指令)    
    • Stack ( 栈 )
    • Interrupt (中断)
    • Clock/Reset (  时钟/复位 )  

   ——Memory

   ——Peripheral

                         

  存储器和片上外设在此不作详细介绍,因为微处理器是微机核心,所以重点深入说微处理器:

   微处理器就是一块CPU,CPU全称为Center Process Uint(中央处理单元),那它处理什么呢?毫无疑问,数据

  1、怎样处理数据?

    数据处理最基本的是可以对数据进行逻辑运算,包括算术运算(add,subtract,multiply,divide),逻辑运算(and,or,not,xor),位运算(shift,rotation);完成这个工作的单元叫做ALU(Arithmetic Logic Unit,逻辑运算单元),高级的单片机还可以进行浮点运算(例如STM32F429拥有浮点运算单元),ALU的大致结构如图:A,B是两个操作数,S0,S1决定进行哪个运算,S2,S3决定输出哪个结果;

                   

    所以,ALU要进行运算,需要提供至少两个操作数,对外输出运算结果,以及一些进位标志,还需要告诉它要进行什么运算,下面一一解决这些这些问题;

  2、标志位放在哪?

    标志位主要有四个:零标志位,负标志位,溢出标志位,进位标志位,这些标志位都存放在一个专用寄存器PSW中——程序状态寄存器,方便别的单元查询,每执行一条指令,这些标志位都会更新;

          

  3、操作数来源于哪?运算结果存放在哪?

    操作数一般来源于数据存储器中,也就是RAM中,也可以来源于通用寄存器组中;

     在计算完成后运算结果一般被重新写回数据存储器中或者通用寄存器组中;

  4、谁控制这一切的自动运行?

    什么时候送入操作数进行计算?进行什么计算?什么时候读取计算结果和标志位?这些工作都是在控制单元的控制下有序进行的;

    控制单元主要通过解析指令确定需要执行何种操作以及数据流向的;

    (控制单元的工作时钟是时钟电路提供的,这不属于CPU的范畴)

           

  5、控制系统解析的指令来源于哪?

    单片机运行的程序其实就是一系列指令的有序组合,存储在程序存储器中,这些指令依次进入CPU执行;CPU通过寻址来找到这些存储在ROM中的指令,指令地址保存在程序计数器PC中;

          

原文地址:https://www.cnblogs.com/Mculover666/p/8930852.html

时间: 2024-08-07 16:27:28

微机原理基础学习笔记(二)的相关文章

Java基础学习笔记二十 IO流

转换流 在学习字符流(FileReader.FileWriter)的时候,其中说如果需要指定编码和缓冲区大小时,可以在字节流的基础上,构造一个InputStreamReader或者OutputStreamWriter,这又是什么意思呢? OutputStreamWriter类 查阅OutputStreamWriter的API介绍,OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的字符编码表,将要写入流中的字符编码成字节.它的作用的就是,将字符串按照指定的编码表转成字节,

Java基础学习笔记二十一 多线程

多线程介绍 学习多线程之前,我们先要了解几个关于多线程有关的概念.进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能. 线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程.一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序. 简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程 什么是多线程呢?即就是一个程序中有多个线程在同时执行.通过下图来区别单线程程序与

Java基础学习笔记二十六 JDBC

什么是JDBC JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库.原来我们操作数据库是在控制台使用SQL语句来操作数据库,JDBC是用Java语言向数据库发送SQL语句. JDBC原理 早期SUN公司的天才们想编写一套可以连接天下所有数据库的API,但是当他们刚刚开始时就发现这是不可完成的任务,因为各个厂商的数据库服务器差异太大了.后来SUN开始与数据库厂商们讨论,最终得出的结论是,由SUN提供一套访问数据库的规范(就是

Java基础学习笔记二十八 管家婆综合项目

本项目为JAVA基础综合项目,主要包括: 熟练View层.Service层.Dao层之间的方法相互调用操作.熟练dbutils操作数据库表完成增删改查. 项目功能分析 查询账务 多条件组合查询账务 添加账务 编辑账务 删除账务 项目环境搭建 技术选型和jar包介绍 每个项目都要使用一些已经成熟的技术,它们通常是由一些专业组织或团队所提供的开源免费技术.在今后的学习过程中,我们会逐渐对这些专业组织有所了解.本项目中使用的技术如下: apache的commons组件: commons-dbutils

使用JSP实现输出(web基础学习笔记二)

Jsp:Java Server Page 服务器端的Java页面,动态网页技术 jsp注释 显式注释:这种注释客户端是允许看见的;<!--html注释--> 隐式注释:这种注释客户端是看不到的 注释:格式一://注释,单行注释 格式二:/*多行注释*/ 格式三:<%--注释--%>jsp注释 <!-- 这个注释客户端可以可见 --> <%--这个注释客户端看不到 --%> <% out.println("学习jsp输出"); //输

Java基础学习笔记二十五 MySQL

MySQL 在dos中操作mysql 连接mysql命令: mysql -uroot -p密码 ,连接OK,会出现mysql> 对数据库的操作 创建一个库 create database 库名 create database 库名 character set 编码 mysql> create database mybase; Query OK, 1 row affected (0.00 sec) mysql> show databases; +--------------------+

javascript第二遍基础学习笔记(二)

一.操作符 1.一元操作符: 自加自减(分前置和后置2种):++.-- 区别:前置的先自加或自减,后进行计算:二后置的是先进行计算,后自加或自减(在其会产生负面影响时才能体现区别): var i=1; i++; //++i console.log(i); // 没有负面影响的情况下:2/2 var a = (++i)+i; var b = (i++)+i; console.log(a); //6 console.log(b); //7 其适合任何类型,非数字类型的会转换成数字类型 Number(

Servlet一(web基础学习笔记二十)

一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤: 1.编写一个Java类,实现servlet接口. 2.把开发好的Java类部署到web服务器中. 按照一种约定俗成的称呼习惯,通常我们也把实现了servlet接口的java程序,称之为Servlet 二.ServletAPI 三.Servlet的方法 四.S

Java基础学习笔记二十三 Java核心语法之反射

类加载器 类的加载 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,链接,初始化三步来实现对这个类进行初始化. 加载就是指将class文件读入内存,并为之创建一个Class对象.任何类被使用时系统都会建立一个Class对象. 链接指的是将Java类的二进制代码合并到JVM的运行状态之中的过程.在链接之前,这个类必须被成功加载.类的链接包括验证.准备和解析等几个步骤. 验证:是否有正确的内部结构,并和其他类协调一致. 准备:负责为类的静态成员分配内存,并设置默认初始化值 解析: