;ZADANIE C.1

ZAS	SEGMENT		STACK		;definujem stack
	DW		64 DUP(?)
ZAS	ENDS

DAT	SEGMENT				;definujem data
	DB		'Zadajte retazec: $'
ZADAJ   DB		'Zadaj znak: $'
ENT	DB		0Dh
	DB		0Ah
	DB		'$'
MENU	DB		0Dh
	DB		0Ah
	DB		'1 - Vypis retazec na obrazovku'
	DB		0Dh
	DB		0Ah
	DB		'2 - Vypise poradove miesto prvej medzery'
	DB		0Dh
	DB		0Ah
	DB		'3 - Vypise pocet cislic v retazci'
	DB		0Dh
	DB		0Ah
	DB		'4 - Zisti miesta vyskytu daneho znaku'
	DB		0Dh
	DB		0Ah
	DB		'5 - Vypise retazec v obratenom poradi'
	DB		0Dh
	DB		0Ah
	DB		'6 - Koniec'
	DB		0Dh
	DB		0Ah
	DB		'$'
TEXT	DB		100 
	DB		101 DUP('$')	;TEXT obsahuje nacitany text	
DAT	ENDS

CODE	SEGMENT
	ASSUME CS:CODE,SS:ZAS,DS:DAT
PINT	PROC				;procedura vypisuje na obrazovku cislo nachadzajuce sa v registri al
	mov bl,100 			
	div bl				;zadane cislo vydelim 100
	mov dl,al		
	add dl,30h			
	mov bl,ah
	mov ah,02h
	int 21h				;to co nam vyde vypisem na obrazovku
	xor ax,ax
	mov al,bl
	mov bl,10
	div bl
 	mov dl,al
	add dl,30h
	mov bl,ah
	mov ah,02h
	int 21h
	mov dl,bl
	add dl,30h
	mov ah,02h
	int 21h
 	RET
PINT	ENDP
PROC4	PROC
	mov ah,09h
	mov dx,offset ZADAJ
	int 21h
	mov ah,01h
	int 21h
	push ax
	mov ah,09h
	mov dx,offset ENT
	int 21h
	pop ax
	mov si,offset TEXT+1
@loop2:	inc si
	cmp [si],al
	jne @dalej
	push ax
	mov ax,si
	sub ax,offset TEXT+1
	call PINT
	mov ah,09h
	mov dx,offset ENT
	int 21h
	pop ax
@dalej:
	cmp byte ptr [si],24h
        jne @loop2
	RET
PROC4	ENDP
START:	mov ax,seg dat
	mov ds,ax
	mov ah,09h
 	xor dx,dx
	int 21h
	mov ah,0ah
 	mov dx,offset TEXT
	int 21h
@MENU:	mov ah,09h
	mov dx,offset MENU
	int 21h
	mov ah,01h
	int 21h
	push ax
	mov ah,09h
	mov dx,offset ENT
	int 21h
	pop ax
	cmp al,31h
	je @1
	cmp al,32h
	je @2
	cmp al,33h
	je @3
	cmp al,34h
	je @4
	cmp al,35h
	je @5
	cmp al,36h
	je @END
@1:	
	mov ah,09h
 	mov dx,offset TEXT+2
	int 21h
	jmp @MENU 
@2:	
	mov si,offset TEXT+2
@loop1:	cmp byte ptr [si],24h
	je @nic
	cmp byte ptr [si],20h
	je @medz
	inc si
	jmp @loop1
@medz:	mov ax,si
	sub ax,offset TEXT+1
	call PINT
	jmp @MENU
@nic:	mov ah,02h
	mov dl,30h
	int 21h
	jmp @MENU 
@3:	
	xor ax,ax
	xor ch,ch
	mov cl,[TEXT+1]
	mov si,offset TEXT+2
@loop4:	cmp byte ptr [si],30h
	jb @loop5
	cmp byte ptr [si],39h
	ja @loop5
	inc ax
@loop5: inc si
	loop @loop4
	call PINT
	jmp @MENU 
@4:	call PROC4
	jmp @MENU
@5:	
	mov si,offset TEXT+1
	mov cl,byte ptr [si]
	xor ch,ch
	add si,cx
@loop3:	mov ah,02
	mov dl,[si]
	dec si
	int 21h
	loop @loop3
	jmp @MENU 
@END:	mov ah,4ch
	int 21h
CODE 	ENDS
	END START

