汇编语言 学习记录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指令时将这一栈段当作栈空间来进行使用。

 

posted @ 2022-04-07 21:20  FantasyLee  阅读(42)  评论(0编辑  收藏  举报