Funkcia | Nastavuje pozíciu počítadla v aktuálnom pamäťovom segmente |
---|---|
Syntax | org výraz |
Popis | Slúži na nastavenie pozície počítadla v aktuálnom pamäťovom segmente.
Prekladač si udržuje pre každý pamäťový segment nezávislé počítadlo ktoré mu slúži
ako ukazatel pri vkladaní údajov do tohto pamäťového segmentu.
Na začiatku prekladu sa všetky počítadlá nastavia na hodnotu 0.
To znamená že inštrukcie sa budú ukladať do pamäte programu od adresy 0.
Dátové premenné sa budú vytvárať v pamäti dát tiež od adresy 0. Ak potrebujeme
z nejakého dôvodu zmeniť hodnotu niektorého z počítadiel môžeme to urobiť
direktívou ORG. Ako parameter očakáva výraz ktorý sa vyhodnotí a výsledkom
musí byť celočíselná hodnota v rozsahu od 0 po maximum pre daný pamätový segmet.
Pre pamäť programu je to od 0 po 65535, rovnako aj pre externú pamät dát.
Pre vnútornú pamäť dát to je od 0 po 255 a to iste platí aj pre pamäť bitových
prememnných. Pri prekročení povoleného rozsahu prekladač oznámi chybové hlásenie
ERROR #5: Number too large Ak nezadáme žiadny výraz prekladač oznami chybu:ERROR #10: Illegal or missing expression Počítadlo sa tiež nemôže nastavovať na hodnotu menšiu ako jeho aktuálna hodnota. Znamenalo by to totiž, že sa chceme v danom segmente vrátiť späť a mohlo by dôjsť k prepísaniu dát v segmente. Preto hodnotu počítadla môžeme posúvať iba smerom k vyžším hodnotám. Pri pokuse posunúť hodnotu počítadla nazad prekladač oznámi nasledovnú chybu:ERROR #40: Program synchronization error |
Príklad | xseg ;zmena pametoveho segmentu na externu pamet dat org 1000h ;prve 4KiBy su preskocene CRC ds 2 ;premenna CRC ma adresu 1000H CCC ds 1 ;premenna CCC ma adesu 1002H dseg ;zmena pametoveho segmentu na vnutornu pamet dat org 32 tick ds 1 ;premenna tick ma adresu 32 tick2 ds 1 ;premenna tick2 ma adresu 33 cseg ;zmena pametoveho segmentu na pamet programu org 0 ;zvytocne - pocitadlo aj tak zacina od hodnoty 0 jmp start org 0BH ;nastavi pocitadlo na adresu 0BH timer0 : inc tick ;tato instrukcia bude ulozena na adresu 0BH ;a nie na adresu 3 reti start: mov tick,#0 ;nuluj premnennu tick ... |