Wann FAR wann nicht FAR bei ASM Porgramm ?

  • Hallo, guten tag.


    Ich habe 2 Programme für den TASM.


    Wann wird FAR verwendet und wann nicht ?


    Danke.



  • Near Pointer enthalten nur den Offset einer Speicheradresse (Segment wird implizit aus CS oder DS genommen). Far Pointer enthalten Segment und Offset in der Form Segment:Offset.


    Beide Werte sind 16 bit, so dass ein Near Pointer 65536 Bytes adressieren kann. Mit Segment dazu kann man 10^20=1 Mebibyte (aka Megabyte) adressieren. Die lineare Adresse kann man errechnen aus 16*Segment+Offset. Das ist in x86 Realmode aber eher uninteressant.


    Das ganze hat historische Gründe. Zum einen ist die 8086 Architektur versehen mit alten Komponenten (DMA Controller vom 8080, der nur 16 bittig adressieren kann), zum anderen wollte man mehr Speicher adressieren, aber nicht von 16 bit Registern weg. Der Motorola 68000 war da zum Beispiel etwas konsequenter.


    Wenn du Code hast was in einem anderen Segment liegt, müssen Pointer darauf zwangsläufig Far sein. Gleiches gilt für Daten, die nicht im aktuellen Segment liegen.

    root42 auf YouTube


    80486DX@33 MHz, 16 MiB RAM, Tseng ET4000 1 MiB, GUSar Lite & TNDY & SnarkBarker, PC MIDI Card + SC55 + MT-32, XT CF Lite, OSSC 1.6

    Einmal editiert, zuletzt von root_42 ()

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!