Hirdetés

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

  • Szirty

    őstag

    válasz horvathcsaba #249 üzenetére

    Helló Csaba!

    Én ezt szeretném csinálni:
    T DB1.DBD [MD30]
    De nem engedi, mondván "Fully qualified access is not permitted with DI or indirect addresses."
    Ezt viszont engedi:
    T DBD [MD30]
    Csak innen honnan tudom, illetve hogy tudom meghatározni melyik DB.

    Így csináld:
    OPN DB1
    T DBD [MD30]

    Az OPN DB1 "megnyitja" a DB-t. Innentől kezdve a DB számára már nem kell hivatkoznod.
    De két dologra nagyon kell figyelni:
    A DB-t az ún DB regiszterrel címzi. Az OP gyakorlatilag a DB regiszterbe teszi bele a megnyitott DB számát.
    Fully qualifyed access esetén, amikor kiírod a teljes címet, a DB regisztert akkor is használja. Ha tehát ezt csinálod hogy:

    OPN DB1
    L DBW4
    ...
    L DB6.DBW2
    ...
    L DBW8

    Akkor az első load a DB1-ből, a második természetesen a DB6-ból, de a harmadik nem a DB1-ből, ahnem a DB6-ból fog betölteni egy értéket (ha sikerül neki).

    A másik amire vigyázni kell az az indirekt címzésmód:
    T DBD [MD30]
    Itt MD30 címzi ugye a DB-t, de nagyon fontos, hogy az MD30-ban egy pointer (P#x.y) van, és nem egy sima index!!!
    A helpben érdemes utánanézni a "Using the Parameter Type POINTER" című résznél.
    A pointer alsó 3 bitje pedig bit cím. Hoyg úgy működjön ahogy szeretnéd, így csináld:

    OPN DB1
    L idebetöltöd az indexet
    SLD 3
    T MD30
    T DBD [MD30]

    Írtam erről az oldalamon, ha gondolod nézd meg:
    [link]
    Jóval kezded te is, pont az indirekt címzéssel :)

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