Keresés

Új hozzászólás Aktív témák

  • Szirty

    őstag

    válasz Szakbarbár #3960 üzenetére

    Helló Szakbarbár!

    Hála a pontatlan kérdésednek, fölöslegesen írtam egy választ.
    Most csak egy másik fórumon "elhangzottakat" tudom idézni, ami az indirekt címzésről szól:

    lukacsp írta:
    Tegyük fel, hogy a D100 a pointer. A D100 tartalma #0150.
    Indirekt címzéshez csak annyit kell tenni, hogy mondjuk azt mondom:
    MOV #0001 *D100
    Akkor ez az utasítás azt fogja csinálni, hogy a #0001 konstanst beteszi a D150 memória szóba.

    Tehát végső soron a * előtét jelenti azt, hogy abban a D-ben egy pointer van.

    ********************************************

    Ezt fűztem hozzá:
    Nos lukacsp fórumtárs megírta a lényeget, de annyival kiegészíteném, hogy:

    - Az említett indirekt címzést csak DM memóriaterületre lehet alkalmazni, tehát nem írhatsz olyat, hogy *6 vagy *T20.

    - A * prefixumú pointer azt feltételezi, hogy a megadott számú DM memória rekeszben lévő cím BCD formátumú, tehát a címet BCD számkként kell kezelned. Avagy #-el kell megadnod a konstans értékeket, cím számításához BCD műveleteket kell használnod! Ha ezt nem veszed figyelembe, akkor hibát fogsz kapni, vagy elcímzed magad.

    - Hasonlóan csak DM területre alkalmazható indirekt címzési mód a @ prefixumú pointer, ami a fentihez hasonló, de a hivatkozott DM tartalmát bináris számként kezeli, így a konstansok megadásánál és a cím számításoknál ennek megfelelő utasításokkal kell dolgoznod.

    - Az indirekt címzés harmadik módja az index regiszteres címzés, ahol 15 címző regiszter van fenntartva (IR00-IR15) a pointerek számára. Ezekkel való címzéshez külön címzésmód tartozik és külön utasítások szolgálnak az index regiszterek kezelésére. Operation manualban külön fejezet foglalkozik a használatával (191. oldal). Ezzel nem csak DM területek címezhetők.

Új hozzászólás Aktív témák