栈的设置+栈的越界问题+栈的极限大小

本文介绍了如何设置栈的大小及位置,并讨论了栈顶标记的管理方式。此外,还探讨了栈越界问题及其潜在风险,以及在8086 CPU环境下如何自行管理栈的界限。

栈   箱子

箱子画在哪里是我决定的

箱子的容量大小也是我决定的

我们可以决定栈顶标记在哪里

栈在哪里(箱子在哪里) 栈的大小(箱子的大小)

SP=10H

16byte=8个字型数据   push可以操作8次

栈是如何设置的:

(建议设置成16的倍数)自己的一个约定 防止一些稀奇古怪的问题

起始地址+你说设定栈的大小的字节数(假设把第一排16个字节设置为栈的大小)

0000      +  16(10H)                       =10H     SS,SP所组合出的栈顶标记

栈的越界问题:

栈顶超界是危险的: 因为我们既然将一段空间安排为栈 ,那么在栈空间之外的空间里很可能存放了具有其他用途的数据、代码等,

这些数据、代码可能是我们自己的程序中的,也可能是别的程序中的。(毕竟一个计算机系统并不是只有我们自己的程序在运行)

但是由于我们在入栈出栈时的不小心,而将这些数据、代码意外地改写,将会引发一连串的错误。 我们当然希望CPU 可以帮我们解决这个问题,

比如说在CPU中有记录栈顶上限和下限的寄存器,我们可以通过填写这些寄存器来指定栈空间的范围 ,

然后 ,CPU 在执行push指令的时候靠检测栈顶上限寄存器,在执行pop 指令的时候靠检测栈顶下限寄存器保证不会超界。

实际情况:8086CPU中并没有这样的寄存器。

栈的极限大小

一个栈 最大的空间能设置为多少?

SP寄存器的变化范围   0~FFFFH    32768个字型数据

SS=2000H     SP=0

就是设置了一个可以存放32768个字型数据的箱子

SP又等于0了  再入栈    覆盖了原来栈中的内容

64KB

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值