控制寄存器和系统地址寄存器
- 格式:doc
- 大小:55.00 KB
- 文档页数:4
寄存器的基础知识什么是寄存器?寄存器(Register)是计算机中一种用来存储和操作数据的硬件元件。
它由一组存储单元组成,每个存储单元可以存储一个固定大小的数据。
寄存器在计算机中扮演着重要的角色,可以存储算术运算的操作数、控制信号、地址信息等。
寄存器的分类根据功能和使用方式,寄存器可以分为以下几种类型:通用寄存器通用寄存器(General Purpose Register)是最常见的寄存器类型,其用途十分广泛。
它们用来存储临时数据、变量、函数参数等。
通用寄存器通常具有较小的存储容量,例如x86架构中的EAX、EBX、ECX和EDX寄存器,每个寄存器都有32位大小。
累加寄存器累加寄存器(Accumulator Register)主要用于执行算术和逻辑运算。
它是一种特殊的通用寄存器,在运算过程中存储中间结果和最终结果。
累加寄存器在某些指令集架构中有特殊优化,因此在一些特定的计算任务中性能更好。
状态寄存器状态寄存器(Flag Register)用于存储处理器的运行状态和标志位。
例如,它可以存储条件运算的结果,比如是否相等、是否溢出等。
状态寄存器通常由多个二进制位组成,每个位上的值表示某一种状态。
通过读取和设置状态寄存器的位,程序可以获得有关处理器的各种信息。
指令指针寄存器指令指针寄存器(Instruction Pointer Register)存储下一条将要执行的指令的内存地址。
在程序执行过程中,处理器会不断读取指令指针寄存器中的值,并自动递增以指向下一条指令。
指令指针寄存器的值可以由程序员修改,以实现跳转、函数调用等操作。
寄存器的操作寄存器在计算机中起到存储和操作数据的作用,它可以执行多种操作,包括读取、写入、清零等。
寄存器与其他存储器件(如内存)相比,读取和写入速度更快,但容量较小。
寄存器的操作可以通过特定的指令来完成,这些指令通常是处理器指令集中的一部分。
下面是一些常见的寄存器操作:1.读取寄存器:通过读取指令将寄存器的值加载到处理器的内部寄存器中,以供后续指令使用。
Intel80386CPUIntel 80386 CPU簡單了解運⾏模式⼀般CPU只有⼀种运⾏模式,能够⽀持多个程序在各⾃独⽴的内存空间中并发执⾏,且有⽤户特权级和内核特权级的区分,让⼀般应⽤不能破坏操作系统内核和执⾏特权指令。
80386处理器有四种运⾏模式:实模式、保护模式、SMM模式和虚拟8086模式。
这⾥对涉及ucore的实模式、保护模式做⼀个简要介绍。
实模式:这是个⼈计算机早期的8086处理器采⽤的⼀种简单运⾏模式,当时微软的MS-DOS操作系统主要就是运⾏在8086的实模式下。
80386加电启动后处于实模式运⾏状态,在这种状态下软件可访问的物理内存空间不能超过1MB,且⽆法发挥Intel 80386以上级别的32位CPU的4GB内存管理能⼒。
实模式将整个物理内存看成分段的区域,程序代码和数据位于不同区域,操作系统和⽤户程序并没有区别对待,⽽且每⼀个指针都是指向实际的物理地址。
这样⽤户程序的⼀个指针如果指向了操作系统区域或其他⽤户程序区域,并修改了内容,那么其后果就很可能是灾难性的。
保护模式:保护模式的⼀个主要⽬标是确保应⽤程序⽆法对操作系统进⾏破坏。
实际上,80386就是通过在实模式下初始化控制寄存器(如GDTR,LDTR,IDTR与TR等管理寄存器)以及页表,然后再通过设置CR0寄存器使其中的保护模式使能位置位,从⽽进⼊到80386的保护模式。
当80386⼯作在保护模式下的时候,其所有的32根地址线都可供寻址,物理寻址空间⾼达4GB。
在保护模式下,⽀持内存分页机制,提供了对虚拟内存的良好⽀持。
保护模式下80386⽀持多任务,还⽀持优先级机制,不同的程序可以运⾏在不同的特权级上。
特权级⼀共分0~3四个级别,操作系统运⾏在最⾼的特权级0上,应⽤程序则运⾏在⽐较低的级别上;配合良好的检查机制后,既可以在任务间实现数据的安全共享也可以很好地隔离各个任务。
內存架構地址是访问内存空间的索引。
⼀般⽽⾔,内存地址有两个:⼀个是CPU通过总线访问物理内存⽤到的物理地址,⼀个是我们编写的应⽤程序所⽤到的逻辑地址(也有⼈称为虚拟地址)。
1、微处理器(CPU)由运算器、控制器、寄存器组三部分组成。
2、运算器由算术逻辑单元ALU、通用或专用寄存器组及内部总线三部分组成。
3、控制器的功能有指令控制、时序控制、操作控制,控制器内部由程序计数器PC、指令寄存器IR、指令译码器ID、时序控制部件以及微操作控制部件(核心)组成。
4、8088与存储器和I/O接口进行数据传输的外部数据总线宽度为8位,而8086的数据总线空度为16位。
除此之外,两者几乎没有任何差别。
5、在程序执行过程中,CPU总是有规律的执行以下步骤:a从存储器中取出下一条指令b指令译码c如果指令需要,从存储器中读取操作数d执行指令e如果需要,将结果写入存储器。
6、8088/8086将上述步骤分配给了两个独立的部件:执行单元EU、总线接口单元BIU。
EU作用:负责分析指令(指令译码)和执行指令、暂存中间运算结果并保留结果的特征,它由算数逻辑单元(运算器)ALU、通用寄存器、标志寄存器、EU控制电路组成。
BIU作用:负责取指令、取操作、写结果,它由段寄存器、指令指针寄存器、指令队列、地址加法器、总线控制逻辑组成。
7、8088/8086CPU的内部结构都是16位的,即内部寄存器只能存放16位二进制码,内部总线也只能传送16位二进制码。
8、为了尽可能地提高系统管理(寻址)内存的能力,8088/8086采用了分段管理的方法,将内存地址空间分为了多个逻辑段,每个逻辑段最大为64K个单元,段内每个单元的地址长度为16位。
9、8088/8086系统中,内存每个单元的地址都有两部分组成,即段地址和段内偏移地址。
10、8088/8086CPU都是具有40条引出线的集成电路芯片,采用双列直插式封装,当MN/MX=1时,8088/8086工作在最小模式,当MN/MX=0时,8088/8086工作在最大模式。
11、8088/8086 CPU内部共有14个16位寄存器。
按其功能可分为三大类,即通用寄存器(8个)、段寄存器(4个)、控制寄存器(2个)。
寄存器PLC地址与寄存器modbus协议地址寄存器PLC地址指存放于控制器中的地址,这些控制器可以是PLC,也可以使触摸屏,或是⽂本显⽰器。
PLC地址⼀般采⽤10进制描述,共有5位,其中第⼀位代码寄存器类型。
第⼀位数字和寄存器类型的对应关系如表1所⽰。
PLC地址例如40001、30002等。
寄存器modbus协议地址指通信时使⽤的寄存器地址,在实际编程中,由于寄存器PLC地址前缀的区分作⽤,所以只需说明后4位数,⽽且需转换为4位⼗六进制地址。
例如PLC地址40001对应寻址地址0x0000,40002对应寻址地址0x0001,寄存器寻址地址⼀般使⽤16进制描述。
再如,PLC寄存器地址40003对应协议地址0002,PLC寄存器地址30003对应协议地址0002。
在实际编程中,由于前缀的区分作⽤,所以只需说明后4位数,⽽且需转换为4位⼗六进制地址。
⽀持 Modbus 协议的设备或软件,使⽤时⽤户直接设置或看到的应 当是 Modbus 数据地址。
Modbus 地址所访问的数据,是通过各种 “功能”读写⽽来。
功能码是 Modbus 地址的底层。
如果 Modbus 通 信的⼀⽅提供的所谓 Modbus 协议只有功能码,则需要注意了解此 功能号与 Modbus 地址间的对应关系。
使⽤ modbus 地址时应注意下述问题:1)40001~4xxxx 是美国 modicon 公司和 ge 公司 plc 使⽤的 modbus 地址,它是基于1的地址,即同类元件的⾸地址为1。
西门⼦plc 的 modbus 地址是基于0的地址。
2)美国的 modbus 地址左起第2位⽤来表⽰元件的类型,例如 i0.0的 modbus 地址为010001。
因为数据类型已经包含在功能码中了,西门⼦的 i0.0的 modbus 地址实际上为000000, i2.0的 modbus 地址为 000016(或⼗六进制数16#0010) ,⽽不是010017。
微机原理课后习题参考答案(总25页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--上册第一章P9微处理器、微型计算机、微型计算机系统的区别是什么答:(1)微型计算机中的运算器和控制器合起来称为中央处理器,也就是微处理器,又称微处理机。
(2)微型计算机是由cpu、主存储器、输入/输出接口电路和系统总线构成。
(3)微型计算机系统由微型计算机、输入/输出设备、外存储器、系统软件、电源、面板和机架等组成。
微型计算机由哪些基本部分构成微型计算机是由cpu、主存储器、输入/输出接口电路和系统总线构成。
说明CISC、RISC及其主要区别。
CISC是指复杂指令系统计算机,RISC是指精简指令系统计算机。
他们的区别在于不同的CPU设计理念和方法。
RISC指令系统仅包含哪些必要的经常使用的指令,不经常使用的功能,往往通过基本指令组合来完成。
完成特殊功能时效率比较低。
CISC的指令系统比较丰富,一些特殊功能都有相应的指令。
处理特殊任务效率较高。
RISC对存储器操作相对简单,使对存储器访问的控制简化;而CISC机器的存储器操作指令较多,对存储器的访问有更多的指令直接操作,要求的控制逻辑比较复杂。
RISC在一条指令执行的适当地方可以响应中断;而CISC机器是在一条指令执行结束后响应中断。
RISC CPU的电路构成比CISC CPU简单,因此面积小、功耗也更低;CISC电路CPU电路复杂,同水平比RISC CPU面积大、功耗大。
RISC CPU结构比较简单,布局紧凑规整,设计周期较短,比较容易采用一些并行计算的最新技术;CISC CPU结构复杂,设计周期长,技术更新难度大。
从使用角度看,RISC 微处理器结构简单,指令规整,性能容易把握,易学易用;CISC微处理器结构复杂,功能强大,实现特殊功能容易。
第二章8086CPU 由哪两大部分组成简述它们的主要功能。
总线接口部件BIU跟执行部件EU。
单片机中寄存器的作用单片机中寄存器的作用1、寄存器的作用寄存器是单片机中最重要的部件之一,它可以保存信息(数据和指令),以及控制信号。
寄存器可以把数据存放在内部,以便处理器对其进行操作。
所有的电脑、控制系统中都要求有寄存器,它们可以依据操作系统、存储器或处理器的要求,在操作系统、存储器或处理器之间传递信息。
2、寄存器的功能(1)存储寄存器存储寄存器是一种用于存放控制指令、地址、数据等信息的存储器,可以把各种信息存放在内部,以便处理器对其进行操作。
(2)控制寄存器控制寄存器用来控制电路的运行,它可以把外部信号转换成内部控制信号。
(3)状态寄存器状态寄存器可以把外部信号转换成内部状态码,用来描述当前的状态,它可以用来检测、追踪和控制系统的运行状态,例如报警状态、可断电状态等。
(4)状态传感器状态传感器是一种特殊的寄存器,它能够检测电路中的状态,可以通过状态传感器确定电路的某个状态是否合法。
(5)常量存储器常量存储器是一种用于存储固定数据的存储器,它可以把特定的值存储下来,以便在日后使用。
例如,时钟时间、计算机参数或系统参数等。
3、寄存器的用途(1)控制存储器存储器可以把指令和数据存放在寄存器上,以便处理器读取它。
存储器可以将指令转换成控制信号,以便处理器能够控制其他电路的运行。
(2)状态检测状态寄存器可以用来检测系统的状态,比如有无故障,有无内存空间,有无电源等。
它可以帮助程序员更好的控制电路的运行,实现系统的自检和自动恢复。
(3)定时器定时器是一种特殊的寄存器,它能够定时记录系统的运行时间,也可以用来生成时钟信号,以便系统能够在合适的时间进行操作。
威纶通内部寄存器说明威纶通(WeLink)是一种常用于嵌入式系统中的通信协议,该协议定义了一系列的内部寄存器,用于实现数据传输、配置和控制等功能。
本文将对威纶通内部寄存器进行详细说明,以帮助读者更好地理解和应用该协议。
一、寄存器类型及作用1. 控制寄存器(Control Register):该寄存器用于控制威纶通的工作模式和参数配置。
通过写入特定的值,可以实现数据传输的启动、停止以及各种模式的切换。
2. 状态寄存器(Status Register):该寄存器记录了当前的传输状态和错误信息。
通过读取该寄存器,可以获取传输是否成功、是否发生错误以及错误类型等信息。
3. 数据寄存器(Data Register):该寄存器用于存储待传输的数据。
通过写入数据到该寄存器中,可以实现数据的发送;通过读取该寄存器中的数据,可以获取接收到的数据。
二、寄存器地址和访问方式威纶通内部寄存器采用统一的地址空间进行编址。
不同的寄存器通过不同的地址进行访问。
下面是寄存器地址及其对应的访问方式的示例:1. 控制寄存器(Address: 0x00):写入特定的值来配置控制参数。
2. 状态寄存器(Address: 0x01):读取该寄存器来获取当前的传输状态和错误信息。
3. 数据寄存器(Address: 0x02):写入数据到该寄存器中进行发送;读取该寄存器中的数据来获取接收到的数据。
在使用威纶通协议时,通过访问相应的寄存器地址,可以实现对控制、状态和数据的读写操作,从而进行数据的传输和配置。
三、寄存器配置示例以下是一个基于威纶通协议的简单示例,用于演示如何通过寄存器配置实现数据传输:1. 设置传输模式:写入控制寄存器(Address: 0x00)的特定值,选择传输模式(如单向传输、双向传输等)。
2. 发送数据:将待发送的数据写入数据寄存器(Address: 0x02),通过特定的数据格式进行封装,以实现数据的发送。
3. 接收数据:读取数据寄存器(Address: 0x02)中的数据,通过解析特定的数据格式,获取接收到的数据。
二.控制寄存器和系统地址寄存器
80386控制寄存器和系统地址寄存器如下表所示。
它们用于控制工作方式,控制分段管理机制及分页管理机制的实施。
控制寄存器CRx BIT31 BIT30—BIT12 BIT11—BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 CR0 PG 0000000000000000 ET TS EM MP PE CR1 保留
CR2 页故障线性地址
CR3 页目录表物理页码000000000000
BIT47—BIT16 BIT15—BIT0
全局描述符表寄存器GDTR 基地址界限中断描述符表寄存器IDTR 基地址界限
BIT15—BIT0 局部描述符表寄存器LDTR 选择子
任务状态段寄存器TR 选择子BIT31—BIT0 BIT31—BIT0 BIT11—BIT0 基地址界限属性
基地址界限属性
<一>控制寄存器
从上表可见,80386有四个32位的控制寄存器,分别命名位CR0、CR1、CR2和CR3。
但CR1被保留,供今后开发的处理器使用,在80386中不能使用CR1,否则会引起无效指令操作异常。
CR0包括指示处理器工作方式的控制位,包含启用和禁止分页管理机制的控制位,包含控制浮点协处理器操作的控制位。
CR2及CR3由分页管理机制使用。
CR0中的位5—位30及CR3中的位0至位11是保留位,这些位不能是随意值,必须为0。
控制寄存器CR0的低16位等同于80286的机器状态字MSW。
1.保护控制位
控制寄存器CR0中的位0用PE标记,位31用PG标记,这两个位控制分段和分页管理机制的操作,所以把它们称为保护控制位。
PE控制分段管理机制。
PE=0,处理器运行于实模式;PE=1,处理器运行于保护方式。
PG控制分页管理机制。
PG=0,禁用分页管理机制,此时分段管理机制产生的线性地址直接作为物理地址使用;PG=1,启用分页管理机制,此时线性地址经分页管理机制转换位物理地址。
关于分页管理机制的具体介绍在后面的文章中进行。
下表列出了通过使用PE和PG位选择的处理器工作方式。
由于只有在保护方式下才可启用分页机制,所以尽管两个位分别为0和1共可以有四种组合,但只有三种组合方式有效。
PE=0且PG=1是无效组合,因此,用PG为1且PE为0的值装入CR0寄存器将引起通用保护异常。
需要注意的是,PG位的改变将使系统启用或禁用分页机制,因而只有当所执行的程序的代码和至少有一部分数据在线性地址空间和物理地址空间具有相同的地址的情况下,才能改变PG位。
PG和PE 位与处
理器工
作模式PG PE 处理器工作方式
0 0 实模式
0 1 保护模式,禁用分页机制
1 0 非法组合
1 1 保护方式,启用分页机制
2.协处理器控制位
控制寄存器CR0中的位1—位4分别标记为MP(算术存在位)、EM(模拟位)、TS(任务切换位) 和ET(扩展类型位),它们控制浮点协处理器的操作。
当处理器复位时,ET位被初始化,以指示系统中数字协处理器的类型。
如果系统中存在80387协处理器,那么ET位置1;如果系统中存在80287协处理器或者不存在协处理器,那么ET位清0。
EM位控制浮点指令的执行是用软件模拟,还是由硬件执行。
EM=0时,硬件控制浮点指令传送到协处理器;EM=1时,浮点指令由软件模拟。
TS位用于加快任务的切换,通过在必要时才进行协处理器切换的方法实现这一目的。
每当进行任务切换时,处理器把TS置1。
TS=1时,浮点指令将产生设备不可用(DNA)异常。
MP 位控制W AIT指令在TS=1时,是否产生DNA异常。
MP=1和TS=1时,W AIT产生异常;MP=0时,W AIT指令忽略TS条件,不产生异常。
3.CR2和CR3
控制寄存器CR2和CR3由分页管理机制使用。
CR2用于发生页异常时报告出错信息。
当发生页异常时,处理器把引起页异常的线性地址保存在CR2中。
操作系统中的页异常处理程序可以检查CR2的内容,从而查出线性地址空间中的哪一页引起本次异常。
CR3用于保存页目录表的其始物理地址。
由于目录是页对齐的,所以仅高20位有效,低12 位保留未用。
向CR3中装入一个新值时,低12位必须为0;但从CR3中取值时,低12位被忽略。
每当用MOV指令重置CR3的值时,会导致分页机制高速缓冲区的内容无效,用此方法,可以在启用分页机制之前,即把PG位置1之前,预先刷新分页机制的高速缓存。
CR3寄存器即使在CR0寄存器的PG位或PE位为0时也可装入,如在实模式下也可设置CR3,以便进行分页机制的初始化。
在任务切换时,CR3要被改变,但是如果新任务中CR3的值与原任务中CR3的值相同,那么处理器不刷新分页高速缓存,以便当任务共享也表时有较快的执行速度。
<二>系统地址寄存器
全局描述符表GDT、局部描述符表LDT和中断描述符表IDT等都是保护方式下非常重要的特殊段,它们包含有为段机制所用的重要表格。
为了方便快速地定位这些段,处理器采用一些特殊的寄存器保存这些段的基地址和段界限。
我们把这些特殊的寄存器称为系统地址寄存器。
1.全局描述符表寄存器GDTR
如本文开始处的表格所示,GDTR长48位,其中高32位为基地址,低16位为界限。
由于GDT 不能有GDT本身之内的描述符进行描述定义,所以处理器采用GDTR为GDT这一特殊的系统段提供一个伪描述符。
GDTR给定了GDT,如下图所示。
GDTR中的段界限以字节为单位。
由于段选择子中只有13位作为描述符索引,而每个描述符长8个字节,所以用16位的界限足够。
通常,对于含有N个描述符的描述符表的段界限设为8*N-1。
利用结构类型可定义伪描述符如下:
PDESC STRUC
LIMIT DW 0
BASE DD 0
PDESC ENDS
2.局部描述符表寄存器LDTR
局部描述符表寄存器LDTR规定当前任务使用的局部描述符表LDT。
如本文开始处的表格所示,LDTR类似于段寄存器,由程序员可见的16位的寄存器和程序员不可见的高速缓冲寄存器组成。
实际上,每个任务的局部描述符表LDT作为系统的一个特殊段,由一个描述符描述。
而用于描述符LDT的描述符存放在GDT中。
在初始化或任务切换过程中,把描述符对应任务LDT的描述符的选择子装入LDTR,处理器根据装入LDTR可见部分的选择子,从GDT中取出对应的描述符,并把LDT的基地址、界限和属性等信息保存到LDTR的不可见的高速缓冲寄存器中。
随后对LDT的访问,就可根据保存在高速缓冲寄存器中的有关信息进行合法性检查。
LDTR寄存器包含当前任务的LDT的选择子。
所以,装入到LDTR的选择子必须确定一个位于GDT中的类型为LDT的系统段描述符,也即选择子中的TI位必须是0,而且描述符中的类型字段所表示的类型必须为LDT。
可以用一个空选择子装入LDTR,这表示当前任务没有LDT。
在这种情况下,所有装入到段寄存器的选择子都必须指示GDT中的描述符,也即当前任务涉及的段均由GDT中的描述符来描述。
如果再把一个TI位为1的选择子装入到段寄存器,将引起异常。
3.中断描述符表寄存器IDTR
中断描述符表寄存器IDTR指向中断描述符表IDT。
如本文开始处的表格所示,IDTR长48 位,其中32位的基地址规定IDT的基地址,16位的界限规定IDT的段界限。
由于80386只支持256个中断/异常,所以IDT表最大长度是2K,以字节位单位的段界限为7FFH。
IDTR 指示IDT的方式与GDTR指示GDT的方式相同。
4.任务状态段寄存器TR
任务状态段寄存器TR包含指示描述当前任务的任务状态段的描述符选择子,从而规定了当前任务的状态段。
任务状态段的格式在后面的文章中介绍。
如本文开始处的表格所示,TR 也有程序员可见和不可见两部分。
当把任务状态段的选择子装入到TR可见部分时,处理器自动把选择子所索引的描述符中的段基地址等信息保存到不可见的高速缓冲寄存器中。
在此之后,对当前任务状态段的访问可快速方便地进行。
装入到TR的选择子不能为空,必须索引位于GDT中的描述符,且描述符的类型必须是TSS。
参考资料书名出版社作者《保护方式下的80386及其编程》清华大学出版社周明德主编《80X86汇编语言程序设计教程》清华大学出版社扬季文主编。