;9. Zabezpecte vypis textu AHOJ od konca riadku na zaciatok toho isteho riadku. (nie obrateny text)
;Pouzite externu proceduru
;Zdrojovy program musi byt dobre okomentovany.
;*************************************************************************************************************************************
;Meno: Michal Vajíček
;2.bc, telekomunikacie
;rok: 2008
;*************************************************************************************************************************************
extrn p:proc                                                  ; procedura je niekde mimo tento subor
public text                                                   ; premenna text je definovana v tomto programe

kurzor  MACRO x,y                                             ;macro nastavi kurzor na zvolenu poziciu
	mov bh,0                                              ;video stranka (standardne 0)
	mov dh,x                                              ;do dh vlozi poziciu riadku
        mov dl,cl                                             ;do dl sa vlozi cl, ktore budeme v cykle zmnesovat(pozicia stlpca)
        mov ah,02h                                            ;funkcia na nastavenie kurzora na poziciu        	
	int 10h                                               ;ROMIOS prerusenie video sluzby
        endm                                                  ;koniec makra 

clrscr	MACRO					              ;definicia makra na mazanie obrazovky
	mov ax,0003h               		              ;do ax sa vlozi parametre grafickeho modu 80x25
  	int 10h					              ;prerusenie na vykonanie instrukcie 
  	endm		                                      ;ukoncenie makra clrscr

DATA    SEGMENT  word public 'data'                           ;zaciatok datoveho segmentu
TEXT    DB      'AHOJ$'                                       ;definicia prveho retazca
DATA    ENDS                                                  ;koniec datoveho segmentu

CODE    SEGMENT byte public 'code'                            ;zaciatok kodoveho segmentu
        ASSUME  CS:CODE, DS:DATA,                             ;direktiva oznamuje
start:  mov ax, Seg Data                                      ;do AX vloz adresu segmentu DATA
        MOV DS, AX                                            ;segmentovu adresu presun do DS
        clrscr                                                ;volanie makra clrscr na vymazanie obrazovky
        mov cl,79                                             ;do registra cl sa ulozi 79
        mov dh,0
cyklus: sub cl,3                                              ;zaciatok cyklu a cl sa zmensi o 3
        kurzor dh,dl                                          ;nastavenie kurzora na poziciu so suradnicami dh a dl
        call p                                                ;volanie procedury
        int 21h
        cmp cl,0                                              ;porovna obsah cl registra s nulou
        jz konec                                              ;ak sa rovnaju (1) skoci na navestie konec 
        loop cyklus                                           ;presunie vykonavanie programu na navestie cyklus
konec:  
        MOV Ax, 4C00H                                         ;funkcia ukoncenia programu
        INT 21H                                               ;prerusenie na vykonanie ukoncenia programu
code	ends			                              ;koniec kodoveho segmentu 
	
        end start		                              ;koniec programu, program bude spusteny od adresy start
;**************************************************************************************************************************************
;Program je funkcny a bol vypracovany v prostredi MsDOS za pouzitia ;kompilatora TASM (v. 2.01) a TLINK (v. 3.01). 
;Pre spustenie tohoto programu potrebujeme PC s procesorom ;architektury  x86 s MsDOS alebo Win9x/WinNT/WinME/WinXP alebo nejaky ;OS umoznujuci spustat   DOSovske programy.
;v programe su vyuzite dve makra(kurzor - nastavenie kurzora, clrscr - vymazanie obrazovky)
;bol pouzity cyklus v navesti cyklus 
;vyuzil som externu proceduru p v subore p.asm