社区
汇编语言
帖子详情
为什么PUSH CS是合法的,但是POP CS是不合法的
OICQshenshi
2012-02-02 11:32:02
看教程到这里,理解不了,求解释下
...全文
3544
6
打赏
收藏
为什么PUSH CS是合法的,但是POP CS是不合法的
看教程到这里,理解不了,求解释下
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
masmaster
2012-02-03
打赏
举报
回复
CS可别乱改
OICQshenshi
2012-02-03
打赏
举报
回复
谢谢,了解了,cs和ip是成对出现的
zara
2012-02-03
打赏
举报
回复
[Quote=引用 3 楼 oicqshenshi 的回复:]为什么一定要一致呢,存储到寄存器里都是二进制数据,对其没有区别呀,这就是不理解的地方[/Quote]改变 cs 就改变了 cs:ip 组,就意味着执行流程发生了变化,下一指令的执行就是从新的 cs:ip 处进行了。你现在只改 cs 而 ip 不动,不就要求 ip 在跳转的前后是一致的吗?
大熊猫侯佩
2012-02-03
打赏
举报
回复
稍微想一下就知道修改cs不是那么好玩的鸟。
OICQshenshi
2012-02-03
打赏
举报
回复
[Quote=引用 2 楼 zara 的回复:]
如果支持 pop cs 的话,就要要求目标地址的 ip 和 pop cs 指令的下一地址 ip 一致了,能满足这样要求的跳转,实在是太微乎其微了,所以支持这样的指令没有什么价值。
[/Quote]
为什么一定要一致呢,存储到寄存器里都是二进制数据,对其没有区别呀,这就是不理解的地方
zara
2012-02-03
打赏
举报
回复
如果支持 pop cs 的话,就要要求目标地址的 ip 和 pop cs 指令的下一地址 ip 一致了,能满足这样要求的跳转,实在是太微乎其微了,所以支持这样的指令没有什么价值。
Linux之
push
/
pop
的用法讲解
堆栈是存储器中专用的缓冲区,用于暂存寄存器数据或地址指针,
push
/
pop
就用于堆栈的操作,这两个指令一般用在: 1、子程序调用,为了保护现场,把所要用的寄存器中的内容先暂时保存起来,在子程序调用结束之前,按照先进后出的原则,把数据恢复。 2、有时候,需要临时用一下某些寄存器,也可用一下,凭个人喜好; 这两个指令必须成对使用(特殊用途除外),你只要压入了那些东西,并且知道他们的顺序就行了...
push
/
pop
堆栈指令
2、有时候,需要临时用一下某些寄存器,也可用一下,凭个人喜好; 堆栈是一个先进后出的主存区域,位于堆栈段中,使用SS段寄存器记录器段地址。栈只有一个出口,即当前栈顶。栈顶是地址较小的一端(低端),它用堆栈指针寄存器SP指定。堆栈的两种基本操作,对应两条基本指令: 进栈指令先使堆栈指令sp减2,然后把一个字操作数存入堆栈顶部。堆栈操作的对象只能是字操作数,进栈时底字节存放于低地址,高字节存放于高
(四)《汇编语言(王爽)》 | 检测点 3.1、3.2
《汇编语言(王爽)》 | 检测点 3.1、3.2
汇编中的
CS
和IP
CS
和IP 是8086中两个最关键的寄存器,他们指示了cpu当前要读取指令的地方。
CS
为代码段寄存器,IP为指令指针寄存器 在8086pc机中,任意时刻,设
CS
中的内容为M,IP中的内容为N,8086CPU将从内存M*16+N单元开始,读取下一条指令 8086cpu工作的过程可以描述如下: 1:从
CS
:IP指向的内存单元读取指令,读取的指令进入指令缓冲器 2:IP=IP
汇编语言
21,500
社区成员
41,617
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章