首页 > 资讯 > 问答 > 堆栈指针,堆栈指针的过程用文字描述

堆栈指针,堆栈指针的过程用文字描述

来源:整理 时间:2023-08-19 06:13:56 编辑:智能门户 手机版

本文目录一览

1,堆栈指针的过程用文字描述

堆栈有两个指针,一个用来标记堆栈的底部。一个用来标记新加入元素的位置,增加一个元素,这个指针就上移一个单元,反之下移,直至与堆栈底部指针所指单元相等时,堆栈为空。当所指位置与底部指针所指位置元素个数等于指定最大个数时,栈满

堆栈指针的过程用文字描述

2,堆栈指针的运作

指针向下移就表示是入栈 入栈了当然会创建新的内存了 向上移那就是出栈 就释放出栈的那个内存
向下移动,就是SP+1,会在new一个内存单元;向上移动,SP-1,就把SP指向的单元dele掉。

堆栈指针的运作

3,关于 堆栈指针的问题

两种思路考虑: 1,正向思考 如果栈为空,则栈顶指针也应该指向数组的外面。 如果两个栈里面的元素都是1的时候,你的答案就是正确的了。 2,逆向思考 栈顶指针指向是是栈的top元素。 如果栈为空,栈顶指针应该不指向任何有效元素。 如果栈里面的元素是1的话,top[1] = 1; 因为return stack[top[1]]恰好就是数组的第一个元素。 这应该是题意要求的。 反之,假设LZ的答案是正确的。 栈空的时候,top[1] = 1; 那么栈有一个元素的时候,栈顶指针++,top[1] = 2;这就浪费了数组的一个存储空间了。

关于 堆栈指针的问题

4,单片机中堆栈指针的作用A指明栈底的位置 B指明栈顶的位置 C

选择B。堆栈指针主要用来保存临时数据、局部变量和中断/ 子程序的返回地址。栈顶的位置由栈指针SP指出。
你好!选择B。堆栈指针主要用来保存临时数据、局部变量和中断/ 子程序的返回地址。栈顶的位置由栈指针SP指出。如果对你有帮助,望采纳。
答案B 堆栈指针SP存放的是堆栈区的地址。假设SP刚开始存放的是30H,那么执行PUSH direct 的时候,把direct地址所指示的存储器单元的数据压入(SP)←(SP)+1(此时sp先进行加一)也就是31H(存储器单元地址),这时如果还有数据要压入堆栈区,就依次执行,即放入32H,33H中,当放到33H的时候,此时SP中的值就是33H,就是SP指向33H存储器单元。此时如果有指令POP direct ,则从33H开始取出数据,然后SP自减一,再取出下一条。因此,此时所说的栈顶就是堆栈区地址中最大的数,指到33H的时候,就是33H,取出33H中的数据后,栈顶就是32H。

5,什么是堆栈指针如何理解堆栈指针

堆栈指针有以下特点:在堆上分配空间,即指向堆空间堆上分配的最大空间是4G好像没有其它特点了 ^_^
堆栈是一个抽象数据类型,规定的两项必备的基本操作分别为入栈和出栈。这个抽象数据类型并没规定入栈与出栈具体要怎么实现。你问的问题已经在实现这一层面 上,所以按照堆栈这种抽象数据类型的规定看,“先修改指针,然后插入数据,出栈时刚好相反”并不是必须的,这取决于你的操作的具体实现。 如果你的堆栈的实现是往上长的(就是说往顶的方向长,其实质是你的栈底是定死的不能动,入栈的东西只能不断往上叠,这就像你在书桌上放书一样,桌 底是定死的,所以你的书只能一本一本地往上堆,往上长),计算机内部的堆栈的实现采取的就是这种模式,所以就得像你说的那样,“先修改指针,然后插入数 据,出栈时刚好相反”,因为你堆栈指针指向的总是栈顶元素,栈底不能动,所以数据入栈前要先修改指针使它指向新的空余空间然后再把数据存进去,出栈的时候 自然相反,你联系我上面举的放书的例子仔细想想。 然而,如果你的堆栈的实现是往下长的(就是说你每压一个元素入栈,栈底就自动下移一个元素的位置,其实质就是这种堆栈模型是一个“无底洞”型), 这个时候,你的栈顶就变成了定死的,你就可以先压入元素,然后再修改指针。因为你的栈底是无限的,你压入一个元素,新的元素就取代先前的栈顶元素占据栈顶 的位置,那么你先前的指向栈顶元素的指针这个时候就该修改让它指向这个新的栈顶元素了。 下面的就是对“无底洞”型堆栈的一种实现的描述: 压栈(入栈):将对象或者数据压入栈中,更新栈顶指针,使其指向最后入栈的对象或数据。 弹栈(出栈):返回栈顶指向的对象或数据,并从栈中删除该对象或数据,更新栈顶。 话说回来,计算机内部肯定选第一种模型,不会选第二种,因为第二种模型,每压入一个新的元素,都需要把之前堆栈里的所有元素整体下移动一个元素的 位置,腾出栈顶元素的位置让新的元素进来,这种平移可是一笔不小的开销啊!但是并不是说“无底洞”模型就没办法实现了,其实它可以通过第一种模型来模拟 的,每需要压入一个新的元素的时候,就先开辟一个空间,数据存入这个空间,然后再修改栈顶元素指针使其指向这个新的栈顶元素。 换句话说,用链表的话,只要有足够的空间可开辟出来作为一个节点,那么两种堆栈模型都能实现(当然“无底洞”型还是如我上面说的那样用第一种模拟出来的,否则平移的工作量相当可观),如果用数组,由于数组在内存中是连续分配出来的空间,用第一种模型更自然一些

6,汇编语言中的堆栈段指针是干什么的

汇编语言中的堆栈段指针是用来保存临时数据、局部变量和中断/调用子程序程序的返回地址。堆栈指针总是指向栈顶元素。在51系列单片机中,堆栈是向上生长的,所以数据入栈的时候,堆栈指针先加1,再压栈。出栈的时候先弹出数据,堆栈指针再减1。但在AVR单片机中,堆栈是向下生长的,数据入栈时指针将减1,数据出栈时指针将加1。
堆栈是用来存储数据的,例如某个寄存器里面的数值或地址。堆栈可以理解成一个仓库,这个仓库里有很多格子,每个格子里放一个东西,每个格子都有一个编号。堆栈指针就是用来查找格子编号的,假设现在堆栈里有10个格子,编号依次是0,1,2,3,4,5,6,7,8,9,如果现在堆栈指针是5,那么就对应5号格子里的内容(数据或地址)
堆栈段指针(寄存器SS)是用于确定堆栈在内存中的起始位置的寄存器;堆栈段寄存器的作用和其他段寄存器(CS,DS,ES)相同,都是为了在一整段的内存中划分区域:由于内存为一整段储存单元,CS(代码段寄存器)中存放代码段的起始位置,DS(数据段寄存器)中存放数据段的起始位置,SS(堆栈段寄存器)中存放堆栈段的起始位置,ES(附加段寄存器)中存放附加段的起始位置。  在操作系统架构的内存中,堆栈位于程序所使用内存的顶端,向内存低地址处扩展,DS寄存器中存放的是堆栈最低的地址。堆栈本身为内存的一部分,但是相对普通内存段(DS)的区别在于:普通内存段(DS)一般用于存放长久数据,无特殊存储顺序;堆栈内存段(SS)一般用于存放暂时数据(例如调用函数是的参数),可以使用PUSH,POP指令向栈顶压入,弹出数据。  另外,若SP(栈顶寄存器)中的值小于DS寄存器(PUSH指令执行过多次)将会引发错误:系统显示某某程序Stack Overflow(因为SS段往下的内存地址属于数据段的区域)。若SP中的值大于一定程度(由程序的堆栈段大小决定)(POP指令执行过多),也将会引发错误:系统显示某某程序Access Violation Reading Address(因为程序内存的顶端上有着其他数据)。  需要注意的是,在较新的操作系统下汇编其平台下的程序时,程序员将无法修改段寄存器中的值(修改会报错),它们由操作系统自身管理(可以理解为由操作系统编写者的代码管理),其原因是出于安全起见。
16位汇编下堆栈段SS寄存器是表示一个堆栈的基址,实际地址是(ss)*16+(sp)=物理地址,这个是当前对战指针指向的实际地址。
堆栈段是保存数据的esp就是地址指标器push eax时,esp-4pop eax时,esp+4程序调用call时会执行压栈操作,保存 下一条指令地址返回时会执行出栈操作,取出 上面保存的地址 放到 PC继续执行。当然自己也可以执行入栈,出栈操作,保存寄存器状态等 甚至可以当作数据段 使用,保存临时变量等
文章TAG:堆栈指针堆栈指针的过程用文字描述

最近更新

  • 石墨的结构,石墨结构如何石墨的结构,石墨结构如何

    石墨结构如何2,石墨结构是什么3,石墨是什么是有什么组成的4,石墨结构是5,石墨晶体是层状结构如图以下有关石墨晶体的说法正确的一组是6,石墨是什么状结构的7,为什么石墨板遇硝酸会腐蚀石墨板.....

    问答 日期:2023-08-19

  • 锂盐,锂盐是盐吗锂盐,锂盐是盐吗

    锂盐是盐吗2,含锂盐的食品有哪些3,金属锂盐化学成分4,锂盐和铁盐的净水作用分别是什么5,锂铁磷酸盐和锂盐是一种东西吗6,锂盐对人体有害吗1,锂盐是盐吗盐的定义是金属离子和酸根离子结合,有一.....

    问答 日期:2023-08-19

  • 电机结构,电动机的基本构造电机结构,电动机的基本构造

    电动机的基本构造2,三相异步电动机的结构主要包括哪两种3,电机的结构原理4,直流电机有哪几部分组成5,电机由什么组成6,三相异步电动机的结构1,电动机的基本构造定子和转子2,三相异步电动机的.....

    问答 日期:2023-08-19

  • 可口可乐销量数据可口可乐销量数据

    可口可乐,迫切需求可口可乐近五年销售额可口可乐占世界饮料销售额的44%可口可乐拥有超过200亿美元的商标价值,可口可乐占世界饮料销售额。请问有谁知道百事可乐和可口可乐最近5-10年销量.....

    问答 日期:2023-08-19

  • 时控开关怎么调时间,微电脑时控开关怎么调RMD5型上海人民电力电器有限公司时控开关怎么调时间,微电脑时控开关怎么调RMD5型上海人民电力电器有限公司

    微电脑时控开关怎么调RMD5型上海人民电力电器有限公司2,nkg3时控开关怎么定时间3,时控开关怎么调时间4,时控开关怎么设置5,kg316t微电脑时控开关怎么调时间6,天正时控开关的操作方法1,微电脑.....

    问答 日期:2023-08-19

  • 电子货架,电子产品仓库应该用什么货架电子货架,电子产品仓库应该用什么货架

    电子产品仓库应该用什么货架2,电子标签货架作用和优势3,电子货柜和悬挂式货架是什么4,电子货架是什么他的运作流程是什么5,使用电子货架标签有什么好处6,电子货架标签系统的基本介绍1,电子产.....

    问答 日期:2023-08-19

  • 无功功率补偿,无功功率补偿是什么意思无功功率补偿,无功功率补偿是什么意思

    无功功率补偿是什么意思2,无功功率的无功补偿3,节电器的无功率补偿的原理是什么4,什么是无功补偿5,无功功率补偿原理6,无功补偿的补偿方式是什么有哪些优缺点7,什么是无功功率补偿8,什么是无.....

    问答 日期:2023-08-19

  • 电动势,什么是电动势电动势,什么是电动势

    什么是电动势2,什么叫电动势3,什么是电动势4,什么是电动势5,什么是电动势6,什么是电动势1,什么是电动势电动势是一个表征电源特征的物理量。定义为把单位正电荷从负极通过电源内部移到正极时.....

    问答 日期:2023-08-19