汇编语言 学习记录03
3.8 栈顶超界的问题
8086cpu不保证我们的操作不会导致超界问题;
所以在编程时需要考虑栈顶超界的问题,无论是入栈亦或是出栈都要注意。
3.9 push、pop指令
指令格式可以为:
1 push 寄存器、段寄存器、内存单元(都是以字为单位) 2 pop 寄存器、段寄存器、内存单元(都是以字为单位) 3 //例如 4 mov ax 1000H 5 mov ds,ax 6 push [0] 7 pop [2]
显而易见的问题:一个栈段最大可以设置为多少?
因为我们在进行push和pop操作时,更改的值为SP=SP+2,SS的值保持不变,所以最大为0~FFFFH,容纳64KB的内容。
对于数据段,段地址存放在DS中,用mov、add、sub等访问内存单元的指令时,CPU将其当作数据来访问。
对于代码段,段地址存放在CS中,第一条指令的偏移地址放在IP中,CPU将执行代码段中的指令。
对于栈段,段地址存放在SS中,栈顶单元的偏移地址存放在SP中,CPU在执行push、pop指令时将这一栈段当作栈空间来进行使用。