汇编里的"PUSH"和"POP"起了什么功能,,谁能用通俗点的话告诉我吗??
发布网友
发布时间:2022-04-30 21:08
我来回答
共5个回答
热心网友
时间:2023-10-13 00:56
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。
热心网友
时间:2023-10-13 00:56
进出栈,栈是FILO(first in last out),先进后出
也就是把寄存器里的数据临时保存一下,相当与一个仓库
不是你说的那样子
假设eax=4,ebx=5
push eax
push ebx
pop eax
pop ebx
结果eax=5 ebx=4(体现了先进后出)
热心网友
时间:2023-10-13 00:57
堆栈是一端固定,另一端变化的特殊存储空间,你可以把它想像成装固体的桶,桶底(栈底)固定,桶里面所装固体的最高处定义为桶顶(栈顶)。如果什么都没有装时,桶顶和桶底相等,当装一层沙子后,桶顶升高(即栈顶地址-2,相当于入栈PUSH),再装一层水泥,桶顶再次升高,(即栈顶地址又-2),当你往出倒东西的时候,你先倒出最上层的水泥,桶顶下降(即栈顶地址+2,相当出栈POP),然后你才能倒出沙子。所以堆栈是先进来的先出去。
热心网友
时间:2023-10-13 00:57
push和pop是堆栈操作指令,push [reg]/[num] 是将reg寄存器中的值或是数字num压入堆栈中,而pop [reg]是将堆栈栈顶的值弹出到reg寄存器中,并将这个值从堆栈中删去.
堆栈可以看成是一个数组,但只能在栈顶(可以认为是数组的一端)对数据进行操作,起临时保存数据的作用,32位汇编中,ss:esp指向堆栈栈顶,16位则是ss:sp.
热心网友
时间:2023-10-13 00:58
我也不懂。
汇编里的"PUSH"和"POP"起了什么功能,,谁能用通俗点的话告诉我吗???
堆栈是一端固定,另一端变化的特殊存储空间,你可以把它想像成装固体的桶,桶底(栈底)固定,桶里面所装固体的最高处定义为桶顶(栈顶)。如果什么都没有装时,桶顶和桶底相等,当装一层沙子后,桶顶升高(即栈顶变高,相当于入栈PUSH),再装一层水泥,桶顶再次升高,(即栈顶又变高),当...
c语言,pop函数和push函数的作用分别是什么?请详细一点,谢谢。我是初学...
pop函数 出栈 ;push函数 进栈。相当于有一个箱子,push函数是把东西放进去;而pop函数则相反,是把东西从那箱子里拿出来。
汇编语言用堆栈指令将寄存器AX与SI的内容交换。 PUSH AX PUSH SI...
有个问题需要注意,push和pop的操作数是寄存器的值,不是寄存器本身。push AX 先把AX的值入栈 push SI 然后把SI的值入栈 pop AX 是把后压入的SI的值弹到AX pop SI 是把先压入的AX的值弹到SI 是数据的后进先出,不是寄存器的后进先出。这样就可以达到交换寄存器数据的目的。同样,如果...
总结及分析各种寻址方式。
在执行PUSH(压栈)和POP(出栈)指令时,采用堆栈指针SP作寄存器间接寻址。 例:PUSH 30H ;把内部RAM地址30H内的值放到堆栈区中堆栈区是由SP寄存器指定的,如果执行上面这条命令前,SP为60H,命令执行后会把内部RAM地址30H内的值放到RAM的61H内。 那么做为寄存器间接寻址用的寄存器主要有哪些呢? 我们前面提到的有四个...
跪求汇编语语言命令详解
pop 指令(把字弹出堆栈) (数据传送命令) push 指令(把字压入堆栈) 存储器 寄存器 段寄器 xchg 指令(交换字或字节) (数据传送命令) 寄存器与寄存器交换 存储器与寄存器交换 寄存器与累加器交换 in 指令(端口输入) (数据传送命令) 直接输入 间接输入 out 指令(端口输出) (数据传送指令) 直接输出 间接输出 add...
汇编语言中 指令INC SRC是什么意思
功能:目标操作数+1 INC指令只有1个操作数,它将指定的操作数的内容加1,再将结果送回到该操作数。INC指令将影响SF,AF,ZF,PF,OF标志位,但是不影响CF标志位。INC指令的操作数的类型可以是通用寄存器或存储单元,但不可以是段寄存器。字或字节操作均可。2、SRC--->source:指令的源操作数 源操作数...
如何使用汇编语言程序设计方法在屏幕上输出汉字?
push ax push bx push ds push si push cx push dx mov bp,sp xor dx,dx jmp s1 nextChar: ;指向下一个要输出的字符 add si,32 add bx,DefDis+CharWidth s1: cmp dh,ch ;是否已经输出了指定个数的字符 je Dones call DispZhc inc dh jmp nextChar Dones: pop dx pop cx pop si pop ds ...
X86指令集的内容有哪些?
PUSH 把字压入堆栈. POP 把字弹出堆栈. PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈. POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈. PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈. POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈. BSWAP 交换32位寄存器里字节的顺...
请问51单片机定时器延时的调用是怎么调用的我有点不明白,谢谢
但应该注意,C51编写的中断服务程序编译后会自动加上PUSH ACC、PUSH PSW、POP PSW和POP ACC语句,执行时占用了4个机器周期;如程序中还有计数值加1语句,则又会占用1个机器周期。这些语句所消耗的时间在计算定时初值时要考虑进去,从初值中减去以达到最小误差的目的。 2 软件延时与时间计算 在很多...
堆和栈的区别是啥?
1.栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放;2.堆是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些。三.堆栈数据结构区别:堆(数据结构):堆可以被看成是一棵树,如:堆...