单片机程序状态寄存器

请大佬解答一下图片上的题,并解释一下步骤,小白一个

第1个回答  2017-12-24

首先我先贴图出来吧,这种东西,用keil可以仿真出来的,下图是用51单片机来模拟的,软件为keil4.

如图,这个是按你的程序写的程序,ORG为伪指令,表示程序所在的位置,即程序下载后存放的位置,因为不是写正规程序,所以就直接写在0000H位置下了,一般程序不能直接写在0000H下,因为后面有很多中断向量的位置,靠的很近,所以一般在0000H下,写一条跳转指令,跳过中断向量的位置。

初始化,A的内容为0x00,psw的内容也为0x00.

第一条指令为把直接数放到A里(A即累加器),第一条指令执行完成后,A的值为0f.如下图:

这时,我们可以看到左侧的A的数值为0x0f。PSW内没有变化。

然后我们执行第二条指令,如图:

第二条指令为ADD A,#0F8H。这条指令为加法指令,ADD就是加法指令的意思,意思是把后面的数和累加器ACC里的数相加,最终把结果放在ACC内。我们看到第二条指令执行完成后,ACC的内容为0x07,这就是计算结果,一开始ACC内的数为0x0f,加上0XF8后,结果就是07,然后最高位有进位。至于说指令后面的#0F8H,这是汇编语言的规定,直接数以A~F开头的,前面要加个0,这时候编译器才会正确编译,这是一个汇编编译器的规则,我们只要知道就可以了,如果你写成这样#F8H,编译器一般会提示错误,这个需要注意。

最后来看PSW内的内容,首先要了解PSW内每个位都代表什么,最高位CY代表进位,只要最高位有进位,CY就会置为1,AC位半进位,我们用的是8位单片机,我们的ACC是两个四位的加法器构成的,所以AC就是低四位的最高位向高四位的最低位进位的标志,我们知道0x0f+0xf8,F+8显然超过最大数了,要向高四位进位,所以AC就被置1,因为一位16进制数代表四位2进制数嘛,最高0+F=F,但是低四位有进位,所以变成了0+F+AC>F,所以高四位也进位了,CY也置为1.F0是没有定义的,你可以自己用来干什么都行,在这里没有意义,RS1,RS0位工作寄存器的选择位,它的组合是用来选择用哪组R0~R7的,在这里没用,原来是什么就是什么,因为51单片机内有32个工作寄存器嘛,它们被八个八个分为一组,所以有四个,RS1,RS0能表示的最大数就是4,所以用来选择的,不用管它。OV为溢出,这里没有溢出,主要用于有符号的数,我们这里没有,就没变化了。PSW.1也是没定义的,没实际意义,P位奇偶校验位,这里我们用51单片机,它是偶校验,即ACC里1的个数为奇数时,P=1,否则为偶数,P=0;因为我们最后的计算结果为07H,即 0000 0111,即奇数个1,故P=1。

本回答被提问者采纳

单片机的程序状态字寄存器psw中各位的定义分别是什么?
单片机的程序状态字寄存器PSW是一个8位寄存器,用于存放程序运行的状态信息。PSW中各位的定义分别是:CY为进位标志位,AC为辅助进位标志位,F0为用户标志位,RS1和RS0为工作寄存器组选择位,OV为溢出标志位,P为奇偶标志位。接下来,我将详细解释PSW中各位的含义和作用:1. CY:在进行加减乘除或移位等...

单片机的程序状态字寄存器psw中各位的定义分别是什么
单片机的程序状态字寄存器(PSW,Program Status Word)是一个重要的内部寄存器,它存储了CPU在执行指令过程中产生的各种状态信息,包括当前指令执行后的状态标志和控制标志。PSW的具体位定义可能因不同的单片机架构而略有差异,但通常包含以下几类关键位:1. **进位标志位(CY\/C)**:用于表示无符号数加...

简述程序状态寄存器PSW各位的含义,单片机如何确定和改变当前工作寄存器...
单片机如何确定当前工作寄存器组:单片机通过读取PSW寄存器中的RS1、RS0位来确定当前工作寄存器组。当RS1和RS0均为0时,表示工作寄存器组0被选中;当RS1为0而RS0为1时,表示工作寄存器组1被选中;当RS1为1而RS0为0时,表示工作寄存器组2被选中;当RS1和RS0均为1时,表示工作寄存器组3被选中。单...

51单片机复位后各寄存器状态是怎样的
1. 单片机复位后,程序计数器(PC)的状态为0000H,这意味着程序将从0000H地址单元开始执行。2. 单片机在冷启动后,片内RAM的状态为随机值。运行中的复位操作不会改变片内RAM区中的内容。3. 21个特殊功能寄存器在复位后的状态是确定的。这些寄存器的状态对于理解单片机的初始状态至关重要,因此在编写...

单片机有哪些寄存器
单片机内部通常有一组通用寄存器,如R0到R7。这些寄存器可以用于存储数据、地址或作为间接寻址的寄存器。在程序执行过程中,这些寄存器可以用来暂存数据、传递参数等。4. 状态寄存器(如PSW)状态寄存器用于存储CPU的状态信息,如运算结果的状态标志(如零标志、溢出标志等)。这些信息对于程序的流程控制非常重要...

单片机如何确定和改变当前的工作寄存器
1. 可以通过检查程序状态寄存器(PSW)中的RS1和RS0两位来确定当前的工作寄存器。2. RS1和RS0的值为00时,指向第0组工作寄存器。3. RS1和RS0的值为01时,指向第1组工作寄存器。4. RS1和RS0的值为10时,指向第2组工作寄存器。5. RS1和RS0的值为11时,指向第3组工作寄存器。

特殊功能寄存器(SFR)详解 ——以8051单片机为例
SFR作为单片机的状态及控制字寄存器,是单片机内部结构的重要组成部分,它们根据不同的功能被分类为累加器ACC、寄存器B、程序状态字PSW、堆栈及堆栈指针SP、数据指针DPTR、端口寄存器P0~P3、定时\/计数器TL0~TH1、中断允许寄存器IE、中断优先级寄存器IP、定时器工作方式寄存器TMOD、定时器控制寄存器TCON、串行口...

单片机寄存器有几种,分别有什么用途
单片机寄存器可以分为通用寄存器和专用寄存器,通用寄存器用来存储计算结果和临时数据,专用寄存器用来存储特定功能的数据和控制信息。不同的寄存器有不同的用途,例如程序计数器用来指示下一条指令的地址,堆栈指针用来存储堆栈的位置,状态寄存器用来存储标志位,定时器\/计数器寄存器用来进行定时和计数操作,IO口...

单片机的psw是什么?
程序状态寄存器是计算机系统的核心部件——运算器的一部分,PSW用来存放两类信息:一类是体现当前指令执行结果的各种状态信息,如有无进位(CY位),有无溢出(OV位),结果正负(SF位),结果是否为零(ZF位),奇偶标志位(P位)等。另一类是存放控制信息,如允许中断(IF位),跟踪标志(TF位)等。

51单片机的各种寄存器的功能分别是什么
2. 特殊功能寄存器:位于内部RAM的80H~0FFH地址区,包含累加器A、寄存器B、程序状态字(PSW)、I\/O口寄存器P0~P3、定时\/计数器以及串行通信控制和中断控制等寄存器。这些寄存器具有特定的功能,在51单片机的编程和操作中扮演重要角色。学习51单片机的特殊功能寄存器,建议通过实践加深理解。使用仿真实验板进行...

相似回答