精华内容
下载资源
问答
  • 系统控制和状态寄存器包含看门狗溢出位和看门狗中断屏蔽/使能位,具体功能参见图1和表1.  图1 系统控制和状态寄存器(SCSR)  表1 系统控制和状态寄存器功能定义  欢迎转载,信息来源维库电子市场网...
  • 状态寄存器

    2020-11-14 18:57:54
    M28010的状态寄存器如图所示。下面我们说明这些引脚的作用。 图 M28010的状态寄存器  1. 位7:DP(Data Polling) 与闪速存储器相同,在完成内部写操作之前的这段时间内,将反相读出最后写入数据的位7。如果...
  • ARM中有两条指令用于在状态寄存器和通用寄存器之间传送数据。  状态寄存器中有些位是当前没有使用的,但在ARM将来版本中有可能使用这些位,因此用户程序不要使用这些位。  程序不能通过直接修改CPSR中T的控制位...
  • ARM体系结构包含1个当前程序状态寄存器(CPSR)和5个各份的程序状态寄存器(SPSRs)。使用MSR和MRS指令来设置和读取这些寄存器。  当前程序状态寄存器(CPSR),持有关于当前处理器状态的信息。其他5个各份的程序...
  • 程序状态寄存器PSR

    千次阅读 2019-07-19 17:05:20
    当前程序状态寄存器(CPSR)在所有处理器模式下都是可访问的,它包括条件标志位,中断标志位,当前处理器模式控制以及其他状态和控制位。每种异常模式都有一个保存程序状态寄存器(SPSR),当异常发生时用于保存CPSR的值...

    当前程序状态寄存器(CPSR)在所有处理器模式下都是可访问的,它包括条件标志位,中断标志位,当前处理器模式控制以及其他状态和控制位。每种异常模式都有一个保存程序状态寄存器(SPSR),当异常发生时用于保存CPSR的值。
    注:User模式和System模式都没有SPSR,因为它们都不是异常模式。在User模式下和System模式下读写SPSR都会引起不可预料的结果。
    在这里插入图片描述
    PSR位的类型:
    预留位:为将来的扩展预留
    用户可写位:在任意模式下都可写,N,Z,C,V,Q,和GE[3:0]以及E位都是用户可写的。
    特权模式位:在特权模式下可写,用户模式下写特权位没有效果,A,I,F,T和M[4:0]都是特权位。
    执行状态位:在特权模式下可写,用户模式下写执行状态位没有效果,J和T位都是执行状态位,在ARM状态下一直为0

    条件标志位
    N,Z,C,V这四位被称为条件标志位,几乎所有指令都会测试CPSR中的条件标志位来决定指令是否执行。
    条件标志位有两种方式修改:
    1,执行比较指令:CMN,CMP,TEQ以及TST
    2,执行一些其他的算数,逻辑或者移动指令,并且他们的目的寄存器不是R15。

    各个标志位的含义:
    N:设为指令结果的第31位,如果结果当作二进制补码表示的有符号整型,N=1表示结果是负的;N=0表示结果是非负的。

    Z:指令结果是0的情况下设置为1,反之设为0。

    C:C位的设置存在以下四种情况:
    1),对于加法,包括比较指令CMN,如果加法运算产生无符号溢出,C设为1,反之设为0。
    2),对于减法,包括比较指令CMP,如果减法运算产生一个借位,C就设置为1,反之设为0。
    3),对于包含移位操作的非加减运算,C设为移位器移出的最后一位。
    4),对于其他的非加减运算,C通常保持不变。
    V:V这一位的设置存在以下两种情况:
    1),在两个二进制补码的有符号整形的加法和减法指令运算时,如果发生符号溢出,设置为1。
    2),对于非加法和减法指令,V通常是不改变的。

    以上这些标志位还可以通过以下的这些方式进行修改:
    1),执行MSR指令,向CPSR或SPSR寄存器中写入新值。
    2),执行目的寄存器是R15的MRC指令,该指令的目的是将些处理器产生的条件标志位传递到ARM处理器中。
    3),执行LDM指令的某些变种指令,这些变种指令会复制SPSR的值到CPSR中。这种主要是用于异常返回的情况下。
    4),在特权模式执行RFE指令可以从内存中向CPSR中加载新值。
    5),执行目的寄存器是R15的算术逻辑指令的设置标志位的变种指令,它们也可以复制SPSR的值到CPSR中,用于异常返回。

    中断禁止位:
    A,I,F都是中断禁止位
    A:abort中断禁止位,被
    I:被置位后禁止IRQ中断
    F:被置位后禁止FIQ中断

    模式位
    在这里插入图片描述

    展开全文
  • ARM 程序状态寄存器深入分析

    千次阅读 2018-10-15 22:23:36
    程序状态寄存器共分为两种,它们的位数都是 32 位: 1 个 CPSR:当前程序状态寄存器(current program status register),可以在任何工作模式下被访问。 5 个 SPSR:保持程序状态寄存器(saved program status ...

    程序状态寄存器共分为两种,它们的位数都是 32 位:

    • 1 个 CPSR:当前程序状态寄存器(current program status register),可以在任何工作模式下被访问。
    • 5 个 SPSR:保持程序状态寄存器(saved program status register),只有在异常模式下,才能被访问;各异常模式拥有自己的 SPSR。发生异常时,SPSR 保存 CPSR 的值,格式同 CPSR。

    它们 32 位的含义分别如下:

    • 条件码标志( The condition code flags):5 个。N 符号标志,Z 零标志,C 进位标志,V 溢出标志,Q DSP 运算溢出标志。
    • 控制位(The control bits):4 个。I IRQ 标志,F FIQ 标志,T 状态位,M[4:0] 模式位。
      图中的 DNM 是 Do Not Modify,表示不同版本、处理器的含义不同。
      在这里插入图片描述
      此图来自 https://blog.csdn.net/u014132720/article/details/52088485。不知道他看的哪本英文书,我看的没他这个详细,因此拿来一用。

    条件码的具体含义:

    标志位含义
    N 当用两个补码表示的带符号数进行运算时。
    N=1:运算结果为负数 。
    N=0:运算结果为正数或零
    ZZ=1:运算结果为 0。
    Z=0:运算结果不为 0
    C 可以有四种方法设置 C 的值:
    • 加法运算(包括比较指令 CNM):C=1:运算结果产生了进位时(无符号数溢出)。C=0:运算结果没有进位
    • 减法运算(包括比较指令 CMP):C=0:运算时产生了借位(无符号数溢出)。C=1:没有借位
    • 对于包含移位操作的非加 / 减法运算指令,C 为移出值的最后一位
    • 对于其他的非加 / 减法 运算指令,C 的值通常不变
    V 可以有两种方法设置 V 的值:
    • 对于加 / 减法运算指令,当操作数和运算结果为二进制的补码表示的有符号数时,V=1 表示符号位溢出
    • 对于其他的非加 / 减法 运算指令,V 的值通常不改变
    Q 在 ARM v5 及以上版本的 E 系列处理器中,用 Q 标志位指示增强的 DSP 运算指令是否发生了溢出。在其它版本的处理器中,Q 标志位无定义。

    至于这些值都是怎么得来的呢?看下面的讲解:

    在这里插入图片描述
    首先我们有上面这幅图,其中 D7-D0 代表数据位,共一个字节。其上的 C7-C0 则代表向前进位的值。(也可以表示借位,这是箭头就要反过来了)

    因此我们可以用 D7-D0 和 C7-C0 来表示条件码 N, Z, C, V:

    • N=D7
    • C=C7
    • Z= D 7 ∨ D 6... D 1 ∨ D 0 ‾ \overline{D7\lor D6...D1\lor D0} D7D6...D1D0
    • V= C 6 ⊕ C 7 C6\oplus C7 C6C7 (两个进位进行异或)

    更多解释:
    C 用来判断无符号数计算是否溢出。
    V 用来判断有符号数计算是否溢出 。
    具体看哪个根据你计算时把数据当成有符号位还是无符号位。

    控制位代表啥含义不是我撰写的本文重点,故此不提。

    展开全文
  • 在ARM状态下,任一时刻都可以访问以上所讨论的16个通用寄存器和1~2个状态寄存器。在非用户模式(特权模式)下,则可访问到特定模式分组寄存器,图说明在每一种运行模式下,哪一些寄存器是可以访问的。  图 ARM...
  • 当执行一条指令时,首先需要根据PC中存放的指令地址,将指令由内存取到指令寄存器中,此过程称,为“取指令”。与此同时,PC中的地址或自动加1或由转移指针给出下一条指令的地址。此后经过分析指令,执行指令。完成...

    程序计数器(PC,Program counter),用于存放指令的地址。为了保证程序(在操作系统中理解为进程)能够连续地执行下去,CPU必须具有某些手段来确定下一条指令的地址。当执行一条指令时,首先需要根据PC中存放的指令地址,将指令由内存取到指令寄存器中,此过程称,为“取指令”。与此同时,PC中的地址或自动加1或由转移指针给出下一条指令的地址。此后经过分析指令,执行指令。完成第一条指令的执行,而后根据PC取出第二条指令的地址,如此循环,执行每一条指令。


    指令寄存器(IR,Instruction Register),用来保存当前正在执行的一条指令。是临时放置从内存里面取得的程序指令的寄存器,用于存放当前从主存储器读出的正在执行的一条指令。当执行一条指令时,先把它从内存取到数据寄存器(DR,Data Register)中,然后再传送至IR。指令划分为操作码和地址码字段,由二进制数字组成。为了执行任何给定的指令,必须对操作码进行测试,以便识别所要求的操作。指令译码器就是做这项工作的。指令寄存器中操作码字段的输出就是指令译码器的输入。操作码一经译码后,即可向操作控制器发出具体操作的特定信号。
    通用寄存器(GR,General register)通用寄存器可用于传送和暂存数据,也可参与算术逻辑运算,并保存运算结果。除此之外,它们还各自具有一些特殊功能。通用寄存器的长度取决于机器字长,汇编语言程序员必须熟悉每个寄存器的一般用途和特殊用途,只有这样,才能在程序中做到正确、合理地使用它们。
    16位cpu通用寄存器共有8个:AX(累加器(Accumulator Register)),BX(基地址寄存器(Base Register)),CX(计数寄存器(Count Register)),DX(数据寄存器(Data Register)),BP(基址指针寄存器(Base Pointer)),SP(堆栈指针寄存器(Stack Pointer)),SI(源变址寄存器 (Source Index)),DI(目的变址寄存器(Destination Index)).八个寄存器都可以作为普通的数据寄存器使用。
    1. 寄存器AX通常称为累加器(Accumulator);用累加器进行的操作可能需要更少时间。累加器可用于乘、除、输入/输出等操作,它们的使用频率很高;

    2. 寄存器BX称为基地址寄存器(Base Register):它可作为存储器指针来使用;

    3. 寄存器CX称为计数寄存器(Count Register):在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用CL来指明移位的位数;

    4. 寄存器DX称为数据寄存器(Data Register):在进行乘、除运算时,它可作为默认的操作数参与运算,也可用于存放I/O的端口地址。

    5. 指针寄存器 EBP, ESP,(Pointer Register),指针寄存器主要用于存放堆栈内存储单元的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。指针寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。寄存器BP称为基址指针寄存器(Base Pointer);寄存器SP称为堆栈指针寄存器(Stack Pointer)。

    6. 变址寄存器 ESI, EDI , 变址寄存器主要用于存放存储单元在段内的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。 变址寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。

    7. 寄存器SI称为源变址寄存器 (Source Index);

    8. 寄存器DI称为目的变址寄存器(Destination Index)。
      16位cpu通用寄存器共有 8 个: AX, BX, CX, DX, BP, SP, SI, DI.
      32位cpu通用寄存器共有 8 个: EAX, EBX , ECX, EDX, EBP, ESP, ESI, EDI


    程序状态字PSW(PSW,Program Status Word)包括的状态位有进位标志位(CF)、结果为零标志位(ZF)、符号标志位(SF)、溢出标志位(OF)、陷阱标志位(TF)、中断使能(中断屏蔽)标志位(IF)、虚拟中断标志位(VIF)、虚拟中断待决标志位(VIP)、I0特权级别(IOPL)。


    状态寄存器又名条件码寄存器(SR,Status register),它是计算机系统的核心部件——运算器的一部分,状态寄存器用来存放两类信息:一类是体现当前指令执行结果的各种状态信息(条件码),如有无进位(CF位)、有无溢出(OF位)、结果正负(SF位)、结果是否为零(ZF位)、奇偶标志位(P位)等;另一类是存放控制信息(PSW:程序状态字寄存器),如允许中断(IF位)、跟踪标志(TF位)等。有些机器中将PSW称为标志寄存器FR(Flag Register)。

    展开全文
  • 值得指出的是,记住一些特殊功能寄存器复位后的主要状态,对于了解单片机的初态,减少应用程序中的初始化部分是十分必要的。说明:表中符号*为随机状态;A=00H,表明累加器已被清零;特殊功能寄存器初始状态特殊...
  • 在debug中,每种标志位的状态值都存在二种值:0和1,它们使用大写英文来描述。例如:如遇到ZR值代表指令...这些符号代表的就是标志寄存器里常用标志位的值。这个是符号值对应表: 溢出标志OF(Over flow flag) OV(1)...

    在debug中,每种标志位的状态值都存在二种值:0和1,它们使用大写英文来描述。例如:如遇到ZR值代表指令结果为0,NZ代表指令结果不为0;注意:它们的值在debug中,某状态下只显示一种值,要么是ZR要么是NZ;不能同时出现的。结合debug讲解下:
    这些符号代表的就是标志寄存器里常用标志位的值。这个是符号值对应表:

    溢出标志OF(Over flow flag)          OV(1)                         NV(0)
    方向标志DF(Direction flag)           DN(1)                          UP(0)
    中断标志IF(Interrupt flag)            EI(1)                           DI(0)
    符号标志SF(Sign flag)               NG(1)                          PL(0)
    零标志ZF(Zero flag)                ZR(1)                         NZ(0)
    辅助标志AF(Auxiliary carry flag)      AC(1)                          NA(0)
    奇偶标志PF(Parity flag)              PE(1)                          PO(0)
    进位标志CF(Carry flag)             CY(1)                         NC(0)

    --它们的状态值

    OF(Overflow Flag溢出标志)     OV(Overflow发生溢出)    NV(Non-Overflow未溢出)

    SF(Signal Flag符号标志)          NG(Negetive负号)           PL(Plus加号,正号)

    ZF(Zero Flag等于0标志)           ZR(Zero为零)                  NZ(Non-Zero非零)

    PF(Parity Flag奇偶标志)            PE(Parity Even偶数)        PO(Parity Odd奇数)

    CF(Carry Flag进位标志)            CY(Carry有进位)            NC(Non-Carry无进位)

           实例讲解下:使用debug程序看看,r指令。

    AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000

    DS=0B04  ES=0B04  SS=0B04  CS=0B04  IP=0102   NV UP EI PL ZR NA PE NC

    红色标注的就是这些状态位的值,它所代表的含义看上面。

    也可以使用rf指令查询状态寄存器的有效位的值。

    -rf

    NV UP EI PL ZR NA PE NC

    答案讲解:

    sub al,al     指令结果:(al)-(al)=0  (寄存器al的值为0)

    al=0h        ZF=1        PF=1        SF=0     

    使用debug查看:

    -rf

    NV UP EI PL ZR NA PE NC

    ZR(Zero为零)   ZF=1  含义:指令结果为0;(另一种状态值:NZ    代表ZF=0  含义:指令结果不为0 )       

    PE(Parity Even偶数) PF= 1  含义:指令结果中1的个数为偶数(因为al值为00000000,也就是说有0个1,0是偶数);(另一种状态值:PO  代表ZF=1  含义:指令结果中1的个数为计数)。这个有什么含义呢?

    PL(Plus加号,正号) SF=0  含义:指令结果为非负数(在计算机中,存储0是按照计算机补码方式存储的,0代表的补码含义是什么?);(另一种状态值:NG  代表SF=1  含义:指令结果为负数)

    展开全文
  • ARM程序状态寄存器

    千次阅读 2017-05-10 21:20:44
    ARM体系结构包含1个当前程序状态寄存器(CPSR)和5个各份的程序状态寄存器(SPSRs)。使用MSR和MRS指令来设置和读取这些寄存器。  当前程序状态寄存器(CPSR),持有关于当前处理器状态的信息。其他5个各份的...
  • TMS320LF240X DSP上有两个状态寄存器ST0,ST1,包含许多控制位,寄存器的内容可以被保存到数据存储器中,数据存储器中的数据也可以加载到状态寄存器中,加载指令LST可将数据写入,保存指令SST用于讲数据从状态寄存器中...
  • 状态寄存器--CPSR寄存器CPU内部的寄存器中,有一种特殊的寄存器(对于不同的处理器,个数和结构都可能不同)。这种寄存器在ARM中,被称为状态寄存器就是CPSR(current program status register)寄存器。CPSR和其他寄存器...
  • ARM状态寄存器-PSR

    千次阅读 2016-08-01 19:54:34
    ARM程序状态寄存器Program State Register CPSR SPSR 结构解析
  • APSR是程序状态寄存器中的应用状态寄存器,保存程序计算结果的状态标志。包含: N:负数标志。表示上一条指令的操作结果为负数。原理是获取结果寄存器的bits[31]。也即xPSR.N=bits[31]。xPSR.N == 1表示结果为负数...
  • CPU中寄存器作用及说明

    千次阅读 2020-02-04 14:23:04
           各种计算机的CPU可能不同,但是在CPU中至少至少要有六类寄存器:①指令...⑥状态寄存器(PSW)。 数据缓冲寄存器(DR)       &nb...
  • Thumb状态下的寄存器集是ARM状态寄存器集的一个子集,程序可以直接访问8个通用寄存器(R7~R0)、程序计数器(PC)、堆栈指针(SP)、链接寄存器(LR)和CPSR。同时,在每一种特权模式下都有一组SP、I-R和SPSR。 ...
  • 【汇编】各个寄存器作用详解

    千次阅读 多人点赞 2017-10-27 19:13:37
    寄存器  英文名称:Register 寄存器定义  寄存器是中央处理器内的组成部份。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)...
  • 几种常见的寄存器作用

    千次阅读 2020-03-24 21:59:48
    EDX、EAX、ECX、EBX寄存器作用 一般寄存器:AX、BX、CX、DX AX:累积暂存器,BX:基底暂存器,CX:计数暂存器,DX:资料暂存器 索引暂存器:SI、DI SI:来源索引暂存器,DI:目的索引暂存器 堆叠、基底暂存器:SP、BP SP:堆...
  • 从 STM32中文参考手册 上面摘录下来的,因为上面是图片,摘录下来作为文档方便查询.
  • 查看debug 状态寄存器

    千次阅读 2017-05-02 21:24:12
    of(溢出) df(方向) if(中断) sf(符号) zf(零) af(辅助进位) pf(奇偶) cf(进位)  为一的时候  ov(OVerflow) dn(DowN) ei(Enable Interrupt) ng(NeGtive) zr(ZeRo) ac(Auxiliary Carry) pe...
  • 状态寄存器传送至通用寄存器类指令 功能:将状态寄存器的内容传送至通用寄存器。 格式: MRS{条件码>}Rd,CPSR}SPSR 其中: Rd 目标寄存器,Rd不允许R15。 R=0 将CPSR中的内容传送目的寄存器。 R=1 将...
  • 浅谈CPSR程序状态寄存器

    千次阅读 2016-05-10 11:02:49
    浅谈CPSR程序状态寄存器 首先给出其各个位的定义如下: (CPSR,SPSR)访问指令 ARM 微处理器支持程序状态寄存器访问指令,用于在程序状态寄存器和通用寄存器之间传送数据,程序状态寄存器访问指令包括以下两...
  • 状态寄存器PSW

    千次阅读 2017-02-08 02:58:54
    31~22 21 20 19 18 17 16 15 14 12~13 11 10 9 8 7 6 5 4 3 2 1 0
  • 在AHCI协议中Port Register中有...Sata host适配器包括了一个额外的寄存器块,这些寄存器是分离的独立的,映射了ATA command Block Register,用来上报状态和错误信息。 这些寄存器,Serial ATA Status and Contr...
  • arm64汇编篇-07cpsr状态寄存器

    千次阅读 2018-06-07 11:58:02
    状态寄存器 CPU内部的寄存器中,有一种特殊的寄存器(对于不同的处理器,个数和结构都可能不同).这种寄存器在ARM中,被称为状态寄存器就是CPSR(current program status register)寄存器 CPSR和其他寄存器不一样,其他...
  • 8086状态标志寄存器含义

    千次阅读 2019-09-30 22:07:10
    只使用其中9位,6个状态标志位,3个控制标志位 用于存放指令执行过程中的结果和特征 标志位 全称 名称 =1 =0 CF Carry Flag 进位标志 CY/Carry/进位 NC/No Carry/无进位 PF Parity Flag 奇偶标志 PE/...
  • SREG 状态寄存器

    2013-03-26 22:18:10
    AVR单片机状态寄存器SREG,介绍SREG状态寄存器
  • 状态标志寄存器FLAGS

    千次阅读 2020-05-02 20:53:58
    FLAGS 称为标志寄存器或程序状态字(Program Status Word, PSW)。 标志寄存器是一个16 位的寄存器,8088 只使用了其中 9 位,分为两类:一类称为状态标志,反映指令执行结的特征,共有 6 位。另一类是控制标志,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 217,241
精华内容 86,896
关键字:

状态寄存器的作用