基本概念学习(9013)---通用寄存器、机器字长、数据通路
通用寄存器可用于传送和暂存数据,也可参与算术逻辑运算,并保存运算结果。除此之外,它们还各自具有一些特殊功能。汇编语言程序员必须熟悉每个寄存器的一般用途和特殊用途,只有这样,才能在程序中做到正确、合理地使用它们。[1]
简介
通用寄存器可用于传送和暂存数据,也可参与算术逻辑运算,并保存运算结果。除此之外,它们还各自具有一些特殊功能。通用寄存器的长度取决于机器字长,汇编语言程序员必须熟悉每个寄存器的一般用途和特殊用途,只有这样,才能在程序中做到正确、合理地使用它们。
16位cpu通用寄存器共有 8 个:AX,BX,CX,DX,BP,SP,SI,DI.
八个寄存器都可以作为普通的数据寄存器使用。
但有的有特殊的用途:AX为累加器,CX为计数器,BX,BP为基址寄存器,SI,DI为变址寄存器,BP还可以是基
指针,SP为堆栈指针。
32位cpu通用寄存器共有 8 个: EAX,EBX,ECX,EDX,EBP,ESP,ESI,EDI功能和上面差不多
分类
数据寄存器
数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。[1]
32位CPU有4个32位的通用寄存器EAX、EBX、ECX和EDX。对低16位数据的存取,不会影响高16位的数据。这些低16位寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。 [1]
4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每个寄存器都有自己的名称,可独立存取。程序员可利用数据寄存器的这种“可分可合”的特性,灵活地处理字/字节的信息。 [1]
寄存器AX和AL通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。累加器可用于乘、除、输入/输出等操作,它们的使用频率很高; 寄存器BX称为基地址寄存器(Base Register)。它可作为存储器指针来使用; 寄存器CX称为计数寄存器(Count Register)。在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用CL来指明移位的位数; 寄存器DX称为数据寄存器(Data Register)。在进行乘、除运算时,它可作为默认的操作数参与运算,也可用于存放I/O的端口地址。 [1]
在16位CPU中,AX、BX、CX和DX不能作为基址和变址寄存器来存放存储单元的地址,但在32位CPU中,其32位寄存器EAX、EBX、ECX和EDX不仅可传送数据、暂存数据保存算术逻辑运算结果,而且也可作为指针寄存器,所以,这些32位寄存器更具有通用性。详细内容请见第3.8节——32位地址的寻址方式。[1]
变址寄存器
32位CPU有2个32位通用寄存器ESI和EDI。其低16位对应先前CPU中的SI和DI,对低16位数据的存取,不影响高16位的数据。 [1]
寄存器ESI、EDI、SI和DI称为变址寄存器(Index Register),它们主要用于存放存储单元在段内的偏移量,用它们可实现多种存储器操作数的寻址方式(在第3章有详细介绍),为以不同的地址形式访问存储单元提供方便。 变址寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。 [1]
它们可作一般的存储器指针使用。在字符串操作指令的执行过程中,对它们有特定的要求,而且还具有特殊的功能。[1]
指针寄存器
32位CPU有2个32位通用寄存器EBP和ESP。其低16位对应先前CPU中的SBP和SP,对低16位数据的存取,不影响高16位的数据。 寄存器EBP、ESP、BP和SP称为指针寄存器(Pointer Register),主要用于存放堆栈内存储单元的偏移量,用它们可实现多种存储器操作数的寻址方式(在第3章有详细介绍),为以不同的地址形式访问存储单元提供方便。指针寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。[1]
段寄存器
段寄存器是根据内存分段的管理模式而设置的。内存单元的物理地址由段寄存器的值和一个偏移量组合而成的,这样可用两个较少位数的值组合成一个可访问较大物理空间的内存地址。[1]
指令指针寄存器
32位CPU把指令指针扩展到32位,并记作EIP,EIP的低16位与先前CPU中的IP作用相同。 指令指针EIP、IP(Instruction Pointer)是存放下次将要执行的指令在代码段的偏移量。在具有预取指令功能的系统中,下次要执行的指令通常已被预取到指令队列中,除非发生转移情况。所以,在理解它们的功能时,不考虑存在指令队列的情况。 在实方式下,由于每个段的最大范围为64K,所以,EIP中的高16位肯定都为0,此时,相当于只用其低16位的IP来反映程序中指令的执行次序。[1]
主要用途
通用寄存器数据
寄存器AX乘、除运算,字的输入输出,中间结果的缓存
AL字节的乘、除运算,字节的输入输出,十进制算术运算
AH字节的乘、除运算,存放中断的功能号
BX存储器指针
CX串操作、循环控制的计数器
CL移位操作的计数器
DX字的乘、除运算,间接的输入输出
变址
寄存器SI存储器指针、串指令中的源操作数指针
DI存储器指针、串指令中的目的操作数指针
变址
分类示意图
寄存器BP存储器指针、存取堆栈的指针
SP堆栈的栈顶指针
指令指针IP/EIP
标志位寄存器Flag/EFlag
32位
CPU的
段寄存器16位CPU的
段寄存器ES 附加段寄存器
CS 代码段寄存器
SS 堆栈段寄存器
DS 数据段寄存器
新增加的
段寄存器FS 附加段寄存器
GS 附加段寄存器
相关信息
寄存器是CPU内部重要的数据存储资源,用来暂存数据和地址,是汇编程序员能直接使用的硬件资源之一。由于寄存器的存取速度比内存快,所以,在用汇编语言编写程序时,要尽可能充分利用寄存器的存储功能。
运算器结构
寄存器一般用来保存程序的中间结果,为随后的指令快速提供操作数,从而避免把中间结果存入内存,再读取内存的操作。在高级语言(如:C/C++语言)中,也有定义变量为寄存器类型的,这就是提高寄存器利用率的一种可行的方法。
另外,由于寄存器的个数和容量都有限,不可能把所有中间结果都存储在寄存器中,所以,要对寄存器进行适当的调度。根据指令的要求,如何安排适当的寄存器,避免操作数过多的传送操作是一项细致而又周密的工作。
备注:摘自http://baike.baidu.com/view/1418486.htm
************************************
机器字长
是指计算机进行一次整数运算所能处理的二进制数据的位数(整数运算即定点整数运算)。
中文名
机器字长
概 念
能处理的二进制数据的位数
影 响
对硬件的造价也有较大的影响
字 长
是32位,也可以是16位
定义
编辑
机器字长也就是运算器进行定点数运算的字长,通常也是CPU内部数据通路的宽度。即字长越长,数的表示范围也越大,精度也越高。机器的字长也会影响机器的运算速度。倘若CPU字长较短,又要运算位数较多的数据,那么需要经过两次或多次的运算才能完成,这样势必影响整机的运行速度。
机器字长与主存储器字长通常是相同的,但也可以不同。不同的情况下,一般是主存储器字长小于机器字长,例如机器字长是32位,主存储器字长可以是32位,也可以是16位,当然,两者都会影响CPU的工作效率。
影响
编辑
机器字长对硬件的造价也有较大的影响。它将直接影响加法器(或ALU),数据总线以及存储字长的位数。所以机器字长的确不能单从精度和数的表示范围来考虑。[1]
备注:摘自http://baike.baidu.com/view/178205.htm
**************************************
数据通路
数字系统中,各个子系统通过数据总线连接形成的数据传送路径称为数据通路。 数据通路的设计直接影响到控制器的设计,同时也影响到数字系统的速度指标和成本。一般来说,处理速度快的数字系统,它的独立传送信息的通路较多。但是独立数据传送通路一旦增加,控制器的设计也就复杂了。因此,在满足速度指标的前提下,为使数字系统结构尽量简单,一般小型系统中多采用单一总线结构。在较大系统中可采用双总线或三总线结构。
中文名
数据通路
暂存器A和B
保存通用寄存器组
I R
专用寄存器
MAR
RAM的专用地址寄存器
中文名
数据通路
暂存器A和B
保存通用寄存器组
I R
专用寄存器
MAR
RAM的专用地址寄存器
举例说明
(以概述中图为例)
通用寄存器组R:容量16个字,双端口输出[1] 。
暂存器A和B:保存通用寄存器组读出的数据或BUS上来的数据。
算术逻辑单元ALU:有S3、S2、S1、S0、M五个控制端,用以选择运算类型。
寄存器C:保存ALU运算产生的进位信号。
RAM随机读写存储器:读/写操作受MRD/MWR控制信号控制。
MAR:RAM的专用地址寄存器,寄存器的长度决定RAM的容量。
IR: 专用寄存器,可存放由RAM读出的一个特殊数据。
控制器:用来产生数据通路中的所有控制信号,它们与各个子系统上的使能控制信号一一对应。
BUS:单一数据总线,通过三态门与有关子系统进行连接。
简介
对单总线的系统来说,扩充是非常容易的,只要在BUS上增加子系统即可。例如增加一个寄存器时,可将总线BUS接到寄存器的数据输入端,由接收控制信号将数据打入。如果该寄存器的数据还需要发送到BUS 时,在寄存器的输出端加上三态门即可,或者干脆使用带三态门输出的寄存器。
图中所示的数据通路中,两类信息的表示方式是非常明确的:双线表示数据信息,带箭头的单线表示控制信号。所有的控制信号由控制器产生,在它们的协调配合下,数据流通过BUS总线在各子系统之间进行流动。
备注:转自http://baike.baidu.com/view/1866929.htm
转载于:https://blog.51cto.com/jiaojusuimu/1879690
基本概念学习(9013)---通用寄存器、机器字长、数据通路相关推荐
- 机器字长,字长,寄存器或运算器位数,CPU位数,操作系统位数,字,指令字长,存储字长的概念与关系
在学计组的过程,我们总是会碰到这样的说法,xx位计算机,以字编址,某16位机器,xx位处理器.这种说法越见越多,最后很容易混稀概念,所以我们最好将这些概念全部写出来,理解其中的关系. 1.计算机位数( ...
- 字、字长、机器字长、指令字长、存储字长的区别与联系?
字.字长.机器字长.指令字长.存储字长的区别与联系 字:(Word)代表计算机处理指令或数据的二进制数位数,用来表示被处理信息的单位,用于度量数据类型的宽度,例如 x86 机器中将一个字长定义为 16 ...
- 计算机组成原理——机器字长、指令字长、存储字长
计算机组成原理--机器字长.指令字长.存储字长 字长: 字长: 一个字中的二进制位的位数,是计算机系统结构中的一个重要特性.字长在计算机结构和操作的多个方面均有体现.计算机中大多数寄存器的大小是一个字 ...
- 机器字长,存储字长,存储芯片的数据线,CPU的数据总线,MDR位数,MAR位数,存储芯片和存储器的关系。
CPU总线的宽度=运算器的位数=通用寄存器的宽度=数据总线宽度 (字长:不加修饰的一般为机器字长) ------------------------------------------- 首先明确一点 ...
- 指令字长、机器字长、存储字长
1.指令字长 指令字长取决于操作码的长度.操作数地址的长度.操作地址的个数.不同机器的指令字长是不相同的. [注]对于stm32来讲,指令字长有16位的,还有32位的.它优先选择16位的指令.为了最有 ...
- 机器字长,存储字长以及寻址方面的疑惑。
以下内容均为转载,方便找到. 转载地址: 机器字长.存储字长.指令字长_不思议探求者的博客-CSDN博客_机器字长等于存储字长吗 文章目录 机器字长.存储字长.指令字长 概念 按字编址.按字节编址.按 ...
- alu和mdr位数相等吗_指令寄存器的位数与机器字长相同.PPT
指令寄存器的位数与机器字长相同 MDRin PCout 地址 总线 数据 总线 PCin Ad(IR)out MDRout MARin ALU Ri Y Z Yin Zin Riin Riout Zo ...
- 机器字长,存储字长,指令字长及其关系
机器字长:cpu中ALU的输入端位数,由于ALU的输入来源通常是通用寄存器或内部数据总线,故也是通用寄存器位数和内部数据总线根数:同时ALU中运算的是定点数和浮点数,所以也是定点数位数,通常为8位,1 ...
- 机器字长,指令字长,数据子长,MDR
/* 机器字长: CPU一次运算处理的二进制位数. 指令字长: 计算机指令字的位数. 数据字长: 计算机数据存储所占用的位数. 存储字长: 存储器中一个存储单元(存储地址)所存储的二进制代码的位数,即 ...
最新文章
- R语言实战应用精讲50篇(二十七)-时空数据分析-经验空间/时间均值(latex公式+R代码绘图)
- win7网络的计算机名称,Win7指定的网络名不再可用快速解决教程
- 51单片机mysql_51单片机的定时器
- 大量Input还是要靠scanf(洛谷P5082题题解,弃坑Java拥抱C++)
- MySQL存储过程事务处理
- hdu5481 Desiderium
- python文件重命名加日期_Python文件创建日期和重命名 - 批评请求
- 使用getopt_long解析程序长选项参数
- AMOS分析技术:路径分析;用SPSS做路径分析麻烦?那就用AMOS分析吧
- matlab freqz-m,Matlab函数freqs和freqz
- GLSL内置数学函数部分解析
- Colorbox 参数设置-中文版
- 《锋利的jQuery》学习总结
- GIC spec之ITS和LPI中断2
- 大四会计转码 初学c语言的心路历程
- 二、谈谈对数据库中索引的理解
- DC report_timing 报告分析(STA)
- 长春人文学院第四组孙乃宇https://blog.csdn.net/weixin_59347653?spm=1010.2135.3001.5421 js笔记
- 904-线程池项目死锁问题分析
- 计算机专业学生如何找到一份优质实习?如何进大厂呢?