入栈 PUSH:将16位寄存器或者内存中的字型数据压入栈顶

出栈 POP  :将栈顶的字型数据存入16位寄存器或内存中

栈顶标记是内存地址,在8086CPU中,在任意时刻将段地址寄存器 SS 和偏移地址寄存器 SP 所组合的内存地址当做栈顶标记。

 

PUSH ax  :修改SP寄存器中的值:SP = SP - 2,将 ax 中的字型数据入栈

POP bx    :将栈顶中的字型数据存入bx:修改栈顶标记,SP = SP + 2

栈的极限大小:将 SP 寄存器设置为 0时 ,栈最大(0~FFFFH),栈越界时不会报错

 

栈的作用:

  临时性保存数据

    • 将 CALL 指令下一条指令的地址压栈,通过 RET 可指令取出该地址
    • 将寄存器的值压栈,更改寄存器的值后,可以通过栈还原寄存器

  交换数据

    • 将寄存器或内存的数据相互交换

 

CPU将内存中的某段内容当作指令是因为CS,IP指向那里

CPU将内存中的某段内容当作指令是因为SS,SP指向那里

 

posted @ 2019-11-01 21:41  tianqibucuo  阅读(153)  评论(0)    收藏  举报