.model small
.stack
.data
	;konstansok felvetele
	cr		= 13		;carrige return (kocsi vissza)
	lf		= 10		;line feed (új sor)
	bckspc	= 8			;backspace karakter
	;valtozok felvetele (dollar a lezaro karakter)
    msgstr db 'Hello haver $'
    msgstr2 db 'Mizu? $'

    msgstr3 db 'Konkret pozicioba $'

    dcrlf db cr,lf,'$'	;soremeles
.code


exit macro				;Program megszakitasa. Ez mindig kell a program vegen
	mov ah, 04ch		;hexa 4C az AH regiszterben utasit a kilepesre
	int 21h				;Megszakitas. dos funkciok hivasa
endm

clrscr macro			;DOS kepernyo torlese
	push ax				;ax mentese
	mov ax, 3			;3-as bekerul ah-ba. Utasitas kepernyo torlesere
	int 10h				;hexa 10-es megszakitas. Kepernyo driver hivasara
	pop ax
endm

write macro string		;szoveg kiirasa kepernyore
    push ax				;regiszterek mentese
    push dx

    mov ax, @data		;adatszegmens kezdozime ax-be
    mov ds, ax			;ezt betoltjuk az adatszegmens regiszterbe

    mov dx, offset string	;a string offset cimenek betoltese dx-be

    mov ah, 9			;ah-ban 9 jelenti, hogy stringet kell kiirni
    int 21h				;dos megszakitas

    pop dx				;regiszterek visszatoltese
    pop ax
endm

writeln macro string	;szoveg kiiras es soremeles
    write string
    write dcrlf
endm


gotoxy macro x, y		;kurzor pozicionalasa x, y pozicioba (x=oszlop, y=sor)
    push dx				;hasznalt regiszterek mentese
    push ax
    push bx

    mov dh, x			;dh-ba kell kerulnie az oszlopszamnak
    mov dl, y			;es dl-be kell kerulni a sorszamnak
    mov ah, 2			;A kettes kod a kurzor pozicionalasa			

    xor bh, bh			;Hasznalt kepernyo lap szama 0
    int 10h				;képernyő driver hivasa

    pop bx				;regiszterek visszatoltese
    pop ax
    pop dx
endm

writeto macro string, x, y ;szoveg kiirasa x, y pozicioba
    gotoxy x, y				;eloszor pozicionalas
    write string			;majd kiiras
endm

write_char macro chr	;egy karakter kiirasa
	push ax				;regiszterek mentese
	push dx

	mov dl, chr			;dl-be keruljon a karakter 
	mov ah, 2			;2-es bekerul ah-ba. Utasitas karakter kiirasara
	int 21h				;megszakitas hivas. DOS funkciok eleresere

	pop dx				;regiszterek visszatoltese
	pop ax
endm

main proc				;foprogram
	clrscr				;kepernyo torlese
    writeln msgstr		;ket szoveg kiirasa kulon sorban
    writeln msgstr2
    
    writeto msgstr3, 4, 3 ;szoveg kiirasa 3 sor 4 oszlopatol
    exit				;kilepes a programbol;
main endp


end main				;A teljes program vege. Meg kell adni, hogy melyik 
						;eljaras lesz a foprogram