Chm0ack 发表于 2011-9-29 18:07:07

监测点2.2




第二题
为什么是1001H我真的不明白,求详细解释。

关键是感觉 发表于 2011-9-29 19:13:22

很简单!
我们知道偏移地址最小为0H,最大为FFF0H。
20000-FFF0(8086最大偏移地址)=10010(为什么10010H呢?因为乘以16H)
为什么偏移地址FFF0,因为段的起始地址要为16的倍数!
小弟不才,希望能给楼主(治好疑难杂症)!

关键是感觉 发表于 2011-9-29 19:17:51

拷贝高手的解释!
第2小题:
先套用公式,段地址*16+偏移地址=物理地址
那么我们已经知道了物理地址为20000H

SA = 20000 - 0000H/ 16 = 2000H ;最大值

SA = 20000 - FFFFH/ 16= 10001H :最小值
那么这里就出问题了,10001不能被16整除,也就是段地址不能满足*16+偏移地址= 20000H
所以偏移地址就要发生变化来满足段地址*16+偏移地址=20000H
20000H - FFFF = 10001H
20000H - FFFE = 10002H
20000H - FFFD = 10003H
20000H - FFFC = 10004H
20000H - FFFB = 10005H
20000H - FFFA = 10006H
直到.......
20000H - FFF0 = 10010H
这时10010H满足16的倍数了
物理地址减去最大偏移地址除以16等于最小段地址
20000H - FFF0H/ 16 = 1001H;最小值
所以最小值是1001H,最大值是2000H

tsembrace 发表于 2011-9-29 20:50:08

http://bbs.fishc.com/thread-2264-1-1.html

s0512 发表于 2011-9-30 12:29:25

我和LZ一样,谢谢楼上。

killkk 发表于 2011-9-30 12:40:29

{:5_92:} 不错、 不错、、分析得很到位。。

Chm0ack 发表于 2011-9-30 14:41:19

谢谢 各位的解答!!我明白那!!!   呵呵!在此膜拜一下!谢谢 你们。。:lol:lol:lol

yang7516 发表于 2011-10-2 08:32:51

是的,16位寄存器,其地址偏移范围为:0-FFFF间,
所以用20000减后得到20000-10001H
而其段地址为16的倍数,即最后一位必须为0
所以在这个范围内的最小的数为10010H
所以其最小段地址为1001H
页: [1]
查看完整版本: 监测点2.2