发布网友 发布时间:2022-04-25 19:43
共3个回答
热心网友 时间:2022-06-16 20:14
首先,没有你说的4位偏移地址的说法,具体来说是因为在8086中,寄存器都是16位,这样你就只能访问16位地址的空间,不过8086还有段寄存器,就是CS,DS等,他们也是16位,也许你会说,16位加16位岂不是可以访问32位的4G地址吗?不过很可惜,之前的内存都没有这么大,所以当时只用了1M。所以在计算方法上,用两个16位的寄存器来访问20位的地址,就采用了段地址+偏移地址的作法,即:段地址*16+偏移地址,这样,你就可以使用一个固定的段地址,随意的访问64K的段地址空间的所有存储空间了。热心网友 时间:2022-06-16 20:14
段地址乘以16,相当于左移4位,这样就有20位,加上4位偏移量就是实际地址热心网友 时间:2022-06-16 20:15
左移4位移位操作相当于做了乘法,得到的是20位的值;如果直接加上4位偏移量虽然是得到20位的值,但是高位至少有三个值是零,并不能扩展到有效地20位;