zoukankan      html  css  js  c++  java
  • 栈的设置+栈的越界问题+栈的极限大小

    栈   箱子

    箱子画在哪里是我决定的

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

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

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

    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

  • 相关阅读:
    http://blog.csdn.net/steveguoshao/article/details/38414145
    http://www.tuicool.com/articles/EjMJNz
    http://jingyan.baidu.com/article/7f41ecec1b7a2e593d095ce6.html
    Linux 查看当前时间和修改系统时间
    http://m.blog.csdn.net/article/details?id=49132747
    http://www.cnblogs.com/nick-huang/p/4848843.html
    javaScript事件(一)事件流
    jQuery选择器
    超链接a的target属性
    html基础总结版
  • 原文地址:https://www.cnblogs.com/hsp1269/p/13790634.html
Copyright © 2011-2022 走看看