微机原理:什么叫SP始终指向栈顶?SP+1等不是比SP地址高吗,那SP还叫顶吗? 堆栈指针为什么入栈时SP+1,而PUSH指令是SP-2,还有...

作者&投稿:劳黄 (若有异议请与网页底部的电邮联系)
SP是栈顶指针寄存器,它永远指向栈顶。你说SP+1不是比SP高吗?的确是这样啊,不过请注意两个问题:SP指的是目前数据存放在栈顶,它跟踪数据的变化,举子例子,栈就类似于装面的缸,而栈顶指针寄存器就类似于指像里面装了多少面了(注意这里的栈顶指针寄存不是指缸口)。所以SP会随着里面装的数据多少的变化而变化,它指示的是目前数据装了多少了!
第二个问题:SP←SP+1代表将栈顶指针往上移一格,相当于偏移地址变了,也举个例子,比如你找你的朋友,你记得他住2楼,结果到了楼下你给他打电话,他说他住3楼,你只有到3楼才能找到你的朋友,这里的SP就是你要找的朋友的地址,而SP+1就是你打电话问到的朋友的地址。

SP是堆栈指针,它的数值表示离堆栈段地址还有多远,这就好比在一个房间里面堆1列箱子,假设堆放在一列,10个箱子即可达到天花板,首先你每次堆箱子总不会从原来箱子的底部放进去吧,总是放在这个箱子的上方,那么该位置可理解位栈顶,SP呢就表示离天花板还有多远。
这样一来,SP+1就好理解了,既然+1那就表示离天花板远了。
SP←SP+1表示你取走了一个箱子,最新的距离应该增加1,这是指的SP的内容,因为SP是堆栈指针,所以应理解为堆栈偏移地址。

栈有不同的增长方式。

微机原理中((sp))是什么意思?~

SP是栈顶指针寄存器,它永远指向栈顶。你说SP+1不是比SP高吗?的确是这样啊,不过请注意两个问题:SP指的是目前数据存放在栈顶,它跟踪数据的变化,举子例子,栈就类似于装面的缸,而栈顶指针寄存器就类似于指像里面装了多少面了(注意这里的栈顶指针寄存不是指缸口)。所以SP会随着里面装的数据多少的变化而变化,它指示的是目前数据装了多少了!
第二个问题:SP←SP+1代表将栈顶指针往上移一格,相当于偏移地址变了,也举个例子,比如你找你的朋友,你记得他住2楼,结果到了楼下你给他打电话,他说他住3楼,你只有到3楼才能找到你的朋友,这里的SP就是你要找的朋友的地址,而SP+1就是你打电话问到的朋友的地址。

sp+1是地址,如果找内容的话加括号,前面加偏移如4(sp)。

微机原理里面的$,单片机里面的sp和pc 有什么区别吗,它们指向的到底是地...
答:即“$”,例如 string db "abcde$"。sp是堆栈指针,是指向堆栈数据区的顶端地址,执行一次PUSH、POP指令,sp就会自动增加或减少,使sp始终指向堆栈顶。pc是程序指针,它指向的是当前正在执行指令的地址单元,pc的值随着指令的执行而变化,一般不会是最大地址值。希望我的回答能解决你的疑惑。

微机原理中入栈出栈的SP得问题
答:(SP)加括号表示操作对象是堆栈栈顶的内容,比如BL←(SP)的操作就是将栈顶中的内容送入BL。SP不加括号表示操作对象是该寄存器本身。比如此时栈顶是60H单元,60H中是6FH,则SP中的内容就是60H,(SP)中的内容就是6FH。

计算机原理
答:1 堆栈的最高地址叫栈底,堆栈指示器SP总是指向栈顶。栈顶地址=(SS)×10H+(SP)=1250H×10H + 0052H=12552H 2 栈底地址=(SS)×10H + 0100H=12600H 3,应该是不变 4、8086CPU中堆栈存取必须以字为单位。存入数据2345后,即一个字压入堆栈后,SP减2,SP的内容为:(SP) - 字数=0052H...

SP初始值指向mian()吗
答:SP始终是指向栈顶的。。BP的指向其实没有什么要求,只是说明,如果不指明段地址的情况下,默认的段地址是SS,这说明了SP/BP这两个寄存器都跟栈有关,一个指向栈顶,一个指向栈中的数据。。这样,对于栈来讲,栈顶的位置(SP)是不能轻易改变的,所以,如果我们要用到栈中的数据,就要是用BP了。

堆栈的概念是什么 单片机高手来~~
答:.(SP)=0063H 因为SP是堆栈指针寄存器,它始终指向栈顶元素。这里要注意的一点是,堆栈定义以后,所谓的栈顶位于该段的低地址端。如果定义的堆栈的大小是64H个字节,那么段内偏移量的范围就在0000H到0063H之间,所以当堆栈为空时,(SP)=0063H。2.因为你定义的堆栈是字类型的,故大小为32H×2=64H...

汇编语言中 栈顶问题~~~ SP=?
答:首先 栈段最小为16字节 但是栈的作用只是动态的临时的存储数据,而不需要定义多么多么大空间。SP相当于IP作为偏移地址,只不过固定了,进栈一次SP=SP-2 一个栈有它的起始SP,SS:SP始终指向最顶元素 (1)栈为空,SP指向(0~F)10H(即F的下面一个空间)它作为起始的,当压栈一次时,先SP=SP-...

单片机里sp是什么意思啊
答:单片机里sp是堆栈指针。堆栈指针SP英文全称为stack pointer,是单片机控制器的组成部件之一,与时控制逻辑电路、指令寄存器译码器、地址指针DPTR、程序计数器等部件共同组成CPU的神经中枢。堆栈指针在单片机里的作用是随时跟踪栈顶地址,以便存取单片机的数据。每当执一次PUSH指令时,SP就(在原来值的基础上)...

堆栈指针(sp)的作用是什么?在程序设计时,为什么还要对 sp重新赋值?
答:堆栈指针的作用就是指向栈顶元素的,通过它还可以对栈顶元素进行出栈操作 当堆栈中的元素进行出栈或入栈操作时,都会使栈顶元素发生变化,堆栈指针sp就需要重新赋值,让其指向新的栈顶元素

单片机里sp是什么意思?
答:单片机里sp是堆栈指针。堆栈指针SP英文全称为stack pointer,是单片机控制器的组成部件之一,与时控制逻辑电路、指令寄存器译码器、地址指针DPTR、程序计数器等部件共同组成CPU的神经中枢。堆栈指针在单片机里的作用是随时跟踪栈顶地址,以便存取单片机的数据。

请问懂汇编的人:rsp寄存器有什么用
答:rsp寄存器就是指向栈区的寄存器,看main函数开始是,栈区已经有了返回地址,当main函数执行完毕后,通过函数尾部的ret指令就会到libc_start_main + 240处,这就是用于函数调用call ret,然后程序又会使用sub rsp,0x20来开扩局部变量的内存,也就是s,s总共0x20(32)个空间,而且s地址在程序放回地址...