寄存器是什么
- 格式:doc
- 大小:53.50 KB
- 文档页数:4
寄存器的基础知识什么是寄存器?寄存器(Register)是计算机中一种用来存储和操作数据的硬件元件。
它由一组存储单元组成,每个存储单元可以存储一个固定大小的数据。
寄存器在计算机中扮演着重要的角色,可以存储算术运算的操作数、控制信号、地址信息等。
寄存器的分类根据功能和使用方式,寄存器可以分为以下几种类型:通用寄存器通用寄存器(General Purpose Register)是最常见的寄存器类型,其用途十分广泛。
它们用来存储临时数据、变量、函数参数等。
通用寄存器通常具有较小的存储容量,例如x86架构中的EAX、EBX、ECX和EDX寄存器,每个寄存器都有32位大小。
累加寄存器累加寄存器(Accumulator Register)主要用于执行算术和逻辑运算。
它是一种特殊的通用寄存器,在运算过程中存储中间结果和最终结果。
累加寄存器在某些指令集架构中有特殊优化,因此在一些特定的计算任务中性能更好。
状态寄存器状态寄存器(Flag Register)用于存储处理器的运行状态和标志位。
例如,它可以存储条件运算的结果,比如是否相等、是否溢出等。
状态寄存器通常由多个二进制位组成,每个位上的值表示某一种状态。
通过读取和设置状态寄存器的位,程序可以获得有关处理器的各种信息。
指令指针寄存器指令指针寄存器(Instruction Pointer Register)存储下一条将要执行的指令的内存地址。
在程序执行过程中,处理器会不断读取指令指针寄存器中的值,并自动递增以指向下一条指令。
指令指针寄存器的值可以由程序员修改,以实现跳转、函数调用等操作。
寄存器的操作寄存器在计算机中起到存储和操作数据的作用,它可以执行多种操作,包括读取、写入、清零等。
寄存器与其他存储器件(如内存)相比,读取和写入速度更快,但容量较小。
寄存器的操作可以通过特定的指令来完成,这些指令通常是处理器指令集中的一部分。
下面是一些常见的寄存器操作:1.读取寄存器:通过读取指令将寄存器的值加载到处理器的内部寄存器中,以供后续指令使用。
寄存器的工作原理引言概述:寄存器是计算机中用于存储数据的一种重要组件,它在计算机系统中起着至关重要的作用。
寄存器的工作原理涉及到数据存储、数据传输和数据处理等方面,下面将详细介绍寄存器的工作原理。
一、寄存器的基本概念1.1 寄存器的定义寄存器是一种用于存储和传输数据的小型存储器件,通常位于CPU内部。
它的容量较小,但速度非常快,用于暂时存储一些需要频繁访问的数据。
1.2 寄存器的种类寄存器可以分为通用寄存器、特殊寄存器和控制寄存器等不同类型。
通用寄存器用于存储暂时数据,特殊寄存器用于存储特定功能的数据,控制寄存器用于控制CPU的操作。
1.3 寄存器的作用寄存器在计算机系统中起着至关重要的作用,它可以提高数据访问速度,减少对内存的访问次数,加快数据处理速度,提高计算机系统的性能。
二、寄存器的存储原理2.1 寄存器的存储单元寄存器的存储单元通常是由触发器或者锁存器构成,它们可以存储一个位或者多个位的数据,并且能够在需要时读取或者写入数据。
2.2 寄存器的存储方式寄存器的存储方式通常采用二进制方式,即将数据以二进制形式存储在寄存器中。
不同类型的寄存器可以存储不同长度的二进制数据。
2.3 寄存器的读写操作寄存器的读写操作是通过CPU控制信号实现的,当CPU需要读取或者写入寄存器中的数据时,会发送相应的控制信号给寄存器,完成数据的读取或者写入操作。
三、寄存器的数据传输原理3.1 寄存器之间的数据传输寄存器之间的数据传输通常通过数据总线实现,当一个寄存器需要将数据传输给另一个寄存器时,会通过数据总线将数据传输到目标寄存器中。
3.2 寄存器和内存之间的数据传输寄存器和内存之间的数据传输通常通过数据总线和地址总线实现,当CPU需要从内存中读取数据时,会将数据传输到寄存器中进行处理。
3.3 寄存器和I/O设备之间的数据传输寄存器和I/O设备之间的数据传输通常通过I/O总线实现,当CPU需要与外部设备进行数据交换时,会通过寄存器将数据传输到相应的I/O设备中。
什么是电路中的移位寄存器电路中的移位寄存器是一种重要的数字电路元件,用于在计算机与数字系统中实现数据存储、传输和处理的功能。
它能够以特定的方式存储和移动数据位,以满足不同的应用需求。
本文将介绍移位寄存器的定义、工作原理、分类以及应用领域,以及对于这些内容的深入讨论。
一、定义移位寄存器是一种能够保存、移动和处理二进制数据的电路元件。
它可以在时钟信号的控制下,将数据位从一个位置移动到另一个位置,实现数据的传输和存储。
移位寄存器通常由触发器、逻辑门和控制电路组成。
二、工作原理移位寄存器的工作原理基于触发器的特性,触发器是一种能够存储一个位信息的电路元件。
在移位寄存器中,触发器被连接成一个环状结构,形成一个寄存器单元。
时钟信号的上升沿或下降沿触发触发器的工作,使得数据位可以在触发器之间传输。
三、分类根据数据的传输方式,移位寄存器可以分为以下几种类型:串行输入/串行输出(SISO)寄存器、并行输入/串行输出(PISO)寄存器、串行输入/并行输出(SIPO)寄存器、并行输入/并行输出(PIPO)寄存器。
不同类型的移位寄存器适用于不同的应用情况。
1. 串行输入/串行输出(SISO)寄存器:每个时钟周期只能输入或输出一个数据位。
适用于需要一位一位地进行数据处理的应用,如二进制计数器。
2. 并行输入/串行输出(PISO)寄存器:能够一次性输入多个数据位,但每个时钟周期只能输出一个数据位。
适用于需要将并行数据串行输出的应用,如帧同步。
3. 串行输入/并行输出(SIPO)寄存器:每个时钟周期只能输入一个数据位,但可以一次性输出多个数据位。
适用于需要从串行数据中提取并行数据的应用,如数据解码。
4. 并行输入/并行输出(PIPO)寄存器:能够一次性输入和输出多个数据位。
适用于需要同时处理并行数据的应用,如数字滤波器。
四、应用领域移位寄存器在数字电路中有广泛的应用,以下是一些常见的应用领域:1. 数据存储:移位寄存器可以用于保存计算机或数字系统中的数据。
寄存器的工作原理
寄存器是计算机中的一种存储器件,用于暂时存放指令、数据和地址等信息。
它的主要工作原理如下:
1. 存储功能:寄存器可以存储二进制数值,通常以位(bit)
为单位。
不同的计算机体系结构有不同的寄存器位数,例如8位、16位、32位或64位等。
寄存器通过内部的触发器电路来
保存数值,这些触发器的状态在电路中通过稳定的电压和电流来维持,从而实现长期存储。
2. 数据传输:寄存器用于在计算机各个部件之间传输数据。
它可以接收来自内存、输入设备、输出设备和其他寄存器的数据,也可以将数据发送给这些部件。
数据传输可以通过总线实现,寄存器与总线之间的连接允许高速数据传输。
3. 寄存器与CPU的关系:寄存器是与中央处理器(CPU)紧
密关联的硬件部件。
CPU可直接访问寄存器,能够快速读取
和写入寄存器中的数据。
寄存器可用作暂存器,存储正在运算的操作数和结果,并能够快速执行各种算术和逻辑操作。
4. 寄存器的种类:计算机中存在多种类型的寄存器,如通用寄存器、程序计数器、指令寄存器、栈指针寄存器、标志寄存器等。
不同类型的寄存器用于不同的目的和任务,有助于提高计算机的性能和功能。
总之,寄存器在计算机中起着重要的作用,它们通过存储和传
输数据来支持计算机的运算和运行。
寄存器具有高速的读写能力,在计算机的各个部件之间承担着数据交流的重要角色。
EAX是什么意思?将数据33221100H传送到EAX寄存器的指令模拟图32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP)6个段寄存器(ES、CS、SS、DS、FS和GS)1个指令指针寄存器(EIP) 1个标志寄存器(EFlags)1、数据寄存器数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。
32位CPU有4个32位的通用寄存器EAX、EBX、ECX和EDX。
对低16位数据的存取,不会影响高16位的数据。
这些低16位寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。
4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每个寄存器都有自己的名称,可独立存取。
程序员可利用数据寄存器的这种“可分可合”的特性,灵活地处理字/字节的信息。
寄存器EAX通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。
可用于乘、除、输入/输出等操作,使用频率很高;寄存器EBX称为基地址寄存器(Base Register)。
它可作为存储器指针来使用;寄存器ECX称为计数寄存器(Count Register)。
在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用CL来指明移位的位数;寄存器EDX称为数据寄存器(Data Register)。
在进行乘、除运算时,它可作为默认的操作数参与运算,也可用于存放I/O的端口地址。
在16位CPU中,AX、BX、CX和DX不能作为基址和变址寄存器来存放存储单元的地址,在32位CPU中,其32位寄存器EAX、EBX、ECX和EDX不仅可传送数据、暂存数据保存算术逻辑运算结果,而且也可作为指针寄存器,所以,这些32位寄存器更具有通用性。
36寄存器写法-回复什么是寄存器?为什么需要寄存器?在计算机系统中,寄存器是一种用于存储和处理数据的硬件组件。
它是CPU中的一部分,通常位于CPU内部,速度非常快,因此可以提供快速的数据存取操作。
寄存器是一个小而高速的存储设备,其容量较小,通常只能存储少量的数据。
在操作系统和编程中,寄存器有着重要的作用。
首先,寄存器用于存储CPU指令和操作数。
在执行计算机指令的过程中,需要使用一些数据来进行计算或操作。
这些数据存储在寄存器中,使得CPU可以快速访问这些数据,而无需从主存取得。
由于寄存器位于CPU 内部,其访问速度非常快,能够在一个时钟周期内完成数据的读取和写入操作。
这使得寄存器成为处理器内部数据操作的理想选择。
其次,寄存器用于存储程序执行的临时变量。
在程序执行过程中,通常需要使用一些临时变量来存储计算结果、中间结果或其他需要暂时保存的数据。
将这些临时变量存储在寄存器中,可以大大减少数据的读取和写入操作,提高程序的执行效率。
寄存器的高速访问速度和较小的容量使得它们非常适合用于存储临时变量。
此外,寄存器还用于参数传递和函数调用。
在程序执行过程中,经常需要将数据传递给函数或者从函数中返回数据。
寄存器可以用于存储函数的参数值,以及在函数调用的过程中存储函数的返回值。
通过使用寄存器传递参数和返回值,可以避免在堆栈上进行数据的读取和写入操作,提高函数调用的效率。
在现代计算机系统中,通常会有多个不同类型的寄存器,用于存储不同种类的数据。
例如,通用寄存器用于存储一般性的数据,浮点寄存器用于存储浮点数值,向量寄存器用于存储向量数据等等。
这样可以进一步提高程序的执行效率,并支持更丰富的数据处理操作。
总结起来,寄存器是计算机系统中的重要组成部分,用于存储和处理数据。
通过提供快速的数据存取操作,寄存器可以加快程序执行的速度,并提高计算机系统的整体性能。
寄存器在代码编写和程序设计中起到了至关重要的作用,对于系统的优化和性能的提升起到了至关重要的作用。
寄存器是什么有什么作⽤寄存器是CPU内部的元件,寄存器拥有⾮常⾼的读写速度,所以在寄存器之间的数据传送⾮常快。
寄存器的⽤途:1.可将寄存器内的数据执⾏算术及逻辑运算。
2.存于寄存器内的地址可⽤来指向内存的某个位置,即寻址。
3.可以⽤来读写数据到电脑的周边设备。
8086 有8个8位数据寄存器,这些8位寄存器可分别组成16位寄存器:AH&AL=AX:累加寄存器,常⽤于运算;BH&BL=BX:基址寄存器,常⽤于地址索引;CH&CL=CX:计数寄存器,常⽤于计数;DH&DL=DX:数据寄存器,常⽤于数据传递。
为了运⽤所有的内存空间,8086设定了四个段寄存器,专门⽤来保存段地址:CS(Code Segment):代码段寄存器;DS(Data Segment):数据段寄存器;SS(Stack Segment):堆栈段寄存器;ES(Extra Segment):附加段寄存器。
当⼀个程序要执⾏时,就要决定程序代码、数据和堆栈各要⽤到内存的哪些位置,通过设定段寄存器CS,DS,SS来指向这些起始位置。
通常是将DS固定,⽽根据需要修改CS。
所以,程序可以在可寻址空间⼩于64K的情况下被写成任意⼤⼩。
所以,程序和其数据组合起来的⼤⼩,限制在DS所指的64K内,这就是 COM⽂件不得⼤于64K的原因。
8086以内存做为战场,⽤寄存器做为军事基地,以加速⼯作。
除了前⾯所提的寄存器外,还有⼀些特殊功能的寄存器:IP(IntructionPointer):指令指针寄存器,与CS配合使⽤,可跟踪程序的执⾏过程;SP(StackPointer):堆栈指针,与SS配合使⽤,可指向⽬前的堆栈位置。
BP(BasePointer):基址指针寄存器,可⽤作SS的⼀个相对基址位置;SI(SourceIndex):源变址寄存器可⽤来存放相对于DS段之源变址指针;DI(Destination Index):⽬的变址寄存器,可⽤来存放相对于 ES段之⽬的变址指针。
寄存器、鎖存器、存儲器有什么區別?引用 回复电子工程专辑:iPad 深度拆解分析:探寻A4处理器的奥秘第1楼 回复主题:寄存器、鎖存器、存儲器有什么區別? 发布时间:2006-12-12 上午11:18作者: 老兴 等级: 白银掌门 积分: 6363分 发帖数: 1711次 网站总积分: 6423分发送消息 加为好友 查看用户的所有发言CPU 结构中寄存器频繁参与累加器(运算部件)的工作,有的有溢出位,直接寻址速度快.鎖存器用于IO 口的输出,写操作后保持状态,直接寻址速度快.存儲器用于数据量大的存储,只能间接寻址,占用的机器周期长寻址慢.引用 回复鲜花 ( 0) 臭鸡蛋 ( 0)电子工程专辑:“熊猫”如何出世?泰克中国研发团队的成长故事第2楼回复主题:寄存器、鎖存器、存儲器有什么區別?发布时间:2006-12-12 上午11:21 haidee123 :一次问这么多,你在考大家么?作者:老兴等级:白银掌门积分:6363分发帖数:1711次网站总积分:6423分发送消息加为好友查看用户的所有发言引用回复鲜花( 0) 臭鸡蛋( 0)电子工程专辑:新型MOSFET满足高速开关等三大关键性能第3楼回复主题:寄存器、鎖存器、存儲器有什么區別?发布时间:2006-12-13 上午9:11作者: Unicorn 等级: 武林新秀 积分: 614分 发帖数: 292次 网站总积分: 631分发送消息 加为好友 查看用户的所有发言寄存器是边沿触发锁存器是电平触发存储器,memory ??引用 回复电子工程专辑:商机探讨之:中国城市轨道交通市场安防第4楼 回复主题:寄存器、鎖存器、存儲器有什么區別? 发布时间:2006-12-13 下午7:04以下是引用Unicorn 在2006-12-13 上午9:11的发言 寄存器是边沿触发锁存器是电平触发存储器,memory ?? 没有错!寄存器与锁存器的区别是边沿触发和电平触发,存储器由很多路的寄存器或是锁存器按单元纵,横排列的,可分动态,静态,静动态存储器,要解释得太多,这里也说不完,有时间,多看书吧!分发送消息 加为好友 查看用户的所有发言引用 回复电子工程专辑:降压转换器——选择正确电容是关键第5楼 回复主题:寄存器、鎖存器、存儲器有什么區別? 发布时间:2006-12-14 下午3:34作者: odd_kylin 等级: 黄金少侠 积分: 1678分 发帖数: 271次 网站总积分: 1678分发送消息 加为好友 查看用户的所有发言寄存器和锁存器存储器,原理上本质是一样的利用结点电容,稳态电路等原理。
什么是寄存器主要内容如何辨别STM32芯⽚的正⽅向STM32芯⽚架构图什么叫存储器映射什么叫寄存器映射⼀:如何辨别STM32芯⽚的正⽅向看丝印左边逆时针为第⼀个引脚在芯⽚表⾯有⼀个⼩圆点逆时针为第⼀引脚⼆:STM32芯⽚架构图(对于这两个图的理解可以参考STM32参考⼿册驱动单元由ARM 粉⾊部分位外设由ST设计,主要学习APB1 APB2 两个总线(两个总线速度不同)中的外设)三:什么叫存储器映射存储器本⾝不具有地址信息,它的地址是由芯⽚⼚商(ST)或⽤户分配,给存储器分配地址的过程就称为存储器映射。
给存储器分配地址的过程叫存储器映射,再分配⼀个地址叫重映射。
下图中的block0-7就相当于是存储器。
ARM的Cortex内核位32位,共有2^32=4GB的内存,ARM将4GB的内存分为8块,每块512Mb,分别位block0-7,如图其中ARM规定block0中,规定ST等这类公司只能将flash(程序)在其中,虽然由很多剩余,但仍要这么放置,为以后着想。
其他的block也规定。
下⾯我给出ARM规定block规定的block0-7放的相应外设图以及相应的地址(结合第⼆个图):我们在学习的时候主要学习block中的外设。
我们编程的时候主要是对block2中的外设对应的地址进⾏编程,然后通过GPIO输出相应的⾼低电平四:什么叫寄存器映射给有特定功能的内存单元取⼀个别名,这个别名就是我们经常说的寄存器,这个给已经分配好地址的有特定功能的内存单元取别名的过程就叫寄存器映射。
例如我们在51单⽚机中为什么可以⽤ P0=0xFF 点亮⼩灯;这是因为在其头⽂件中reg52.h中利⽤sfr这个关键字定义了 sfr P0=0x80;这就意味这我们可以⽤P0代表80这个地址单元。
但是在STM32中没有这个关键字。
那它是如何实现的呢,在STM32参考⼿册中GPIOx-ODR的低⼗六位全位1即可点亮16个⼩灯,我们取x位B端⼝,GPIOB的起始地址位0x4001 0C00-0x4001 0FFF在这段地址中有很多的寄存器包括ODR(偏移地址位0Ch),这ODR这个寄存的地址为0x4001 0c0c(绝对地址)。
累加器是寄存器吗_寄存器、累加器、暂存器有什么区别什么是寄存器寄存器,是集成电路中非常重要的一种存储单元,通常由触发器组成。
在集成电路设计中,寄存器可分为电路内部使用的寄存器和充当内外部接口的寄存器这两类。
内部寄存器不能被外部电路或软件访问,只是为内部电路的实现存储功能或满足电路的时序要求。
而接口寄存器可以同时被内部电路和外部电路或软件访问,CPU中的寄存器就是其中一种,作为软硬件的接口,为广泛的通用编程用户所熟知。
寄存器的用途1、可将寄存器内的数据执行算术及逻辑运算。
2、存于寄存器内的地址可用来指向内存的某个位置,即寻址。
3、可以用来读写数据到电脑的周边设备。
什么是累加器在中央处理器中,累加器(accumulator)是一种寄存器,用来储存计算产生的中间结果。
如果没有像累加器这样的寄存器,那么在每次计算(加法,乘法,移位等等)后就必须要把结果写回到内存,也许马上就得读回来。
然而存取主存的速度是比从算术逻辑单元到有直接路径的累加器存取更慢。
累加器的作用1、在运算器中,累加器是专门存放算术或逻辑运算的一个操作数和运算结果的寄存器。
能进行加、减、读出、移位、循环移位和求补等操作。
是运算器的主要部分。
2、在中央处理器CPU中,累加器(accumulator)是一种暂存器,它用来储存计算所产生的中间结果。
如果没有像累加器这样的暂存器,那么在每次计算(加法,乘法,移位等等)后就必须要把结果写回到内存,然后再读回来。
然而存取主内存的速度是比从数学逻辑单元(ALU)到有直接路径的累加器存取更慢。
3、在汇编语言程序中,累加器AX是一个非常重要的寄存器,但在程序中用它来保存临时数据时,最后将其转存到其它寄存器或内存单元中,以防止在其它指令的执行过程中使其中的数据被修改,从而得到不正确的结果,为程序的调试带来不必要的麻烦。
什么是暂存器暂存器是用来暂存由数据总线或通用寄存的东西。
它是中央处理器内的其中。
EAX是什么意思?将数据33221100H传送到EAX寄存器的指令模拟图32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP)6个段寄存器(ES、CS、SS、DS、FS和GS)1个指令指针寄存器(EIP) 1个标志寄存器(EFlags)1、数据寄存器数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。
32位CPU有4个32位的通用寄存器EAX、EBX、ECX和EDX。
对低16位数据的存取,不会影响高16位的数据。
这些低16位寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。
4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每个寄存器都有自己的名称,可独立存取。
程序员可利用数据寄存器的这种“可分可合”的特性,灵活地处理字/字节的信息。
寄存器EAX通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。
可用于乘、除、输入/输出等操作,使用频率很高;寄存器EBX称为基地址寄存器(Base Register)。
它可作为存储器指针来使用;寄存器ECX称为计数寄存器(Count Register)。
在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用CL来指明移位的位数;寄存器EDX称为数据寄存器(Data Register)。
在进行乘、除运算时,它可作为默认的操作数参与运算,也可用于存放I/O的端口地址。
在16位CPU中,AX、BX、CX和DX不能作为基址和变址寄存器来存放存储单元的地址,在32位CPU中,其32位寄存器EAX、EBX、ECX和EDX不仅可传送数据、暂存数据保存算术逻辑运算结果,而且也可作为指针寄存器,所以,这些32位寄存器更具有通用性。
2、变址寄存器32位CPU有2个32位通用寄存器ESI和EDI。
其低16位对应先前CPU中的SI和DI,对低16位数据的存取,不影响高16位的数据。
寄存器ESI、EDI、SI和DI称为变址寄存器(Index Register),它们主要用于存放存储单元在段内的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。
变址寄存器不可分割成8位寄存器。
作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。
它们可作一般的存储器指针使用。
在字符串操作指令的执行过程中,对它们有特定的要求,而且还具有特殊的功能。
3、指针寄存器其低16位对应先前CPU中的BP和SP,对低16位数据的存取,不影响高16位的数据。
32位CPU有2个32位通用寄存器EBP和ESP。
它们主要用于访问堆栈内的存储单元,并且规定:EBP为基指针(Base Pointer)寄存器,用它可直接存取堆栈中的数据;ESP为堆栈指针(Stack Pointer)寄存器,用它只可访问栈顶。
寄存器EBP、ESP、BP和SP称为指针寄存器(Pointer Register),主要用于存放堆栈内存储单元的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。
指针寄存器不可分割成8位寄存器。
作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。
4、段寄存器段寄存器是根据内存分段的管理模式而设置的。
内存单元的物理地址由段寄存器的值和一个偏移量组合而成的,这样可用两个较少位数的值组合成一个可访问较大物理空间的内存地址。
CPU内部的段寄存器:ECS——代码段寄存器(Code Segment Register),其值为代码段的段值;EDS——数据段寄存器(Data Segment Register),其值为数据段的段值;EES——附加段寄存器(Extra Segment Register),其值为附加数据段的段值;ESS——堆栈段寄存器(Stack Segment Register),其值为堆栈段的段值;EFS——附加段寄存器(Extra Segment Register),其值为附加数据段的段值;EGS——附加段寄存器(Extra Segment Register),其值为附加数据段的段值。
在16位CPU系统中,它只有4个段寄存器,所以,程序在任何时刻至多有4个正在使用的段可直接访问;在32位微机系统中,它有6个段寄存器,所以,在此环境下开发的程序最多可同时访问6个段。
32位CPU有两个不同的工作方式:实方式和保护方式。
在每种方式下,段寄存器的作用是不同的。
有关规定简单描述如下:实方式:前4个段寄存器CS、DS、ES和SS与先前CPU中的所对应的段寄存器的含义完全一致,内存单元的逻辑地址仍为“段值:偏移量”的形式。
为访问某内存段内的数据,必须使用该段寄存器和存储单元的偏移量。
保护方式:在此方式下,情况要复杂得多,装入段寄存器的不再是段值,而是称为“选择子”(Selector)的某个值。
5、指令指针寄存器32位CPU把指令指针扩展到32位,并记作EIP,EIP的低16位与先前CPU中的IP作用相同。
指令指针EIP、IP(Instruction Pointer)是存放下次将要执行的指令在代码段的偏移量。
在具有预取指令功能的系统中,下次要执行的指令通常已被预取到指令队列中,除非发生转移情况。
所以,在理解它们的功能时,不考虑存在指令队列的情况。
6、标志寄存器一、运算结果标志位1、进位标志CF(Carry Flag)进位标志CF主要用来反映运算是否产生进位或借位。
如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0。
使用该标志位的情况有:多字(字节)数的加减运算,无符号数的大小比较运算,移位操作,字(字节)之间移位,专门改变CF值的指令等。
2、奇偶标志PF(Parity Flag)奇偶标志PF用于反映运算结果中“1”的个数的奇偶性。
如果“1”的个数为偶数,则PF的值为1,否则其值为0。
利用PF可进行奇偶校验检查,或产生奇偶校验位。
在数据传送过程中,为了提供传送的可靠性,如果采用奇偶校验的方法,就可使用该标志位。
3、辅助进位标志AF(Auxiliary Carry Flag)在发生下列情况时,辅助进位标志AF的值被置为1,否则其值为0:(1)、在字操作时,发生低字节向高字节进位或借位时;(2)、在字节操作时,发生低4位向高4位进位或借位时。
对以上6个运算结果标志位,在一般编程情况下,标志位CF、ZF、SF和OF的使用频率较高,而标志位PF和AF的使用频率较低。
4、零标志ZF(Zero Flag)零标志ZF用来反映运算结果是否为0。
如果运算结果为0,则其值为1,否则其值为0。
在判断运算结果是否为0时,可使用此标志位。
5、符号标志SF(Sign Flag)符号标志SF用来反映运算结果的符号位,它与运算结果的最高位相同。
在微机系统中,有符号数采用码表示法,所以,SF也就反映运算结果的正负号。
运算结果为正数时,SF的值为0,否则其值为1。
6、溢出标志OF(Overflow Flag)溢出标志OF用于反映有符号数加减运算所得结果是否溢出。
如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被清为0。
“溢出”和“进位”是两个不同含义的概念,不要混淆。
如果不太清楚的话,请查阅《计算机组成原理》课程中的有关章节。
二、状态控制标志位状态控制标志位是用来控制CPU操作的,它们要通过专门的指令才能使之发生改变。
1、追踪标志TF(Trap Flag)当追踪标志TF被置为1时,CPU进入单步执行方式,即每执行一条指令,产生一个单步中断请求。
这种方式主要用于程序的调试。
指令系统中没有专门的指令来改变标志位TF的值,但程序员可用其它办法来改变其值。
2、中断允许标志IF(Interrupt-enable Flag)中断允许标志IF是用来决定CPU是否响应CPU外部的可屏蔽中断发出的中断请求。
但不管该标志为何值,CPU都必须响应CPU外部的不可屏蔽中断所发出的中断请求,以及CPU内部产生的中断请求。
具体规定如下:(1)、当IF=1时,CPU可以响应CPU外部的可屏蔽中断发出的中断请求;(2)、当IF=0时,CPU不响应CPU外部的可屏蔽中断发出的中断请求。
CPU的指令系统中也有专门的指令来改变标志位IF的值。
3、方向标志DF(Direction Flag)方向标志DF用来决定在串操作指令执行时有关指针寄存器发生调整的方向。
具体规定在第5.2.11节——字符串操作指令——中给出。
在微机的指令系统中,还提供了专门的指令来改变标志位DF的值。
三、32位标志寄存器增加的标志位1、I/O特权标志IOPL(I/O Privilege Level)I/O特权标志用两位二进制位来表示,也称为I/O特权级字段。
该字段指定了要求执行I/O指令的特权级。
如果当前的特权级别在数值上小于等于IOPL的值,那么,该I/O指令可执行,否则将发生一个保护异常。
2、嵌套任务标志NT(Nested Task)嵌套任务标志NT用来控制中断返回指令IRET的执行。
具体规定如下:(1)、当NT=0,用堆栈中保存的值恢复EFLAGS、CS和EIP,执行常规的中断返回操作;(2)、当NT=1,通过任务转换实现中断返回。
3、重启动标志RF(Restart Flag)重启动标志RF用来控制是否接受调试故障。
规定:RF=0时,表示“接受”调试故障,否则拒绝之。
在成功执行完一条指令后,处理机把RF置为0,当接受到一个非调试故障时,处理机就把它置为1。
4、虚拟8086方式标志VM(Virtual 8086 Mode)如果该标志的值为1,则表示处理机处于虚拟的8086方式下的工作状态,否则,处理机处于一般保护方式下的工作状态。