电子与通信技术

什么是堆栈?堆栈有何作用?为什么在程序初始化时要对SP重新赋值?

题目

什么是堆栈?堆栈有何作用?为什么在程序初始化时要对SP重新赋值?

如果没有搜索结果,请直接 联系老师 获取答案。
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

51应用系统中,为何要对堆栈指针SP重新设置?


正确答案:复位后(SP)=07H,则堆栈是从08H开始存放数据的。而内部数据存储器中00H~1FH单元为工作寄存器区,而20H~2FH单元为位寻址区,在实际的应用系统中,这些区域都可能使用到。故一般将堆栈设置在地址30H以后的单元中,所以需要对堆栈指针SP重新设置。

第2题:

什么叫堆栈?设置堆栈的主要是出于什么需要?堆栈有哪几种基本操作?为什么用户进行堆栈操作时不需要涉及具体的内存地址?


正确答案:堆栈是按后进先出( LIFO)原则存取的一种存储结构。在子程序和中断技术中,都要保存返回地址或断点地址以及现场等信息,这些信息的存入和取出都具有一个共同特点:最后存入的信息最先被取走。堆栈主要是为了适应这种存取方式而引入的。堆栈有两种基本操作:入栈和出栈。由于两种原因,使得进行堆栈操作时不需要涉及具体的内存地址:一是只有入栈和出栈两种基本擦作,入栈指令将源操作数存入栈顶,出栈操作从栈顶把数据取出送给目的操作数;二是设置了堆栈指针SP。规定SP始终指向栈顶,SP的初值可由程序设定。

第3题:

若用户初始化堆栈时,(SP)=0000H,则该堆栈的可使用空间是( )。

A.0

B.65536

C.65535

D.65534


正确答案:B

第4题:

设堆栈段寄存器(SS)=0E4BH,程序中设堆栈长度为200H个字节。试计算出堆栈底部字单元物理地址,堆栈指针SP初始值(即堆栈中没有数据时)和SP初始值指向的物理地址。


正确答案:物理地址为:3E4B0H,SP的初始值为200H,指向的物理地址为:3E6B1H.。

第5题:

在某系统中,已知当前(SS)=2360H,(SP)=0800H,那么该堆栈段在存储器中的物理地址范围是什么?若往堆栈中存入20个字节数据,那么SP的内容为什么值?


正确答案: (SS)×10H+(SP)=23600H+0800H=23E00H,堆栈段在存储器中的物理地址范围是23600H~23E00H。若往堆栈中存入20个字节数据,那么SP的内容为0800H-14H=07ECH。(20的十六进制为14H)。

第6题:

在存储器堆栈中,若栈底地址为A,SP指针初值为A--1,当堆栈采用从地址小的位置向地址大的位置生成时,弹出操作应是()

  • A、先从堆栈取出数据,然后SP指针减
  • B、先从堆栈取出数据,然后SP指针加
  • C、SP指针先加1,然后从堆栈取出数据
  • D、SP指针先减1,然后从堆栈取出数据

正确答案:A

第7题:

基址指针(BP)和堆栈指针(SP)在使用中有何区别?


正确答案:BP与SP都用于存放寻址堆栈的偏移地址,但SP存放的是距栈顶的偏移地址,而SP存放的是距堆栈首地址的偏移地址。两者是既有联系又有区别的地址值。

第8题:

堆栈操作中都是对栈顶单元进行的,访问堆栈的地址是由堆栈指针SP指定的。在操作过程中,指针 SP不需要用户指定。在下推式堆栈中,写入堆栈的单元地址是(36)。

A.PC

B.指令寄存器

C.(SP)-1

D.(SP)+1


正确答案:D
解析:堆栈是一个专门的存储区,其存取数据的顺序是先进后出,每次操作都是对栈顶单元进行的。栈顶单元的地址,每次进出栈时都要自动修改。栈顶单元的地址放在堆栈指针SP中,写入堆栈时,栈顶单元已经存有数据,再写入新数据时,不能写入原来的SP中,必须写到栈顶单元的下一单元中,在堆栈地址是向下生长的下推式堆栈中,写入数据的堆栈单元的堆栈单元地址是(SP)+1,即进栈操作把SP加1后再把进栈的数据写入新的栈顶单元(SP)/1中。出栈时,把栈顶单元内容弹出,然后(SP)-1。指针SP的修改是指令自动完成的,不需要用户参与。

第9题:

在8086/8088微机系统中,堆栈与堆栈指针SP的正确位置是()

  • A、堆栈在CPU中,SP也在CPU中
  • B、堆栈在ROM中,SP在CPU中
  • C、堆栈在CPU中,SP在RAM中
  • D、堆栈在RAM中,SP在CPU中

正确答案:D

第10题:

堆栈有哪些功能?堆栈指示器( SP)的作用是什么?


正确答案:堆栈在中端过程中用来保护现场数据,复位后SP=7H,而堆栈一般设置在通用ROM区(30H-7FH),在系统初始化时候要从新设置。