IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> ARM程序状态字寄存器 -> 正文阅读

[嵌入式]ARM程序状态字寄存器

一个版本:

313029282726~252423~2019~1615~10987654~0
NZCVQResJReservedGE[3:0]ReservedEAIFTM[4:0]

另一个版本:
在这里插入图片描述

保留位(Reserved)

为将来的扩展预留

标志位(N,Z,C,V,Q)

N:符号标志,一般简写为SF(Sign Flag),也有写作NF。两个补码表示的带符号数进行运算时,NF=1表示结果为负数(<0);NF=0表示结果为非负数(≥0)。

N:负数 ? 1 : 0

Z:零标志,一般简写为ZF(Zero Flag)。ZF=1表示运算结果为0;ZF=0表示运算结果不为0。

Z:运算结果为0 ? 1 : 0

C:进位标志,一般简写为CF(Carry Flag)。简单来说CF=1表示运算结果有进位;CF=0表示运算结果无进位。实际上它有四种情况:
1、加法运算(包括比较指令 CNM):C=1:运算结果产生了进位时(无符号数溢出);C=0:运算结果没有进位。
2、减法运算(包括比较指令 CMP):C=0:运算时产生了借位(无符号数溢出);C=1:没有借位。
3、对于包含移位操作的非加 / 减法运算指令,C 为移出值的最后一位。
4、对于其他的非加 / 减法运算指令,C 的值通常不变。

C:运算结果有进位 ? 10

V:溢出标志,一般简写为OF(Overflow Flag)。简单来说OF=1表示运算结果有溢出;OF=0表示运算结果无溢出。实际上它有两种情况:
1、对于加 / 减法运算指令,当操作数和运算结果为二进制的补码表示的有符号数时,V=1 表示符号位溢出。
2、对于其他的非加 / 减法运算指令,V 的值通常不改变。

V:溢出 ? 10

Q:DSP运算溢出标志。 在 ARM v5 及以上版本的 E 系列处理器中,用 Q 标志位指示增强的 DSP 运算指令是否发生了溢出。在其它版本的处理器中,Q 标志位无定义。

控制位(A,I,F,T)

A:中断禁止位(abort)
I:IRQ标志位。I=1表示禁止快速中断请求(IRQ)中断
F:FIQ标志位。F=1表示禁止外部中断请求(FIQ)中断

模式位(M[4:0])

注:模式位也是控制位的一种
模式位
ARM处理器的7种运行模式

处理器模式描述
用户模式(User)正常程序执行的模式
快速中断模式(FIQ)用于高速数据传输和通道处理
外部中断模式(IRQ)用于通常的中断处理
特权模式(Supervisor)供操作系统使用的一种保护模式
数据访问中止模式(Abort)用于虚拟存储及存储保护
未定义指令中止模式(Undefined)用于支持通过软件仿真硬件的协处理器
系统模式(System)用于运行特权级的操作系统任务

补充1:位的类型

用户可写位:在任意模式下都可写,N,Z,C,V,Q,和GE[3:0]以及E位都是用户可写的。
特权模式位:在特权模式下可写,用户模式下写特权位没有效果,A,I,F,T和M[4:0]位都是特权位。
执行状态位:在特权模式下可写,用户模式下写执行状态位没有效果,J和T位都是执行状态位,在ARM状态下一直为0。

补充2:条件转移指令

无符号:涉及进位/借位标志CF、零标志ZF(无符号数没有溢出的问题,只有进位和借位
有符号:涉及符号标志SF、溢出标志OF、零标志ZF

例1:无符号整数比较大于时转移。
假设m>n,则m-n>0,没有进位/借位,也不为0,故CF和ZF都为0。无符号数不涉及符号标志SF和溢出标志OF,故都为0。

例2:无符号数比较小于等于时转移。
假设m≤n,则m-n≤0,当前一个数小于后一个数,有借位,故CF为0;当两个数相等,ZF=0。无符号数不涉及符号标志SF和溢出标志OF,故都为0。

补充3:区分进位/借位标志CF、溢出标志OF

CF:加法时最高位进位或减法时最高位借位,CF=1,否则CF=0;
人为判断:两个二进制数相加如果某一相同位上都为1则产生进位;两个二进制数相减如果某一相同位上被减数为0而减数为1则产生借位;
机器判断:减法时进位输出与1异或,加法时进位输出与0异或。异或:相同为0,不同为1。
OF:带符号数算术结果超过表示范围,OF=1,否则OF=0。

例1:FFFF FFFFH-FFFF FFF0H=FFFF FFFFH+0000 0010H=(1)0000
000FH(注意取补码的反是带符号位取反+1,不是取反就行了)
①减法,考虑借位。因为被减数最高位为1,减数最高位为1,没有借位,故CF=0;进位输出C=1,CF=C⊕1=0。 ②OF=0

例2:0000 0000H-FFFF FFFFH=0000 0000H+0000 0001H=(0)0000 0000H
①减法,考虑借位。因为被减数最高位为0,减数最高位为1,产生借位,故CF=1;进位输出C=0,CF=C⊕1=1。

参考:
1:程序状态寄存器PSR
2:ARM状态寄存器-PSR

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-04 11:22:45  更:2021-08-04 11:22:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/27 10:05:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计