PUSH是不是起到分组把寄存器里的数据保存起来啊?
如:
EAX=1,EBX=2,ECX=3,PUSH 1
EAX=11,EBX=12,ECX=13,PUSH 11
结果是不是下面的啊?
POP 1,,就是EAX=1,EBX=2,ECX=3,
POP 11,,就是EAX=11,EBX=12,ECX=13,
SH”指令的功能是实现将一个寄存器中的数据压入栈操作。PUSH的操作过程是: (SP)(SP)-2,((SP))<-OPRD。先修改堆栈指针SP(压入时为自动减2),然后,将指定的操作数送入新的栈顶位置。
汇编里的"POP"指令的功能是实现将一个寄存器中的数据弹出栈操作。POP的操作过程是:将堆栈段中当前SS:SP所指的字内容弹出到某个寄存器或段寄存器或内存单元。再 SP←SP+2。
扩展资料:
PUSH和POP指令对状态标志位没有影响。"PUSH"指令每进行一次压入操作,都压入一个字(16位)。OPRD为16位(字)操作数,可以是寄存器或存储器操作数。
若段描述符中的D\B位为1,则栈操作将使用ESP寄存器。先将ESP数值减去栈数据的长度 sub esp,register's long.(sizeof register)。再将数据压入栈:mov ss:[esp],register。
若段描述符中的D\B位为0,则栈操作将使用SP寄存器。先将SP数值减去栈数据的长度 sub sp,register's long.(sizeof register)再将数据压入栈:mov ss:[sp],register。