柏克莱 发表于 2012-9-25 10:16:23

检测点3.1的第二题,没搞懂,跳来跳去的没想明白

本帖最后由 柏克莱 于 2012-9-25 10:37 编辑

没搞懂当运行到mov ds,axcs=0ff0H,ip=105H,ds=2000H,ax=2000H,他的下一步运行怎么会到mov ax,,还有前面的jmp0ff0:0100怎么会跳到执行mov ax,2000H求解

柏克莱 发表于 2012-9-25 10:40:22

发不了图片,我没有word题目,我把题目压缩上传了

□为 发表于 2012-9-25 11:08:59

:'(卧槽。。。。

ACC 发表于 2012-9-25 12:18:17

执行 jmp 0ff0:0100后
cs==0ff0
ip==0100
指向的物理地址:((0ff0h*16)+0100h)=10000h
接下来的指令就是
mov ax,2000h

狼兄 发表于 2012-9-25 13:01:51

其实楼上解释很正确的,它发生了无条件跳转了!!!
jmp 0ff0h:0100 就是使cs=0ff0h,IP=0100
所以就跳到10000h处执行了,因为cs:IP就是指向这里
朋友你可能对段地址和偏移地址理解和运算不够!!多看一下前的章节,绝对要做完前面的练习才能往下的
至于你说得怎么会执行 mov ax,
因为你的CS:IP为cs=0ff0H,ip=105H,所以它指向内存的物理地地址:10005h
而在图中显示的是:这个地方的指令正是mov ax,
如果还不怎么明白就可以去参考一下王爽课后练习答案,这个答案鱼C应该有,你找找!!!

柏克莱 发表于 2012-9-25 14:46:58

ACC 发表于 2012-9-25 12:18 static/image/common/back.gif
执行 jmp 0ff0:0100后
cs==0ff0
ip==0100


现在懂了,我把cs,ds搞混了,谢谢

柏克莱 发表于 2012-9-25 14:48:35

狼兄 发表于 2012-9-25 13:01 static/image/common/back.gif
其实楼上解释很正确的,它发生了无条件跳转了!!!
jmp 0ff0h:0100 就是使cs=0ff0h,IP=0100
所以就跳到1 ...

懂了,混淆概念了,你们没指点前,总没想明白,现在都搞清楚了,谢谢

Black_F.c 发表于 2012-10-7 23:02:09

{:5_107:}已经解决啦..
页: [1]
查看完整版本: 检测点3.1的第二题,没搞懂,跳来跳去的没想明白