检测点3.1问题
本帖最后由 张国祥 于 2011-6-28 17:37 编辑第二题:
mov ax,6622 cs=2000 ip=0003 ax=6622
jmp 0ff0:0100 cs=0ff0 ip=0100 ax=6622
mov ax,2000 cs=0ff0 ip=0103 ax=2000
mov ds,ax cs=0ff0 ip=0105 ax=2000 ds=2000
mov ax cs=0ff0 ip=0108 ax=c389
mov ax, cs=0ff0 ip=010b ax=ea66其中jmp 0ff0:0100 执行后,cs、ip应该是像我写的那样吧?小甲鱼的答案写的是别的:
那么我的对不对呢?
0ff0:0100 的物理地址是10000H 而1000:0的物理地址也是10000H是一样的 再生缘 发表于 2011-6-26 17:24 static/image/common/back.gif
0ff0:0100 的物理地址是10000H 而1000:0的物理地址也是10000H是一样的
意思是说我的也对?
再生缘 发表于 2011-6-26 17:24 static/image/common/back.gif
0ff0:0100 的物理地址是10000H 而1000:0的物理地址也是10000H是一样的
我的方法对吗? 张国祥 发表于 2011-6-27 17:52 static/image/common/back.gif
我的方法对吗?
没错!!!!!!!!!!!
学习了啊~!~!我也是迷惑这里了。现在明白了 本帖最后由 king嗜血法师 于 2011-7-5 21:54 编辑
按值讲应该是0ff0:100,虽然地址是一样的。
我也没去试,去debug试试就知道了。
没去debug调试,跟着CS和IP的指向一步一步按顺序就下来了,这节没问题,下节开始,强烈顶起,小甲鱼的教程,哈哈,教程里逗乐我N次了,讲的太好拉:loveliness: :sweat:
jmp 0ff0, 0100
这个之后下面的代码是不会被执行的
会默认执行{bx + sl} * al
cs=2000 ip=3
cs=2000 ip=0ff0
cs=2000 ip=0ff2
cs=2000 ip=0ff4
cs=2000 ip=0ff6
cs=2000 ip=0ff8
这个才是正确答案!!!!!! 2.写出CPU执行每条指令后,CS、IP和相关寄存器中的值。
mov ax,6622h cs=2000h ip=0003h
jmp 0ff0:0100cs=0ff0ip=0100h
mov ax,2000h cs=1000h ip=0003h
mov ds,ax cs=1000h ip=0005h
mov ax,cs=1000h ip=0008h
mov ax,cs=1000h ip=000bh
3.再次体会:数据和程序有区别吗?如何确定内存中的信息那些事数据那些是程序?
数据存放在数据段寄存器
程序存放在代码段寄存器
页:
[1]