Re: can somebody help me with the problem with tasm models

From: Frank Kotler (fbkotler_at_comcast.net)
Date: 03/10/05


Date: Wed, 09 Mar 2005 23:22:18 -0500

Beth wrote:

...
> But, notoriously, Intel did something actually rather highly weird at this
> point...the natural and obvious idea would be to just treat the two 16-bit
> registers as if they were just the "high part" and "low part" of a 32-bit
> address...you know, "as if" the 16-bit registers were "put together" to be
> one longer 32-bit address...

... and this would have made building a system around this
chip economically infeasible. At the time, memory was too
expensive to waste 32k (on average) per segment. The 16-byte
granularity was required, not by the CPU, but in order to
build an affordable system using it.

...
> fundamental mistake that allowed it to be possible for Microsoft to gain
> the awful "monopoly" that they know have, by "stealing" the PC industry
> wholesale into their _PROPRIETARY_ "device driver" format...if the
> addressing mode of 16-bit and 32-bit had been made _COMPATIBLE_, this
> wouldn't have rendered the BIOS completely unuseable in protected mode that
> device drivers are _MANDATED_...

You seem to forget that data size is going to make it
impossible to run 16-bit (bios) code in 32-bit mode, even
without the addressing problems.

...
> > I am
> > particularly concerned with the data which is more than 64kb. Please
> > give me code example to explain so that it will be easier for me to
> > understand.

...
> What's important to remember, of course, is that, to access these big
> arrays, you'll have to manually alter the segment registers as well as the
> offset registers...the >64KB access has to be managed "manually" by your
> own code...

And there's the rub... This is a PITA to code (although
possible to do), and isn't going to be wonderful for
performance...

Seems to me that the presence of data segments >64k would be
a good argument for doing this in 32-bit code. I'm a
"dos-diehard", because often the segmented addressing
*isn't* much of a problem. When your data gets to be over
64k, I have to agree with Betov - ask yourself *why* you're
doing it this way...

Best,
Frank



Relevant Pages

  • Re: Finding an x86 segment in a BIOS
    ... Extracted the BIOS from my Thinkpad T43. ... Diassemble ones I'm interested in with IDA. ... I assume the 5006h is the segment. ... It will either jump within F000, ...
    (comp.lang.asm.x86)
  • Re: Finding an x86 segment in a BIOS
    ... Extracted the BIOS from my Thinkpad T43. ... compriese the contents of the BIOS (a BIOS is basically a string of modules). ... I assume the 5006h is the segment. ...
    (comp.lang.asm.x86)
  • Finding an x86 segment in a BIOS
    ... Extracted the BIOS from my Thinkpad T43. ... compriese the contents of the BIOS (a BIOS is basically a string of modules). ... it's been a long-time since I've studied real-mode x86 asm. ... I assume the 5006h is the segment. ...
    (comp.lang.asm.x86)
  • Re: Finding an x86 segment in a BIOS
    ... Extracted the BIOS from my Thinkpad T43. ... it's been a long-time since I've studied real-mode x86 asm. ... I assume the 5006h is the segment. ... It will either jump within F000, ...
    (comp.lang.asm.x86)
  • Re: Finding an x86 segment in a BIOS
    ... Extracted the BIOS from my Thinkpad T43. ... it's been a long-time since I've studied real-mode x86 asm. ... I assume the 5006h is the segment. ... It will either jump within F000, ...
    (comp.lang.asm.x86)