关于检测点2.2的问题
王爽老师那本汇编书,检测点2.2的第二题有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元。则SA应满足的条件是:最小为 1001H ,最大为 2000H 。 当段地址给定为 1001H 以下和 2000H 以上,CPU无论怎么变化偏移地址都无法寻到20000H单元。这个是答案:————————————————————————————物理地址=SA*16+EA 20000h=SA*16+EA SA=(20000h-EA)/16=2000h-EA/16 EA取最大值时,SA=2000h-ffffh/16=1001h,SA为最小值 EA取最小值时,SA=2000h-0h/16=2000h,SA为最大值——————————————————————————————但是我这样算的,物理地址=SA*16+EA20000h=SA*16+EA20000h-EA=SA*1620000h-ffffh=SA*16(EA最大) SA=1000.1h那就是1000h SA为最小值20000h-0h=SA*16(EA最小) SA=2000h SA为最大值
求指导!到底那个对?
1000.1不能舍去那个小数点啊,要进位变成1001 1000h*10h加上ffffh也只等于1ffffh,还不到20000h
段地址只有在这个范围 1001H>=SA<=2000H才能寻址到20000H单元 福禄娃娃 发表于 2013-10-9 23:55 static/image/common/back.gif
1000h*10h加上ffffh也只等于1ffffh,还不到20000h
段地址只有在这个范围 1001H>=SA
我如果理解没错的话,应该是1000h*16吧!:lol: Maksim 发表于 2013-10-10 12:24 static/image/common/back.gif
我如果理解没错的话,应该是1000h*16吧!
都一个意思嘛,16是十进制的,转成16进制就是10H。
十六进制也有完整的加减乘除 物理地址=段地址*16+偏移地址
20000H=SA*16+偏移地址
由于16为十进制,转换为十六进制=10H
最小偏移地址=0H
最大偏移地址=FFFFH
最小SA=(20000H-FFFFH)/10H=20000H/10H-FFFFH/10H=2000H-FFFH=1001H
最大SA=(20000H-0H)/10H=20000H/10H-0H/10H=2000H-0H=2000H
什么小数点进位都是太抽象了。
当SA<1001或 SA>2000时 CPU无法寻到20000H a280153458 发表于 2015-1-24 23:10
物理地址=段地址*16+偏移地址
20000H=SA*16+偏移地址
由于16为十进制,转换为十六进制=10H
标记下
页:
[1]