鱼C论坛

 找回密码
 立即注册
查看: 1691|回复: 6

小甲鱼第十课,不解的地方

[复制链接]
发表于 2014-1-9 15:10:48 | 显示全部楼层 |阅读模式

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

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

x
小甲鱼老师视频,第十课,这里也不懂。就是执行到JMP BX ,BX=0了,那么CS怎么会等于10000H??下面究竟怎么实现的? QQ截图20140109150915.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-1-9 16:30:39 | 显示全部楼层
首先段地址在ds中,ds=1000始终没有被修改。程序向下执行只在改变偏移地址。当遇到jmp指令将无条件跳转到指定内存单元。计算jmp指令执行后的物理地址=ds*16+bx(偏移地址),即ds左移一位ds=10000,加上偏移地址bx=0。物理地址=10000+0=10000
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-1-9 16:33:20 From FishC Mobile | 显示全部楼层
哦,看错了。说的是数据段,不过意思都是一样的,ds是cs而已
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-1-9 16:52:51 | 显示全部楼层
应该是jmp 1000:3这个影响了,本来初始值是2000H, jmp当中的1000已经将cs改成了1000。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-1-9 17:49:35 | 显示全部楼层
CS,IP不能通过MOV指令来改变他们的内容,不过可以通过非条件软件指令JMP来完成。

若想同时改变CS,IP的值,使用:JMP 段地址:偏地址,如:JMP E458:0A,执行后CS=E458,IP=OAH

若仅想改变IP,使用JMP 合法的寄存器,如JMP AX,执行后CS中的内容不变,IP 改变成AX中的值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-1-9 18:29:50 | 显示全部楼层
开始cs为2000h,所以执行mov ax,6622h,然后执行jmp 1000:3,cs:ip就被修改为1000:3,执行此处的代码,所以当运行到jmp bx,此时cs仍为1000h(注:jmp 段地址:偏移地址表示同时修改cs,ip,jmp 寄存器表示修改ip)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-1-9 18:31:08 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 19:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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