汇编里的"PUSH"和"POP"起了什么功能,,谁能用通俗点的话告诉我吗??

作者&投稿:闫虏 (若有异议请与网页底部的电邮联系)
谁能告诉我下面这段汇编有什么用,尤其是PUSH和POP是干什么的,如何实现?实现什么功能~

这是个中断服务子程序,所以这里的PUSH和POP操作是必须,PUSH是压栈操作,POP是出栈操作,通过这个操作起到保护A和PSW的作用,其他的含义程序已有解释

并不是这样,和你理解的恰恰相反

将寄存器的值进行压栈是为了保护在寄存器中的值。比方说
程序
在计算所得结果分别放在寄存器A和B中,这时程序调用
子程序
,子程序在编写过程中用到了A和B两个寄存器,如果直接调用子程序那么A和B中原有的计算值会被覆盖同时影响了程序和子程序的运算结果,这时需要
一个地方
用来保存原程序的结果就用到了栈

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。



进出栈,栈是FILO(first in last out),先进后出
也就是把寄存器里的数据临时保存一下,相当与一个仓库
不是你说的那样子

假设eax=4,ebx=5
push eax
push ebx
pop eax
pop ebx
结果eax=5 ebx=4(体现了先进后出)

堆栈是一端固定,另一端变化的特殊存储空间,你可以把它想像成装固体的桶,桶底(栈底)固定,桶里面所装固体的最高处定义为桶顶(栈顶)。如果什么都没有装时,桶顶和桶底相等,当装一层沙子后,桶顶升高(即栈顶地址-2,相当于入栈PUSH),再装一层水泥,桶顶再次升高,(即栈顶地址又-2),当你往出倒东西的时候,你先倒出最上层的水泥,桶顶下降(即栈顶地址+2,相当出栈POP),然后你才能倒出沙子。所以堆栈是先进来的先出去。

push和pop是堆栈操作指令,push [reg]/[num] 是将reg寄存器中的值或是数字num压入堆栈中,而pop [reg]是将堆栈栈顶的值弹出到reg寄存器中,并将这个值从堆栈中删去.
堆栈可以看成是一个数组,但只能在栈顶(可以认为是数组的一端)对数据进行操作,起临时保存数据的作用,32位汇编中,ss:esp指向堆栈栈顶,16位则是ss:sp.

我也不懂。


怎样把丝带编进辫子里
1 先用电卷棒将头发的发尾部分做成大卷,提升蓬松感。然后将一根长丝带平放在头顶,两边自然下垂,长度及胸。2 先将头发分成三部分,将右边的头发和丝带混合在一起,将丝带作为发束的一股编起来束好,左边相同。3 最后,将脑后剩余的头发也编成麻花辫,并用发卡固定好,然后将两边编好的发束自然...

大家编制的童话里有一个魔王和一位公主还有许多什么。从大家编织的童话...
2015-03-29 安徒生童话里有一位公主为救十一个哥哥织男袍的故事叫什么名字?... 19 2011-01-11 求一个关于公主的童话故事 456 2011-12-07 帮我编一个童话故事(450字左右) 412 2013-05-26 安徒生童话中有一个故事,公主感觉到二十层被子下面的豌豆,所以... 70 更多...

想用GRUB直接引导硬盘上的ISO文件(4G)怎么编写menu里的代码_百度...
你参考一下下面的资料 前几天给一同学用这个方法安装成功,特将步骤记下 1 将安装镜像文件ubuntu-8.04-desktop-i386.iso文件放在一个分区的根目录,如F:\\ 2 挂载iso文件,命令如下 sudo mount ubuntu-8.04-desktop-i386.iso -o loop \/media\/cdrom 3 进入\/cdrom, 把casper目录下的vmlinuz及initrd...

一般县城里的事业编制每月到手的工资大概是多少?
我正好有几个朋友在县城事业单位工作,因而我对县城事业编工作人员的工资待遇十分理解,下面我就细致分享一下县城事业编的工资待遇,看看一个月到手工资有几。河南县城事业编待遇 我研讨生毕业以后胜利上岸了中部某市直事业单位,由于工作上的需求,我认识一些在县城工作的事业编同行,所以我对县城事业编的...

编瞎话里的编是什么意思
编:捏造...

统编教材里的古诗文教学
北京第二实验小学兰州分校    牛筱琼 一、统编教材里的古诗文的编选 入选篇目增多。共128篇,比之前的教材多出59篇。所选诗歌主要集中在唐、宋两个朝代,其他朝代也有兼顾。选文题材内容丰富,符合学生的认知发现,利于学生讲古诗文与生活经验相结合并由此展开想象产生共鸣。二、探究教材...

牛筱琼《统编教材里的古诗教学》
        8月6日晚课改中国行网络直播迎来了北京第二实验小学兰州分校的牛筱琼老师,她带来的讲座是《统编教材里的古诗教学》。        牛筱琼老师的讲座分四个板块:一、统编教材里古诗文的编选 1、了解什么是古诗文及发展史 古诗文包括古代...

明朝万历年间,"里″是什么行政编置?
里,在明朝,类似于小村。在之前的几个朝代,几十户为一里,到了明朝,一百一十户为“里”,《明史》里面有明确记载。管理里的,称为“里长”,主要负责这一百一十户的户口及纳税等事务。

梦见自己编的电视里面有石矶
不要太劳累了。梦见电视里的画面 ,对开始的新恋情抱有极高的憧憬,使双方都沉浸在幻想的美好画面中;财运达到最理想的高度,不如将决策权交到值得信任的伙伴手中,既定轻闲又得金钱;工作中太过内敛会失去许多机遇。怀孕的人梦见自己编辫子,预示生男,冬占生女,慎防动胎气。

事业单位里的正式事业编制会随时下岗吗?
不会。事业单位里的正式事业编制就是在编人员,也就是说被已经纳入了该单位的人事编制,就是正式员工。因为在事业单位,员工会有在编和非在编的区别。一般情况下,在编人员是正式员工,非在编人员是非正式工或者是临时工。会临时下岗的是事业单位的非在编人员,非在编人员都是因为岗位的需求进行临时的录用...

彭阳县18263381357: 汇编里的"PUSH"和"POP"起了什么功能,,谁能用通俗点的话告诉我吗???
谷彦肝欣: 堆栈是一端固定,另一端变化的特殊存储空间,你可以把它想像成装固体的桶,桶底(栈底)固定,桶里面所装固体的最高处定义为桶顶(栈顶).如果什么都没有装时,桶顶和桶底相等,当装一层沙子后,桶顶升高(即栈顶地址-2,相当于入栈PUSH),再装一层水泥,桶顶再次升高,(即栈顶地址又-2),当你往出倒东西的时候,你先倒出最上层的水泥,桶顶下降(即栈顶地址+2,相当出栈POP),然后你才能倒出沙子.所以堆栈是先进来的先出去.

彭阳县18263381357: 请教汇编中的PUSH指令以及一些问题 -
谷彦肝欣: 报错就是不能这样用 可以变通一下啊 MOV SI,0 mov ax,offset COURSE1 add si,ax lodsw PUSH ax

彭阳县18263381357: 汇编里的PUSH压栈使用他是为了进行什么步骤而使用的呢? -
谷彦肝欣: 不丢失数据进行压入(PUSH)栈保护,出栈(POP)恢复原数据.例如共用累加器A,进栈前压入保护,累加器可在进行运算,出栈恢复原累加器中的数值.结果不会影响原数值.

彭阳县18263381357: 汇编里的PUSH功能是压栈但为什么要压栈的呢? -
谷彦肝欣: 计算机程序用来放数据的地方有两种,一个是堆,一个是栈. 栈一般用来放一些函数的临时变量,还有中断和调用函数时的返回地址.因为这些地址都是临时的,所以在栈的出栈和进栈的时候可以动态的进入和删除.调用函数和中断的时候,临时变量和返回地址就暂存在栈中.函数调用完了,临时变量和返回地址就从栈删除了.所以栈一般来说是临时变量,调用函数会自动回收内存.这就是PUSH 和 POP 的功能了.相当于一个暂时保存数据的地方. 而堆的话一般用来动态分配内存,分配的内存一般不会自动释放.

彭阳县18263381357: 汇编语言中的PUSH的用法 -
谷彦肝欣: 减2就是指针上移2个单元, 题中例子里, push ax后, sp=000EH.

彭阳县18263381357: 汇编语言字符串复制指令?PUSH和POP指令必须成对出现吗?如果不必要那在什么情况不需要,什么情况需要? -
谷彦肝欣: 根据我的理解,PUSH和POP并不是非用不可的指令,无非是临时保护一下有可能会被破坏的寄存器数据,你也可以手动将这些数值保存到一个中间暂存的寄存器,等突发事件(通常是中断)过后,再把原来的值取回来,效果一样,但你必须设...

彭阳县18263381357: 汇编中进栈出栈(push,pop)有什么作用,有点糊涂,请高手点拨,最好详细一点,谢谢! -
谷彦肝欣: 堆栈有用来暂时保存数据、与子程序通讯两个功能.功能一、暂时保存数据 比如要调用某子程序,不希望子程序破坏寄存器BX,那么可以这样 PUSH BX CALL procXXX POP BX 功能二、用来和传递参数给子程序

彭阳县18263381357: 汇编push压桟指令 -
谷彦肝欣: push可以保存现场,然后调用其他函数,等其他函数返回后,又可以接着原来的运行.push也可以将参数传递给函数调用.当然还有其他的作用.

彭阳县18263381357: 汇编语言中的进栈push,出栈pop,有什么作用呢? -
谷彦肝欣: 并不是这样,和你理解的恰恰相反 , 将寄存器的值进行压栈是为了保护在寄存器中的值.比方说程序在计算所得结果分别放在寄存器A和B中,这时程序调用子程序,子程序在编写过程中用到了A和B两个寄存器,如果直接调用子程序那么A和B中原有的计算值会被覆盖同时影响了程序和子程序的运算结果,这时需要一个地方用来保存原程序的结果就用到了栈

彭阳县18263381357: 汇编语言里的抵消平衡指令如PUSH和POP等还有那些指令也是抵消的? -
谷彦肝欣: PUSH,POP 功能: 把操作数压入或取出堆栈 语法: PUSH 操作数 POP 操作数 格式: PUSH r PUSH M PUSH data POP r POP m PUSHF,POPF,PUSHA,POPA 功能: 堆栈指令群 格式: PUSHF POPF PUSHA POPA ADD,ADC 功能: 加法指...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网