| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 601 人关注过本帖
标题:____xyz call 指令问题
只看楼主 加入收藏
admin_xyz
Rank: 2
等 级:论坛游民
帖 子:195
专家分:77
注 册:2012-6-24
结帖率:97.3%
收藏
已结贴  问题点数:10 回复次数:7 
____xyz call 指令问题
程序代码:
assume cs:code, ss:stack

stack segment
    dw  0,0,0,0,0,0,0,0
stack ends

code segment
    start:
        mov     ax, 0       ;0,1,2
        call    far ptr s   ;3,4,5,6,7    前面共占7字节,可是call后栈中的IP却为8.为什么.?  

        ;call指令相当于push cs , push ip , jmp far ptr 标号.        
        ;也就是说会把当前cs,ip压入栈中,可为什么ip入栈后是8...      = =#怎么感觉这个问题这么弱智。。。

        inc     ax
    s    :
        pop     ax
        add     ax, ax
        pop     bx
        add     ax, bx

        mov     ax, 4c00h
        int     21h


code ends

end start

搜索更多相关主题的帖子: color 
2012-09-29 09:12
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:5 
压栈和ip值的改变有关系么 压栈改的是sp
2012-09-29 09:18
admin_xyz
Rank: 2
等 级:论坛游民
帖 子:195
专家分:77
注 册:2012-6-24
收藏
得分:0 

        call指令
        相当于push cs
        push ip ,
        jmp far ptr 标号.

 我只是奇怪为什么ip入栈是8

总有人比你努力,可怕的是比你牛的人比你还努力。
2012-09-29 09:33
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用admin_xyz在2012-9-29 09:33:16的发言:


        call指令
        相当于push cs
        push ip ,
        jmp far ptr 标号.

 我只是奇怪为什么ip入栈是8

压栈压的是下一条指令 所以这里call压的是inc那个对应的ip 也就是8
2012-09-29 09:47
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:5 
以下是引用zklhp在2012-9-29 09:47:48的发言:


压栈压的是下一条指令 所以这里call压的是inc那个对应的ip 也就是8

说到点子上了 对一条指令分两个动作 读取 + 执行。
比如说 mov ax, 0 读取后ip 要自动增加指向下一条指令, 但是mov ax, 0 的执行不会影响ip
的值 所以继续读取ip指向的指令。
但是 如果读取的是跳转指令 如jmp 等 那么在读取它后 ip仍然自动增加指向下一条指令 但是在jmp指令
的执行是会改变ip的 所以程序按jmp指令的要求把CS, IP入栈后再改变ip的值,也就是说此时入栈的ip是
jmp指令的下一条指令的ip  而不是跳转后的指令的ip.
不知道我这个理解有没错 。。。

梅尚程荀
马谭杨奚







                                                       
2012-09-29 11:38
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
一个东西 书上看了 只是看了 一用 还是会错 一见到 还是不会 没关系 多多来几次就好了 学习怕的是重复 祝楼主成功

顺便催一下结题的事
2012-09-29 11:50
admin_xyz
Rank: 2
等 级:论坛游民
帖 子:195
专家分:77
注 册:2012-6-24
收藏
得分:0 
回复 5楼 有容就大
谢谢了,差不多明白了。

总有人比你努力,可怕的是比你牛的人比你还努力。
2012-09-29 21:06
lxq6966892
Rank: 2
等 级:论坛游民
帖 子:16
专家分:15
注 册:2012-10-4
收藏
得分:0 
学习了
2012-10-24 13:08
快速回复:____xyz call 指令问题
数据加载中...
 
   



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

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