|
发表于 2011-8-5 17:21:34
|
显示全部楼层
“按照16位段*16最大的地址应该是fffff=1048560,哪如果使用ffff0(段)+ffff(偏移)=1114095,很明显1114095>1048560,哪怎么解释5个16进制位无法定位的哪些地址呢?”
按我的理解对拥有20根地址线(即20位)的8086,段地址×16+偏移地址这只是提供了一种可行的寻址方式,以适应8086单次只能处理16位的现状。
A、20位地址线可表示最小地址为0,最大地址为fffffh。
B、而对于“段地址×16+偏移地址”这个数学表达式而言,其可以表达的最大数为(fffffh+ffffh)
需要注意的是上述A和B的区别,B仅为A采用的寻址方式,对于8086而言,当段地址为ffffh时候,其偏移地址只能为0000~000fh,否则将超出其地址线表示范围。
比如若偏移地址为0010h,则按B,ffff0h+10h=100000h,达到了6位(16进制),若用地址线则需要24根才能表示(当然,对于100000h这个实例,21根地址线也可以表示);超出了8086的寻址能力。
简单一些回答你的问题其实就是一句话。。(ffff0H+ffffh)这个地址是不会出现在8086中,当段地址为ffffh时候,偏移地址>0fh的寻址都是无效的。
|
|