kboy 发表于 2011-4-20 00:32:39

检测点3.1:为什么u 1000:0 和 u 0ff0:0100的结果是一样的

本帖最后由 kboy 于 2011-4-20 09:10 编辑

在做检测点3.1时
其中汇编指令序列为:
20000Hmov ax, 6622h
20003Hjmp 0ff0:0100

10000Hmov ax,2000h
10003Hmov ds,ax
10005Hmov ax,
10008Hmov ax,

这道题是说
我不理解为什么jmp 0ff0:0100就能跳转到10000H的位置去执行mov ax,2000h?

我们知道jmp 0ff0:0100会将CS=0ff0, IP=0100
而10000H所对应的CS=1000, IP=0

为了证明CS=1000,IP=0和CS=0ff0,IP=0100是对应相同的指令,我用debug做了实验:
实验结果如下:


请问这是为什么呢?
为什么 u 1000:0 和 u 0ff0:0100的结果是一样的

谢谢

小甲鱼 发表于 2011-4-20 00:37:32

1000:0 的物理地址 == 10000
0ff0:0100 的物理地址 == ff00 + 100 == 10000

所以是一样的~

kboy 发表于 2011-4-20 09:10:18

回复 2# 小甲鱼


    原来是这样,这回真正理解了您上课说的同一个物理地址可以有多种不同的【段:偏移】组合形式,谢谢!

XsRecluse 发表于 2011-4-28 13:56:01

晕了,我也在着里纠结着.....看来我光想着10000了把物理地址=段地址*16+偏移地址了...:dizzy::dizzy::dizzy:

c_l_龙龙 发表于 2012-12-12 16:34:21

这个对于刚开始学习汇编的来说有时确实想不到那么多,对视频和书本上的要点理解还是不够,就是需要多做做题来真正理解其中含义。
页: [1]
查看完整版本: 检测点3.1:为什么u 1000:0 和 u 0ff0:0100的结果是一样的