level 5
pop是把栈中的数据复制到寄存器中,而原本的数据还是存在于栈中,我想问一下push是不是也进行着同样的复制操作,是把寄存器的数据复制到栈中?
2020年05月07日 10点05分
1
level 13
说'复制'是可以的,push和pop做的都是复制,源的资料并没有被清除.
顺利说一下,push和pop并不只对寄存器操作,内存和即时值也可以,比如
push word ptr [2000h] ;将内存ds:[2000]的word值推入栈
push dword ptr [2000h] ;将内存ds:[2000]的dword值推入栈
pop word ptr [2000h] ;将栈顶的word值弹出到ds:[2000h]
pop dword ptr [2000h] ;将栈顶的dword值弹出到ds:[2000h]
即时值的操作和内存一样,'必须'指出所操作的数值是word或dword
因为同样是1000h,cpu不知道是word的1000h,还是dword的00001000h
比如
push 100h ;错,没有指出长度
push word ptr 100h ;对,直接将0100h压栈,sp-2
push dword ptr 100h ;对,直接将00000100h压栈,sp-4
pop不可以操作即时值
2020年05月07日 11点05分
3