鱼C论坛

 找回密码
 立即注册
查看: 2752|回复: 12

关于CS,IP 和jmp

[复制链接]
发表于 2014-1-23 16:32:34 | 显示全部楼层 |阅读模式

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

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

x
小甲鱼老师的教程第二章第十一小节修改cs和ip中的数据这里,有个例题
QQ截图20140123163017.jpg
当指令执行到jmp bx 时他是怎么跳到cs=1000h ip=0000h的位置的呢?能给详细解说一下吗?其他的都能明白,就这个想不通也看不懂。
谢谢各位大神们{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-1-23 16:33:56 | 显示全部楼层
最开始的时候cs=20000h ip=0000h
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-1-23 17:08:56 | 显示全部楼层

mov ax,0000
mov bx,ax
这样bx不就是0000了
jmp bx 就是jmp 1000:0000

至于cs为毛是1000看了下 一开始cs = 2000(你在二楼多打了个0) iP = 0 所以执行的是 20000h所在的代码
也就是 mov ax,6622h
然后当执行到jmp 1000:3 的时候 cs就变成了1000 ip 变成了3
就去执行mov ax,0000了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-23 17:25:24 | 显示全部楼层

这里我知道,我是不懂 jmp bx之后为什么跳到cs=1000h,ip=0000h这里,为什么不是跳到这之后的其他步骤上呢?
另一个也是关于 jmp的
监测点2.3中的题,说下面三条指令cpu几次修改ip?都在什么时候
mov ax,bx
sub ax,ax
jmp ax
前三步修改都知道,第四步jmp ax之后跳到第一行指令,运行完就结束了。我有两点不懂,
第一,jmp ax这为什么会跳到第一行指令而不是第二行呢?
第二 跳过去之后为什么只执行了一步就不继续执行了呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-1-23 18:01:16 | 显示全部楼层
yu457001 发表于 2014-1-23 17:25
这里我知道,我是不懂 jmp bx之后为什么跳到cs=1000h,ip=0000h这里,为什么不是跳到这之后的其他步骤上呢 ...

cs = 1000 啊 jmp 0 不是跳到1000:0 跳去哪??
第二个问题 题目你没说清楚撒~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-23 19:09:50 | 显示全部楼层
牡丹花下死做鬼 发表于 2014-1-23 18:01
cs = 1000 啊 jmp 0 不是跳到1000:0 跳去哪??
第二个问题 题目你没说清楚撒~~

监测点2.3中的题,说下面三条指令cpu几次修改ip?都在什么时候
mov ax,bx
sub ax,ax
jmp ax

这个就是完整的题目了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-23 23:18:40 From FishC Mobile | 显示全部楼层
牡丹花下死做鬼 发表于 2014-1-23 17:08
mov ax,0000
mov bx,ax
这样bx不就是0000了

突然想起来,为什么第一个jmp跳转会成一个死循环,而第二个jmp跳过去就执行一句就停止了呢,关于这个跳转后的结果是书上说的,我看不出来到底哪一句是继续哪一句是停止
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-24 10:54:37 | 显示全部楼层
牡丹花下死做鬼 发表于 2014-1-23 18:01
cs = 1000 啊 jmp 0 不是跳到1000:0 跳去哪??
第二个问题 题目你没说清楚撒~~

谢谢你的解答,又仔细看了一遍,明白了jmp为什么去执行ip0000了。但是为什么一个jmp跳过去执行了全部的指令成为一个死循环,而另一个跳过去执行了一步就停止了呢?能帮我说说这里吗?{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-1-24 11:25:57 | 显示全部楼层
yu457001 发表于 2014-1-24 10:54
谢谢你的解答,又仔细看了一遍,明白了jmp为什么去执行ip0000了。但是为什么一个jmp跳过去执行了全部的指 ...

这个的话跳转到1000:0之后就会执行
mov ax,0123h
mov ax,0000
mov bx,ax
然后又是
jmp bx
又跳回去了所以是死循环 你说的另一个是什么???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-24 13:12:42 | 显示全部楼层
牡丹花下死做鬼 发表于 2014-1-24 11:25
这个的话跳转到1000:0之后就会执行
mov ax,0123h
mov ax,0000

另一个就是这个,为什么这个没有一直循环下去,而是跳过去执行完那一句就停止了呢
监测点2.3中的题,说下面三条指令cpu几次修改ip?都在什么时候
mov ax,bx
sub ax,ax
jmp ax

这个就是完整的题目了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-1-24 13:33:02 | 显示全部楼层
yu457001 发表于 2014-1-24 13:12
另一个就是这个,为什么这个没有一直循环下去,而是跳过去执行完那一句就停止了呢
监测点2.3中的题,说下 ...

哦  
sub ax,ax
这时候就是把ax变成0是吧
然后是跳到cs:0是吧
你自己打开debug 输入 u 0看看
第一行代码是不是 int 20
就是中断
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-24 13:46:51 | 显示全部楼层
牡丹花下死做鬼 发表于 2014-1-24 13:33
哦  
sub ax,ax
这时候就是把ax变成0是吧

:mad:谢谢你哈,刚才搜了一下sub是无借位减法指令,昨天忘记搜了。呵呵,但是还有个问题我还没解决,今天把它解决掉。我还不知道那个汇编软件怎么样法。在汇编软件中编写的指令,会不会直接对我的电脑起作用呢?还是说汇编软件其实是个模拟环境,或者是个和真实电脑分开的容器呢?呵呵,白痴的问题,但是真的还是不明白。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-1-24 13:48:59 | 显示全部楼层
yu457001 发表于 2014-1-24 13:46
谢谢你哈,刚才搜了一下sub是无借位减法指令,昨天忘记搜了。呵呵,但是还有个问题我还没解决,今天 ...

debug是虚拟的 所以没关系的 怎么样都没事的 单cmd 或 你用masn编译的就不是虚拟的了啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-2-1 23:41:47 | 显示全部楼层
我只是路过打酱油的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-17 21:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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