.model small
.stack 100h											; Urcuje velkost zasobniku
.386												; Podpora procesora 386

.data												; definicia datoveho segmentu

	_moznosti	db 13,10,13,10,'MENU',13,10,13,10,'a) Nacitaj cisla z input.dat, vynasob kladne a vysledok vypis na obrazovku a zapis do output.dat',13,10,'b) Ukonci vykonavanie programu',13,10,'$'											; retazec s menu
	_input		db 'input.dat',0
	_daticka	db  100 dup('$')
	test1		db '$'

.code												; definicia kodoveho segmentu
	start:
		mov ax,@data									; vloz do ax adresu datoveho segmentu
		mov ds,ax									; ds = ax
		mov ah,9									; cislo sluzby DOSu pre vystup retazca
		mov dx,offset _moznosti								; adresa retazca pre vypis je ds:dx
		int 21h										; volanie sluzby DOSu

	vstup:
		mov ah,8									; cislo sluzby DOSu pre vstup znaku
		int 21h										; volanie sluzby DOSu
		mov ah,2									; cislo sluzby DOSu pre vystup znaku
		mov dl,al									; dl prirad hodnotu z al
		cmp al,97									; zisti, ci bolo stlacene a
		je volba1									; ak ano - skoci na volbu 1
		cmp al,98									; zisti, ci bolo stlacene b
		je volba2									; ak ano - skoci na volbu 2
		jne vstup									; ak sa nestlaci konkretne pismenko, tak sa cykli, kym ho nedostane

	volba1:

		mov ah,3dh             		; otvor subor
		mov al,0                	; na citanie 
		mov dx,offset _input    	; je to subor input.dat
		int 21h				; volanie sluzby DOSu
		mov dx,offset _daticka		; bude sa ukladat do pameti
		mov cx,1                	; po jednom znaku
		mov bx,ax        	       	; do bx daj handler otvoreneho suboru

	citaj:	mov ah,3fh              	; citaj subor
		int 21h				; volanie sluzby DOSu
		inc dx	          		; priprav adresu pre ulozenie dalsieho znaku do pameti '_daticka'
	       	cmp ax,0                	; bol EOF?
		jne citaj			; ak nie, citaj dalsi znak zo suboru

;		mov bx,offset _daticka			; napln bx adresou pola _daticka
;		mov si,2				; do source indexu daj 2
;		cmp byte ptr ds:[bx + si],32		; porovnaj so spaceom


		mov ah,9									; cislo sluzby DOSu pre vystup retazca
		mov dx,offset _daticka								; do dx daj ofset _daticka
		int 21h										; volanie sluzby DOSu
		jmp start									; skoc na ponuku menu

	volba2:
		jmp koniec									; skoc na ukoncovaciu cast programu

	koniec:
		mov ah,4ch									; Sluzba DOSu 4ch - QUIT with exit code
		int 21h										; volanie sluzby DOSu

	end start