鱼C论坛

 找回密码
 立即注册
查看: 2154|回复: 7

汇编10.5的问题

[复制链接]
发表于 2013-4-2 02:44:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 属専色灰 于 2013-4-3 20:50 编辑
assume cs:code

stack segment   //定义了栈段
   dw 8 dup (0)
stack ends

code segment
start:   mov ax,stack
         mov ss,ax   //开始挂钩
                 mov sp,16
                 mov ds,ax  //把定义的栈当做数据来使用
                 mov ax,0
                 call word ptr ds:[0eh] //这里有问题?想不通,ip不是应该等于0么,因为我们的栈段已经把里面的数据全部写为                                          //零,那么为什么还会是会跳到一个莫名其妙的地址上去,没睡的鱼油们帮忙开导一下!
                 inc ax
                 inc ax
                 inc ax
                 
                 mov ax,4c00h
                 int 21h
                 
code ends

end start

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-2 08:30:55 | 显示全部楼层
call 这个指令 是先要 push cs ip 的 所以call到的应该是 CS的地址   正确的跳转位子应该是  当前的DS : CS
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-2 08:45:05 | 显示全部楼层
我说反了 纠正一下 先PUSH IP      cs
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-2 14:38:39 | 显示全部楼层
首先要明确,在执行call指令时,ip指向的是下一条指令的地址。也就是inc ax指令的地址。怎么会是0呢!而执行call指令时有两个操作,第一将ip入栈,第二是跳到word ptr ds:[0eh]对应的地址进行执行。执行完毕后返回主流程继续执行。至于一些细节lz画图自己琢磨吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2013-4-2 23:53:34 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2013-4-2 23:56:17 | 显示全部楼层
本帖最后由 属専色灰 于 2013-4-3 00:04 编辑
1971827035 发表于 2013-4-2 14:38
首先要明确,在执行call指令时,ip指向的是下一条指令的地址。也就是inc ax指令的地址。怎么会是0呢!而执行 ...

我懂了,oeh是ip的值,所以,他跳的应该是下一句代码,对吧!
inc ax

是我把栈和数据存放没搞清楚
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-3 08:46:34 | 显示全部楼层
属専色灰 发表于 2013-4-2 23:56
我懂了,oeh是ip的值,所以,他跳的应该是下一句代码,对吧!
inc ax

这个不用猜测。在执行call指令时,ip指向下一条指令(inc ax)的地址,所以将改地址入栈。入栈前sp=10h,入栈后sp=sp-2,也就是0eh。而此时程序将跳转到ds:0eh处执行,因为ds/ss同段,所以程序跳转到栈地址0eh处执行(ip指向0eh处),而这个地址的内容正好是下一条指令的地址。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2013-4-3 20:50:00 | 显示全部楼层
1971827035 发表于 2013-4-3 08:46
这个不用猜测。在执行call指令时,ip指向下一条指令(inc ax)的地址,所以将改地址入栈。入栈前sp=10h, ...

恩,问题搞清楚了,鱼油们都是好人来着!谢谢!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-7 20:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表