标签:
最后一次更新:2016-03-23 19:51:12
寄存器(内存访问)
字单元:字型数据在地址连续的两个内存单元中存储,比如2 3内存单元,2为该字型起始单元,则称该字单元为2地址地址单元
用mov指令访问内存单元,可以在mov指令中只给出单元的偏移地址,此时段地址默认在DS寄存器中
[address]表示偏移地址为address的内存单元
内存和寄存器中传送字型数据是,高地址单元和高8位寄存器,低地址单元和低8为寄存器
任意时刻,SS:SP指向栈顶元素
和mov不同的是,pop和push不需要给出内存的偏移地址,ss:sp就能确定当前栈顶
cpu的栈机制:先改变sp后写内存的push指令,读内存后改变sp的pop指令
cpu只知道当前执行的指令和当前的栈顶元素,没有overflow的机制
需要自己判断栈有没有出界,需要自己管理栈空间的大小,比如我们人为设定10000H~1FFFFH为栈段
pop和push只是指令,需要我们先定义SS,SP指向栈段(初始化栈顶)
pop和push实质上是一种内存访问指令
比如 1000H~1FFFFH这段空间设定为栈段,初始状态栈是空的,此时SS=1000H?(感觉是2000H),SP=0000H
分析:栈为有唯一一个元素时,sp的内容是fffe,则这个元素出栈,sp=sp+2
分析:ss当前栈段地址,是不会改变的,push、pop只改变sp,所以栈顶的变化范围是0~FFFFFH,从栈空的时候的sp=0,一直压栈,直到栈满是sp=0,如果再次压栈,栈顶将环绕,覆盖掉原来的内容,所以一个栈段的最大容量为64KB
标签:
原文地址:http://www.cnblogs.com/EdsonLin/p/5313175.html