Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!ucbvax!bloom-beacon!mit-eddie!mit-amt!mit-atrp!pshen From: pshen@mit-atrp.UUCP (Paul Shen) Newsgroups: comp.os.minix Subject: Re: PC Minix/64KB limit Message-ID: <3570@mit-amt> Date: 17 Feb 89 04:46:16 GMT References: <415@lzaz.ATT.COM> <2485@sun.soe.clarkson.edu> <417@lzaz.ATT.COM> Sender: holtzman@mit-amt Reply-To: pshen@atrp.media.mit.edu (Paul Shen) Organization: MIT Media Lab Lines: 25 cc: pshen In article <417@lzaz.ATT.COM> hcj@lzaz.ATT.COM (HC Johnson) writes: >In article <2485@sun.soe.clarkson.edu>, jk0@sun.soe!clutx.clarkson.edu (Jason Coughlin,221 Rey,,) writes: >> I'm no engineer, but can't the PC address 1 meg? Would it be > >Ok, for the non engineers, heres the low down. > >1. the 8088, 8086,80186, 80286 totally lack the ability to address beyond 64KB. > There simply is no such machine operation. Microsoft added the ability > to there C compiler output by adding 'far' pointers that basically pull > 2 16 bit addresses from memory (segment:offset) and access one byte/word > with the effective address. Slow, Clumsey, but the only way to do it. > This is not an invention of Microsoft. The memory address of 80X86 chip is pointed by a pair of CPU registers, namely segment register and offset register. It is true that it takes some clock cycles to change the segment address, but the whole operation can be finished within three instructions, it is not clumsey. If you are familiar with assembly language, the operation is very simple. By the way, the minimum addressable memory of 8086 is 640KB, not 64KB. 80286 is much larger, due to the wider physical address bus. +---------------------------------------------------------------------------+ | Email: pshen@atrp.media.mit.edu | | | Telephone: (617) 253-0370 | Paul Shen | | Address: MIT, E15-384C, Cambridge, Ma 02139 | | +---------------------------------------------------------------------------+