CPU中的专用寄存器(SFR) 一、累加器Acc 二、通用寄存器B 三、程序计数器PC 四、堆栈指针SP 五、数据指针DPTR 六、程序状态字寄存器PSW 七、电源控制及波特率选择寄存器PCON 退出 主讲:吴政江
累加器Acc 为8位寄存器,简称为A。字节地址:0E0H 位地址:0E0H~0E7H。用于存放操作数或运算的中间结果。它通过暂存器TMP2与ALU相,为ALU提供一个操作数。A是CPU中使用最频繁的寄存器。 例:MOV A,#6 ;A 6 ADD A,#7 ;A (A)+7 结果:(A)=13 返回
通用寄存器B B是一个专为乘法和除法运算设置的8位寄存器,一般与累加器A配合使用。字节地址:F0H 位地址:F0H~F7H。B在乘法或除法前,用来存放乘数或除数,在乘法或除法完成后用来存放乘积的高8位或除数的余数。对于其它指出令,寄存器B可用来存中间结果。 例: MOV A,#65H ;A 65H MOV B,#34H ;B 34H MUL AB ;BA A X B=65H X 34H 结果(A)=84H (B)=14H 返回
程序计数器PC PC是一个16位的寄存器,具有自动加1功能,用来存放下一条要执行的指令在程序存储器中地址,以保证程序按人们编写的顺序执行。编码范围:0000H~FFFFH。 当要执行一段程序时,必须预先按指令的执行顺序把程序放到ROM中,然后从第一条指令开始,取出一条执行一条,直到程序执行完毕。如何保证这一顺序呢?这就必须要有一个具有自动加1功能的寄存器来保存当前要取出的地址,这就是PC。 在程序开始执行之前,先将程序的起始地址(即程序的第一条指令的地址)送入PC,CPU把PC的值作为地址,通过地址总线送入存储器,取出程序的第一条指令。每取出一个字节PC自动加1。所以有人认为PC是CPU的“向导”。 PC在物理结构上是独立的,不属于SFR区,无字节地址和位地址,但仍是具有专用功能的寄存器,所以有人认为片内SFR有22个。 返回
堆栈指针SP 例:MOV SP,#70H MOV A,#35H MOV B,#03H PUSH A PUSH B POP A POP B 是一个8位的寄存器,用于存放堆栈的栈顶地址,即指出栈顶在内部ROM中的位置。字节地址:81H,无位地址。 堆栈:是一种按“先进后出”或“后进先出”规律存放数据的片内RAM区域。它的一端是固定的,称为栈底,另一端是浮动的,称为栈顶。 设置与操作:原则上,可把堆栈区安排在片内RAM的低128B的任何区域。但习惯上,CPU工作时至少有一组工作寄存器,所以8051复位后,SP初值为07H,当第一个数进栈时,SP加一指向08H单元。为了合理使用内部RAM,堆栈一般不设在工作寄存器区和位寻址区,通常设在内部RAM30H~7FH地址空间内,即设在便签区。可用数据传送指令给SP赋初值进行设置。如:MOV SP,#70H 堆栈有压栈和弹栈两种操作,分别用指令PUSH和POP完成。 例:MOV A,#35H ;A 35H PUSH A ;SP (SP)+1,(SP) A 作用:堆栈是为子程序调用和中断操作而设立的,其具体功能为保护断点和保护现场。此外,利用堆栈还可方便地进行数据交换(堆栈的妙用见备注)。 例:MOV SP,#70H MOV A,#35H MOV B,#03H PUSH A PUSH B POP A POP B 返回
数据指针DPTR DPTR DPH(83H) DPL(82H) DPTR是个16位的寄存器,也可分为两个独立的8位寄存器DPH(高8位)和DPL(低8位),字节地址分别为83H和82H,无位地址。 DPTR通常在访问外部数据存储器时作地址指针用,存放数据存储器的16位地址。也可存放ROM的16位地址,以实现子程序的间接调作、转移及外部数据传送和查表等操作。 DPTR DPH(83H) DPL(82H) 返回
程序状态字寄存器PSW 在程序的运行过程中,某些指令执行结束后会产生一些重要的特征,这些特征必须保存下来以供后续程序使用。PSW就是一个用于保存指令执行后所产生的特征的8位寄存器。字节地址:D0H,位地址:D0H~D7H。PSW的各位定义如下: 位序 PSW.7 PSW.6 PSW.5 PSW.4 PSW.3 PSW.2 PSW.1 PSW.0 位标志 CY AC F0 RS1 RS0 OV F1 P 位地址 D7H D6H D5H D4H D3H D2H D1H D0H 返回
PSW各位的定义 进位标志CY:功能有二:1、存放算术运算的进位标志。在进行加、减运算时,如操作结果使A中最高位D7有进位或借位产生则CY=1,否则CY=0;2、在位操作中CY作位累加器C使用。 辅助进位AC:加减运算中,当A中低4位向高4位有进位或借位时AC=1,否则AC=0 用户标志F0、F1:共用户定义的标志位,由用户根据需通过传送指令将其设置为0或1,作为软件标志。用以控制程序的转向。 工作寄存器区选择位RS1、RS0:由用户编程设定,用以选择四组工作寄存器中的某一组作为当前工作寄存器。 溢出标志位OV:用于指示累加器A在带符号数加减运算中是否发生溢出。溢出OV=1,否则OV=0。 奇偶标志位P:用于指示运算结果A中1的个数的奇偶性。若1的个数为奇数,则P=1,否则P=0。 返回
电源控制及波特率选择寄存器PCON PCON是一个8位的专用寄存器,字节地址87H,无位地址。用于控制CPU进入待机或节电工作方式以及串行通信的波特率是否加倍。(具体内容以后再介绍)。 返回