社区
汇编语言
帖子详情
为什么PUSH CS是合法的,但是POP CS是不合法的
OICQshenshi
2012-02-02 11:32:02
看教程到这里,理解不了,求解释下
...全文
3433
6
打赏
收藏
为什么PUSH CS是合法的,但是POP CS是不合法的
看教程到这里,理解不了,求解释下
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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 一致了,能满足这样要求的跳转,实在是太微乎其微了,所以支持这样的指令没有什么价值。
汇编
push
和
pop
指令
push
和
pop
是用来操作栈的2个指令。
push
寄存器:将一个寄存器中的数据入栈
pop
寄存器:出栈用一个寄存器接收数据 下面用一段汇编代码学习一下栈的操作,用masm编辑的(环境用的<<汇编语言>> 王爽的那套环境)。 assume
cs
:codesg ...
8086汇编
push
和
pop
指令注意点(
push
pop
只对字操作(不允许字节进栈))
1、**
push
pop
只对字操作(不允许字节进栈)**操作数长度为32位时进出栈为双字。 例如
push
dl是不正确的,应该是
push
dx 2、汇编语言中
PUSH
导致SP减2而不是加2。原因:栈在内存中实际存储结构是栈底在高地址,栈顶在低地址(x86中的栈是“满递减栈”,也就是sp指向的栈的内存单元中是满的,有内容的,而且
push
数据时,栈顶对应的地址是递减的) 3、8086
push
不可以...
push
,
pop
指令
push
,
pop
729-汇编
push
和
pop
指令
汇编
push
和
pop
指令
push
和
pop
是用来操作栈的2个指令。
push
寄存器:将一个寄存器中的数据入栈。
pop
寄存器:出栈用一个寄存器接收数据。 assume
cs
:codesg ;
cs
寄存器指向该程序的首地址 codesg segment mov ax,1000H ;将1000H送入寄存器ax,相当于ax=1000H mov ss,ax mov sp,0010H mov ax,001AH ;将ax,bx赋值 mov bx,0
8086汇编
push
pop
易错点总结
1、
push
pop
只对字操作(不允许字节进栈)操作数长度为32位时进出栈为双字。2、汇编语言中
PUSH
导致SP减2而不是加2。原因:栈在内存中实际存储结构是栈底在高地址,栈顶在低地址3、8086
push
不可以使用立即数寻址方式(其他版本允许)4、
pop
...
汇编语言
21,497
社区成员
41,618
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章