8051架构提供了两种保存值以便以后使用的好方法:寄存器组(register bank)和堆栈(stack)。
通用寄存器实际上存在于RAM中。RAM的前32个字节被使用。默认情况下,使用的是前8个字节。然而,这可以更改为第二个8个字节、第三个8个字节或第四个8个字节。使用哪组由PSW寄存器的RS1和RS0位确定。这些位可以使用SETB和CLR指令更改。SETB“设置”一个位(为1),CLR“清除”一个位(将其设置为0)。例如,
继续阅读8051架构提供了两种保存值以便以后使用的好方法:寄存器组(register bank)和堆栈(stack)。
通用寄存器实际上存在于RAM中。RAM的前32个字节被使用。默认情况下,使用的是前8个字节。然而,这可以更改为第二个8个字节、第三个8个字节或第四个8个字节。使用哪组由PSW寄存器的RS1和RS0位确定。这些位可以使用SETB和CLR指令更改。SETB“设置”一个位(为1),CLR“清除”一个位(将其设置为0)。例如,
继续阅读由于程序计数器(PC)寄存器用于确定下一条指令的位置,它不能像其他寄存器那样被访问——即不能使用MOV指令。相反,PC有自己特殊的一组指令。我们称这些为“跳转”,因为它们实际上对应于从一条指令跳转到另一条指令。其中最基本的是JMP指令。
模拟器中的程序计数器PC
继续阅读由于算术逻辑单元(ALU),8051能够执行各种算术和逻辑运算。大多数操作都使用一个特殊的寄存器,称为累加器(accumulator),通常表示为ACC或A。例如,可以使用ADD指令将两个数字相加。
MOV A, #2
ADD A, #3
第一个操作数是累加器A,第二个操作数是立即值3。请注意,要将两个数字相加,A必须已经包含要相加的第一个数字。这可以通过使用MOV指令将立即值2移动到A来完成。加法的结果存储在A中,这意味着A的原始值不会被保留。ADD指令还会影响程序状态字(PSW)的进位位CY和辅助进位位AC。
继续阅读