Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!clyde!cbosgd!gatech!gitpyr!kpk From: kpk@gitpyr.UUCP (Kevin P. Kleinfelter) Newsgroups: net.micro.pc Subject: Re: Segment Registers -- 8086/80286 Message-ID: <1851@gitpyr.UUCP> Date: Wed, 4-Jun-86 08:56:28 EDT Article-I.D.: gitpyr.1851 Posted: Wed Jun 4 08:56:28 1986 Date-Received: Sat, 7-Jun-86 02:21:13 EDT References: <165@sci.UUCP> <146@apr.UUCP> <494@ubvax.UUCP> Organization: Georgia Institute of Technology Lines: 22 Keywords: 286 segment registers In article <494@ubvax.UUCP>, skip@ubvax.UUCP writes: > In article <146@apr.UUCP> las@apr.UUCP (Larry Shurr) writes: > > ... > ... and if you ever plan on writing programs for the i80286, don't > "normalize" pointers. To paraphrase some Microsoft documentation: > > When a program loads a segment register on an 8086, it is > actually loading a displacement value. On the 80286, what > is loaded is actually a segment number indexing to an entry > in the master segment table. The actual displacement value > is loaded from that table. There is NO relation between > segment N and segment N+1 (ie N+1:0 != N:10h). > So how will one compare pointers? If you can't normalize them, two pointers could reference the same address, but not contain the same values. In a language such as Pascal, equality is a valid test on pointers. In a language such as Modula-2, pointer arithmetic is valid. How can items such as these be implemented without normalization of pointers? Confused, Kevin Kleinfelter (kpk@gitpyr.UUCP)