如果sp当前不是指示堆栈底,那么最后得sp指向仍为堆栈底,但地址不是30H。
如有疑问,百度hi联系。
栈指针是用来在栈空间寻址的,而栈空间其实就是个内存区域,在栈中存入数据的话,sp自动减少,在栈中读取数据的话,sp自动增加,这就构成了一个后进先出的内存空间sp其实是一个寄存器,其中只能保存一个指针,而这个指针就指向了栈空间中的最高层,即栈顶
我来详细讲一下吧。复位的时候SP等于07,堆栈的用处是存储数据,举个例子:
如果你现在不修改SP,那SP就等于07H。
假如你的A是等于6的,你执行PUSH
ACC,之后,你的SP就变成08H了,如果你再执行一句
MOV
08H,#3,你的08H单元之前本来是6,现在变成3了,你再执行POP
ACC,此时A等于3了。
无法恢复了。
一般我们都要重新设置SP,一般SP=70H就够用了。堆栈区间就是70H到7FH,这样你就不会冲突了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)