| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1051 人关注过本帖
标题:王爽 第十章 的 ret 指令 谁能详细给我说说啊
只看楼主 加入收藏
hankbase008
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2010-3-26
结帖率:20%
收藏
已结贴  问题点数:10 回复次数:2 
王爽 第十章 的 ret 指令 谁能详细给我说说啊
cpu执行ret指令时,进行下面两步操作:

(1)(ip)=((ss)*16+sp)

(2)(sp)=(sp)+2

用汇编语言描述即:

pop ip

例子
assume cs:code
stack segment
 db 16 dup(0)
stack ends

code segment
       mov ax,4c00h
       int 21 21h
start mov ax,stack
      mov ss,ax
      mov sp,16
      mov ax,0
      push ax
      mov bx,0
      ret
code ends

end start

为什么  ip 等于 0  哪位 大虾 给详解 ?
搜索更多相关主题的帖子: 王爽 ret 指令 
2010-05-13 07:11
ONEPROBLEM
Rank: 6Rank: 6
来 自:广西 南宁
等 级:贵宾
威 望:21
帖 子:1569
专家分:349
注 册:2008-7-11
收藏
得分:10 
因为push ax是压栈操作,ax=0,所以此时栈顶是0;
而应该有一个相应的出栈操作(为了栈的平衡),即pop xx之类的.
但没有pop,就执行了ret操作,ret相当于pop ip;此时栈顶是0,pop ip后,ip=0
我是这样理解的,不知道对不对?
2010-05-13 07:48
hankbase008
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2010-3-26
收藏
得分:0 
回复 2楼 ONEPROBLEM
你的 意思 是不是 先把 数据 压入 其中  然后 ip 取其中的值  然后 再把 数据 弹出
2010-05-13 08:33
快速回复:王爽 第十章 的 ret 指令 谁能详细给我说说啊
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024464 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved