当前位置: 代码迷 >> 汇编语言 >> 问下16位机寻址有关问题,多谢
  详细解决方案

问下16位机寻址有关问题,多谢

热度:250   发布时间:2016-05-02 04:36:53.0
问下16位机寻址问题,谢谢
看王爽汇编中讲16位cpu寻址最大范围为2^20=1M 那为什么在xp下的debug也是16位汇编器,可是其寻址可以寻到FFFF:FFFF呢 (按书上讲段FFFF左移1位为FFFF0+偏移FFFF=10FFEF这不是超过1M表示范围了吗), 而1M转成16进制是FFFFF(FFFFF寻址不是只能到FFFF:000F吗) 
就是说1M寻址范围只能是(0-FFFFF)再大就不能寻到,但在debug中却可以寻到FFFF:FFFF这是怎么回事
------解决方案--------------------
能看到有两个情况,一个是地址回绕,FFFF:FFFF=FFFF0+FFFF=10FFEF,留下 20 位即为 0FFEF=0000:FFEF 这里;另外就是dos 加载 himem.sys 后,开启 A20 时,FFFF 后的 64K 段就可用访问了,这个区间是叫 HMA 还是 UMA 来着,以前 dos 时代对这个都熟悉的,dos 些驱动和些程序都可以加载到这个区间,从而可以将传统的常规内存部分腾出来供普通程序使用。
------解决方案--------------------
我的理解是,能寻到FFFF:FFFF说的是内存地址
而20位寻址能力说的是段16位+偏移地址16。段左移4位+偏移地址的16位就是20位
  相关解决方案