extrn p:proc  					; zadefinovanie procedury ,ktora sa nachadza mimo tento subor
public text   					; premenna text je definovana v tomto program


DATA    SEGMENT word public 'data'              ;zdielanie rovnakych segmentov pri linkovani

text   	DB      'A$'       			;definicia retazca

DATA    ENDS                    		;koniec datoveho segmentu

CODE    SEGMENT  byte public 'code' 		;zdielanie rovnakych segmentov pri linkovani
        ASSUME  CS:CODE, DS:DATA        	;priradenie registrom segmenty s ktorymi bude korespondovat

x	EQU	1				;vytvorenie symbolu pomocou EQU(konstanty  x )
y	EQU	1				;vytvorenie symbolu pomocou EQU(konstanty  y )

	
gotoxy 	MACRO x,y            			;definicia makra ktore nastavi kurzor na programatorom zvolene miesto
  	mov dl,x                  		;presum x-ovej suradnice do registra dl
  	mov dh,y      				;presum y-ovej suradnice do registra dh
  	mov ax,200h               		;do ax sa vlozi cislo obsluhy na nastavenie kurzora	
  	int 10h                			;prerusenie na vykonanie instrukcie	
	endm	
			

clrscr	MACRO					;definicia makra na mazanie obrazovky
	mov ax,3h               		;do ax sa vlozi parametre grafickeho modu 80x25
  	int 10h					;prerusenie na vykonanie instrukcie 
  	endm					


start:  MOV AX, SEG DATA        		;do registra ax ulozi adresu segmentu data
        MOV DS, ax              		;segmentovu adresu presunie do ds
	clrscr					;volanie makra na vymazanie obrazovky
	mov bl,x				;x-ovu suradnicu uloz do bl
	mov dl,y				;y-ovu suradnicu uloz do dl
	mov cx,24				;do CX sa tymtoprikazom ulozi pocet cyklov pre instrukciu loop
pis:						;zadefinovanie cyklu pis na vypisovanie textu	
	gotoxy bl,dl				;volanie makra na nastavenie kurzora na programatorom zvolene surad
	call p					;volanie procedury ktora je mimo subor
	inc bl					;zvysenie x-ovej sur o 1 - nastavenie kurzora o stlpec doprava
	inc dl					;zvysenie y-ovej sur o 1 - nastavenie kurzora o riadok nizsie 
	loop pis				;instrukcia loop opakuje cyklus pis 24 krat(tak ako je to nastavene v CX)
			
        MOV Ax, 4C00H           		;funkcia ukoncenia programu
        INT 21H                 		;prerusenie na vykonanie ukoncenia programu
code	ends			 		;koniec kodoveho segmentu 
	end start				;koniec programu
