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

  • Szirty

    őstag

    válasz DP_Joci #523 üzenetére

    Hali DP_Joci!

    L P##DB_pointer_in_any
    LAR1

    Betölti az akku1-be a #DB_pointer_in_any változó címét, majd az akku1-et az 1-es address regiszterbe tolja.

    L B#16#10
    T LB [AR1,P#0.0]

    10 hexa értéket tölt akku1-be, majd azt elrakja az AR1 address regiszter által címzett címre 0 byte és 0 bit eltolással (P#0.0 az eltolás).
    Lényegében tehát ezzel a #DB_pointer_in_any változó nulladik byte-jába 10 hexa értéket rak.
    Ha most megnézed az ANY felépítését:

    Akkor látható, hogy az a byte mindig 10h S7 esetén. Nem véletlen tett ide 10h-t :)

    L B#16#19
    T LB [AR1,P#1.0]

    Az ANY 1-es byte-jába 19h-t tölt.
    Ez a byte mondja meg az adattípust. Ez egy nagyon érdekes sor, mert 19h adattípus nem létezik amennyire tudom :)

    L W#16#1
    T LW [AR1,P#2.0]

    A 2-es byte az ANY típusnál az métlési faktor. Ennek akkor van jelentősége, amikor nem egy adatterületre kell hivatkozni (pl. blokk másolás). Ez mindig az adattípusban megadott típus darabszámára vonatkozik. vagyis ha ott Byte típus van meghatározva, akkor itt 10 10 byte-ot jelent, ha ott word van meghatározva, akkor a 10-es érték az ismétlési faktorban már 20 byte-ot jelent, stb.

    L W#16#0
    T LW [AR1,P#4.0]

    Itt kell megadni a DB számát, ami nem lehet nulla (mivel 0-ás DB nincs).
    Ugyanakkor amennyiben az adatterület definíciója nem DB-t határoz meg (ANY byte6) akkor nulla kell hogy legyen. (bár ilyenkor ezt nyilván nem veszi figyelembe a rendszer).

    L #DB_num_in
    T LD [AR1,P#6.0]

    A 6. byte elvileg az adatterület típusát adja meg. Az, hogy ide egy #DB_num_in nevű változót tölt arra utal, hogy van itt egy kis csúszás. Szerintem #DB_num_in-t a 4-es byte-ba kéne tölteni.

    "Ezzel hibát nem kapok, de eredményt sem, lehet hogy az SCF84-et értem félre."

    Attól függ mit szeretnél...

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