十一、第十一集 堆栈(后进先出)------- 重要,特别是在操作系统中
下面以三个数据0x30、0x31和0x32入栈和出栈过程为例,假设当前SP的内容为0x82,即(SP)=0x82也就是SP指向堆栈存储空间地址为0x82的位置 从上面的过程可以看出,随着数据的入栈操作,(SP)递增,SP总是指向最新保存的数据的存储器位置。也就是通常所说的SP总是指向栈顶的位置
从上面的过程可以看出,随着数据的出栈操作,(SP)递减,SP总是指向最新保存的数据的存储器的位置,也就是通常所说的SP总是指向栈顶的位置
注:当对8051单片机复位后,默认将SP的内容初始化为0x07。所以,实际上堆栈从08H的地址单元开始。考虑到地址范围0x08~0x1F是工作寄存器组1~3的地址空间。因此,如果在程序代码中使用堆栈存储空间时,建议最好将SP的内容改为0x80以上的值。
运算器 运算器用于执行丰富的数据操作功能8051单片机处理器核内的运算器包括8位算术逻辑单元、累加器、B寄存器、程序状态字 (1)8位的算术逻辑单元(Arithmetic and Logic Unit,ALU):实现的功能主要包括算术运算,其他运算,逻辑运算和按位运算 (2)累加器(Accumulator,ACC):用于大多数指令结果的累加器,累加器位于SFR地址为0xE0的位置 (3)B寄存器:在乘法和除法运算中,B寄存器有特殊用途。对于在其他情况,它作为普通寄存器,B寄存器位于SFR地址为0xF0的位置 (4)程序状态字(Program Status Word,PSW):程序状态字寄存器中,保存一些具有特殊含义的位,这些位反映当前8051单片机内处理器核的工作状态,该寄存器位于SFR空间地址为0xD0的位置
|