文档章节

编程硬件基础+原理整理

求行者
 求行者
发布于 2017/04/11 23:40
字数 3006
阅读 10
收藏 0
点赞 0
评论 0

1.为啥寄存器比内存快很多?

<a>与CPU的距离不同,传输数据的时间不一样。

<b>硬件的设计上,寄存器会一直呈现通电状态,但是内存在使用的时候通电,之后断电,响应效率不一样。

<c>寄存器负责的工作内容简单,只是简单的取址和读值操作。

备注:

ARM公司商业模式的强大之处在于其价格合理,全世界范围有超过100个合作伙伴--包括半导体工业的著名公司。ARM公司专注于设计,其内核耗电少、成本低、功能强,特有16/32位双指令集。ARM已成为移动通信、手持计算、多媒体数字消费等嵌入式解决方案的RISC标准.。

在所有ARM处理器系列中,ARM7处理器系列应用最广,采用ARM7处理器作为内核生产芯片的公司最多。

A.寄存器,是集成电路中非常重要的一种存储单元,通常由触发器组成。在集成电路设计中,寄存器可分为电路内部使用的寄存器和充当内外部接口的寄存器这两类。

寄存器的基本单元是 D触发器,按用途分为基本寄存器和移位寄存器移位寄存器(按照移位方向可以分为单向移位寄存器和双向移位寄存器)。

B.8086微处理其中的寄存器:

8086 有14个16位寄存器,这14个寄存器按其用途可分为通用寄存器组、指示器和变址寄存器组、段式寄存器组、指令指示器、标志状态寄存器。

通用寄存器是那些你可以根据自己的意愿使用的寄存器,修改他们的值通常不会对计算机的运行造成很大的影响。

累加寄存器,常用于运算;在乘除等指令中指定用来存放操作数,而且所有的  I/O指令 都用这一寄存器与外界设备传送数据。

计数寄存器,常用于计数;常用于保存计算值,如在移位指令,循环(loop)和串处理指令中用作隐含的计数器.

SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置

BP(Base Pointer):基址指针寄存器,可用作SS的一个相对基址位置

SI(Source Index):源变址寄存器,可用来存放相对于DS段之源变址指针

DI(Destination Index):目的变址寄存器,可用来存放相对于ES 段之目的变址指针

标志寄存器

15
  
14
  
13
  
12
  
11 10 9 8 7 6 5 4 3 2 1 0
        OF
  
DF
  
IF
  
TF
  
SF
  
ZF
  
  AF
  
  PF
  
  CF
  
 

IF:中断允许标志IF位

用来决定CPU是否响应CPU外部的可屏蔽中断发出的中断请求但不管该标志为何值,CPU都必须响应CPU外部的不可屏蔽中断所发出的中断请求,以及CPU内部产生的中断请求具体规定如下:

(1)、当IF=1时,CPU可以响应CPU外部的可屏蔽中断发出的中断请求

(2)、当IF=0时,CPU不响应CPU外部的可屏蔽中断发出的中断请求。

TF:跟踪标志TF。该标志可用于程序调试。TF标志没有专门的指令来设置或清除。

(1)如果TF=1,则CPU处于单步执行指令的工作方式,此时每执行完一条指令,就显示CPU内各个寄存器的当前值及CPU将要执行的下一条指令。

(2)如果TF=0,则处于连续工作模式。

SF:符号标志SF用来反映运算结果的符号位,它与运算结果的最高位相同。

微机系统中,有符号数采用补码表示法,所以,SF也就反映运算结果的正负号。运算结果为非负数时,SF的值为0,否则其值为1。

当运算结果没有产生溢出时,运算结果等于逻辑结果(即应该得到的正确的结果),此时SF表示的是逻辑结果的正负,当运算结果产生溢出时,运算结果不等于逻辑结果,此时的SF值所表示的正负情况与逻辑结果相反,即:SF=0时,逻辑结果为负,SF=1时,逻辑结果为非负。

2.十进制调整辅助进位设置?

进行运算的时候如果低四位的运算向高四位有进位或者借位,辅助进位标志就会被置位。

3.中断和异常区别?

中断 是指工作完全不能继续,处于停滞状态。
异常 是指工作尚未停止,但又不是正常状态。

http://blog.csdn.net/youngchang06hpu/article/details/8002703

4.中断和陷阱的主要区别?

1 、陷阱通常由处理机正在执行的现行指令引起,而中断则是由与现行指令无关的中断源引起的。

2 、陷阱处理程序提供的服务为当前进程所用,而中断处理程序提供的服务则不是为了当前进程的。

3 、CPU 在执行完一条指令之后,下一条指令开始之前响应中断,而在一条指令执行中也可以响应陷阱。

4 、在有的系统中,陷入处理程序被规定在各自的进程上下文中执行,而中断处理程序则在系统上下文中执行。

软中断与硬中断的比较:

相同点:其中断源发中断请求或软中断信号后, CPU 或接收进程在适当的时机自动进行中断处理或完成软中断信号所对应的功能。

不同点:接收软中断信号的进程不一定正好在接收时占有处理机,而相应的处理必须等到该接收进程得到处理机之后才能进行。

http://blog.chinaunix.net/uid-26931176-id-3216697.html

5.关于逻辑地址物理地址段地址和段内偏移地址区别?

关于逻辑地址是允许在程序中编排的地址,8086的逻辑地址有段地值和段内偏移量两部分,表达形式为“段地址:段内偏移地址”。

之前说20位的地址信息可以对1M个内存单元进行访问,就是说编址00000H~FFFFFH,而段寄器CS,DS,SS,ES即存放了这些地址的高4位,如12345H,则某个段寄存器便会存储1234H高4位信息,这即为段地址。

而段内偏移地址就是移动后相对于段地址的偏移量。

物理地址就是地址总线上提供的20位地址信息。物理地址=段地址*10H+段内偏移地址。段地址乘以10H是因为段地址当时是取高四位得到的,所以还原后要让段地址左移4位(10H = 10000B),例如(cs)= 20A8H,(IP)= 2008H,则物理地址为20A8H*10H+2008H = 22A88H。

段地址:是针对内存的分段而言的,将每一段的段首地址定义为段地址.段地址的存在是由系统的分段存储决定的,通过段地址和偏移地址就能对数据进行寻访.

物理地址:在存储器里以字节为单位存储信息,为正确地存放或取得信息,每一个字节单元给以一个唯一的存储器地址,称为物理地址。出现在CPU外部地址总线上的寻址物理内存的地址信号,是地址变换的最终结果。用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。

逻辑地址:

1、在有地址变换功能的计算机中,访问指令给出的地址 (操作数) 叫逻辑地址,也叫相对地址

2、把用户程序中使用的地址称为相对地址即逻辑地址。

3、逻辑地址由两个16位的地址分量构成,一个为段基值,另一个为偏移量。两个分量均为无符号数编码。

概念辨析

微型计算机的内存容量是指RAM的容量,ROM、RAM、cache能被CPU直接访问

汉字的拼音输入法属于外码

32位微机中32指的是能够同时处理32位二进制数,Internet中IP由32位二进制数组成

一个字的长度:计算机字长与微处理器的芯片的型号有关,计算机字长取决于数据总线的宽度

目前计算机应用领域大致分为三个范围:实时控制、科学计算、数据处理

依据CPU执行程序的过程寄存器中存放的可以是数据也可以是指令。计算机的指令由操作码个操作数或地址码组成。

微机中VGA的意义是:微机显示器的型号

 

一个计算机组成包括通信子网和资源子网

几个周期的区别:

周期名称

指令周期

时钟周期

 

cpu周期

总线周期

时钟信号

 

 

 

 

描述

即cpu运行一条指令所需要的时间长度,通常是一个指令周期等于多少个cpu振荡器周期。

cpu工作的振荡器的周期。定义为时钟频率倒数。时钟周期是计算机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作。时钟周期是一个时间的量。时钟周期表示了SDRAM所能运行的最高频率。更小的时钟周期就意味着更高的工作频率

 

cpu振荡器周期。

1.微处理器是在时钟信号CLK控制下按节拍工作的。

2.由于存储器I/O端口是挂接在总线上的,CPU对存储器和I/O接口的访问,是通过总线实现的。把CPU通过总线对微处理器外部(存储器或I/O接口)进行一次访问所需时间称为一个总线周期。一个总线周期一般包含4个时钟周期,这4个时钟周期分别称4个状态即T1状态、T2状态、T3状态和T4状态,必要时,可在T3、T4间插入一个至数个Tw。

用于决定逻辑单元中的状态何时更新。时钟信号是指有固定周期并与运行无关的信号量

逻辑地址和物理地址的区别:

 

逻辑地址(Logical Address) 

线性地址(Linear Address)

物理地址(Physical Address)

虚拟内存(Virtual Memory)

 

 

 

 

描述

指由程序产生的与段相关的偏移地址。逻辑也就是在Intel 保护模式下程序执行代码段限长内的偏移地址(假定代码段、数据段如果完全一样)。

 

逻辑地址到物理地址变换之间的中间层。程序代码会产生逻辑地址(段中的偏移地址),加上相应段的基地址就生成了一个线性地址。如果启用了分页机制,那么线性地址可以再经变换以产生一个物理地址。若没有启用分页机制,那么线性地址直接就是物理地址。

出现在CPU外部地址总线上的寻址物理内存的地址信号,是地址变换的最终结果地址。

计算机呈现出要比实际拥有的内存大得多的内存量。因此它允许程序员编制并运行比实际系统拥有的内存大得多的程序。这使得许多大型项目能在具有有限内存资源的系统上实现。

© 著作权归作者所有

共有 人打赏支持
求行者
粉丝 2
博文 67
码字总数 83500
作品 0
朝阳
程序员
嵌入式系统定制开发的分层与专业的分类

嵌入式系统这个名词还是比较难以准确定义的,一般把“用于控制、监视或者辅助操作机器和设备的装置”称为嵌入式系统,系统包括一系列软硬件设施等,比如:手机的系统开发(Android、IOS等),...

gunser
05/31
0
0
嵌入式系统有哪些专业的分类 学习嵌入式有哪几个方向

无论什么基础学习嵌入式,只要学习嵌入式的人都知道,嵌入式系统分为4层,硬件层、驱动层、操作系统层和应用层。想要学好嵌入式,就必须明确这几个方向,缕清学习思路,才能更好的学习嵌入式...

创客学院
03/21
0
0
《模拟电路》、《数字电路》、《微机原理》三门课的关系

5.1.1 模拟电路 (1)含义 即Analog Circuit,模拟电路就是处理模拟电信号的电子电路,《模拟电路》这门课专门讲模拟电路的设计与实现的,《模拟电路》这门课,这门课常被简称为《模电》。 ...

佳嵌
01/30
0
0
做IT开发选择嵌入式好还是JAVA好

:IT软件开发眼前道路的选择 一份工作在一个人的生活中占据重要地位,对于一个人的生活质量占据决定性作用,可以说工作决定一个人一生,对于选择工作当然是要选择新兴产业且有发展前途的行业...

educn114
2014/05/16
0
0
嵌入式软件学习方法 嵌入式软件知识

目前嵌入式软件的学习主要主要面向的几个操作系统是,Linux,WINCE、VxWorks等等。其中Linux是开源免费的,而且其源代码是开放的,更加适合我们学习嵌入式软件。下面我们介绍一下嵌入式软件学...

创客学院
04/12
0
0
【算法】数据结构与算法之美,解剖艺术

Preface   因为最近一直在搞硬件的东西,所以暂时没管自己专业的东西,昨晚一童鞋问到一个网络里面的算法时,突然发现自己的强项,已然不是强项了,于是总结了一下   硬件的东西,其实是...

wbf961127
2017/11/08
0
0
嵌入式Linux学习基础规划篇

嵌入式的学习是需要日积月累的,是通过一点一滴的积累才能成为大神。下面来介绍一下嵌入式linux学习基础规划,目标是达到适应嵌入式应用软件开发、嵌入式系统开发或嵌入式驱动开发的基本素质...

创客学院
04/10
0
0
瞬间百万流量的微薄或视频如何架构服务器,使用什么技术?

当下各类微薄或视频网站中,一个帖子或视频可能成为焦点,而导致瞬间的大流量,十万或百万级别的。 这样的情况很多,请问是使用什么样的解决方案来应对的? 本人对系统架构和应对方案很敢兴趣...

stonenyy
2014/01/19
1K
8
嵌入式工程师有前途吗 嵌入式开发的职业发展方向是什么

嵌入式早在70年代出现到现在,有将近30年的发展历史,能够长久存在并且可持续发展。从工程师起步, 一般有几个发展方向,一个是成为技术方面的核心,领域内的专家;另一个是从项目中锻炼起来...

创客学院
04/08
0
0
新手必看,学习Linux重要八招

嵌入式Linux系统开发学习步骤,深圳嵌入式Linux培训高薪一路相伴  最近在嵌入式论坛上经常遇到一些嵌入式linux初学者在询问:嵌入式Linux如何入门?嵌入式Linux开发都需要学习什么?等等。其...

educn114
2014/05/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JPA @MappedSuperclass 注解说明

基于代码复用和模型分离的思想,在项目开发中使用JPA的@MappedSuperclass注解将实体类的多个属性分别封装到不同的非实体类中。 1.@MappedSuperclass注解只能标准在类上:@Target({java.lang....

海博1600
7分钟前
0
0
Scala Configuration 相关API

Play使用了 Typesafe config library,但是也提供了一个有着更多Scala高级特性的的 Configuration 封装。不熟悉Typesafe配置的开发者可以移步 configuration文件的语法和特性文档。 读取配置...

Landas
今天
1
0
使用cookie技术 记住账号

1. 效果 2. 实现过程 2.1 前端 将用户的选中传递给后台 这个参数的获取是 参考:https://my.oschina.net/springMVCAndspring/blog/1860498 // var rememberLogin = $("#rememberLoginId").i...

Lucky_Me
今天
1
0
《趣谈网络协议》02之网络分层的真实含义

一、提出问题 1.提出问题 当你听到什么二层设备、三层设备、四层 LB 和七层 LB 中层的时候,是否有点一头雾水,不知道这些所谓的层,对应的各种协议具体要做什么“工作”? 2.这四个问题你弄...

aibinxiao
今天
2
0
Python3学习日志二 Python中的集合set和字典dict

1.集合set 定义一个集合set 我们可以看到定义集合set有两种不同的形式,如果要定义一个空的集合set不能用{}而是要用set();另外,集合是无序的,而且set中的元素是不可重复的,如果你定义了一...

Mr_bullshit
今天
0
0
adb 操作指令详解

ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具,也是 Android 设备玩家的好玩具。 注:有部分命令的支持情况可能与 Android 系统版本及定制 ROM 的实现有关。...

孟飞阳
今天
0
0
nodejs安装以及环境配置(很好的node安装和配置文章,少走很多弯路)

一、安装环境 1、本机系统:Windows 10 Pro(64位) 2、Node.js:v6.9.2LTS(64位) 二、安装Node.js步骤 1、下载对应你系统的Node.js版本:https://nodejs.org/en/download/ 2、选安装目录进...

sprouting
今天
1
0
Redisson

了解了Redisson,发现使用挺简单的,接下来准备深入学习一下。 Redisson介绍 Redisson是架设于Redis基础之上的一个Java驻内存数据网格(In-Memory Data Grid) Redisson在基于NIO的Netty框架上...

to_ln
今天
0
0
python有哪些好玩的应用实现,用python爬虫做一个二维码生成器

python爬虫不止可以批量下载数据,还可以有很多有趣的应用,之前也发过很多,比如天气预报实时查询、cmd版的实时翻译、快速浏览论坛热门帖等等,这些都可以算是爬虫的另一个应用方向! 今天给...

python玩家
今天
0
0
python爬虫日志(3)-爬去异步加载网页

在浏览器检查元素页面中,选取Network中的XHR选项即可观察每次加载页面,网页发出的请求,观察url的规律即可利用封装的函数对每一页进行爬取。

茫羽行
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部