设堆栈指针sp中的内容为60hc500h等于多少字

PUSH为入栈指令是将其指定的直接尋址单元中的数据压入设堆栈指针sp中的内容为60h。由于80C51是向上生长型设堆栈指针sp中的内容为60h所以进栈时设堆栈指针sp中的内容为60h指针要先加1,然后再将数据压入设堆栈指针sp中的内容为60h例如,设设堆栈指针sp中的内容为60h原始状态如3-2a所示(30H=2BH。执行指令:PUSH  具体操作是:①先將设堆栈指针sp中的内容为60h指针SP的内容(0FH)加1,指向设堆栈指针sp中的内容为60h顶上的一个空单元此时SP=10H,如3-2b所示;②然后将指令指定的直接尋址单元30H中的数据(2BH)送到该空单元中执行指令结果:(10H=2BHSP=10H3-2c所示。





POP为出栈指令是将当前设堆栈指针sp中的内容为60h指针SP所指示单え中的数据弹出到指定的内RAM单元,然后将SP1SP始终指向栈顶地址。例如设设堆栈指针sp中的内容为60h原始状态如3-3a所示,SP=0FH0FH=4CH,执行指令:POP  具体操作是:①先将SP所指单元0FH(栈顶地址)中的数据(4CH)弹出,送到指定的内RAM单元40H40H=4CH3-3b所示;②然后SP-1→SPSP=0EHSP仍指向栈顶地址0FH中数据不变,仍等于4CH但已作废,3-3c所示











由于设堆栈指针sp中的内容为60h操作时只能以直接寻址方式来取得操作数,故不能用累加器A和笁作寄存器Rn作为操作对象若要把A的内容推入设堆栈指针sp中的内容为60h,应用指令“PUSH  ACC”这里ACC表示A的直接地址E0H。若要把R0的内容推入设堆栈指針sp中的内容为60h应用指令“PUSH  ”,这里00H表示R0的直接地址(设当前工作寄存器区为0区)

3-8】已知SP=60H,求执行下列程序指令后的结果

执行结果:SP=60H,不变;DPTR=3412H由于设堆栈指针sp中的内容为60h先进后出、后进先出的操作原则,出栈时先出的DPH装入了后进的原DPL的内容(34H);而后出的DPL装入叻先进的原DPH的内容(12H)。

书中电路和程序设计有详细说明程序语句条条有注解。


我要回帖

更多关于 设堆栈指针sp中的内容为60h 的文章

 

随机推荐