Assembly Language(8086CPU)

代码段地址: CS:IP (CS为代码段寄存器,IP为指令指针寄存器) JMP指令实际上就是在修改CS:IP

数据段地址: DS:[address] 

栈: SS:SP  指向栈顶元素,从高位到地位,即 push 操作将使SP-2,pop操作则将sp+2.

例:当前 SS=1000H, SP=0010H,则当执行push 操作后,CPU将数据写入1000FH和1000EH中,SP=000EH.

反之,当SS=1000H,SP=0000H时,当执行pop操作后,CPU将10000H和10001H中的数据写入pop后的对象(地址或寄存器),SP=0002H,此时,10000H和10001H中的数据并未马上被清楚,而是在下一次栈用到这个地址时,直接覆盖。

 

8086CPU不支持将数据直接送入段寄存器的操作,硬件设计的问题。

每个字单元(char)占两个内存单元。

8086CPU的入栈和出栈操作都是以字为单位进行的。

8086CPU不保证开发者对栈的操作是否越界。

 

posted on 2014-05-22 13:35  alex_wood  阅读(274)  评论(0编辑  收藏  举报