Direktíva ORG

org

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
		...
Hlavná stránka
Copyrights Peter Plesník 21.9.2005 0:34:29 All rights reserved