设置堆栈指针SP=30H后,进行一系列的堆栈 *** 作。当进栈数据全部d出后,SP应指向?

设置堆栈指针SP=30H后,进行一系列的堆栈 *** 作。当进栈数据全部d出后,SP应指向?,第1张

如果当指针sp=30h指示的是栈底,那么一系列 *** 作后,当进栈数据全部d出后,sp仍然是指向堆栈底,即30H。

如果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,这样你就不会冲突了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/7918718.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存