zas      	segment stack 'stack'
         	dw 64 dup(?)
zas      	ends

data       	segment
vstup      	db 90       		;bude sa citat 80 znakov
pocet      	db 0        		;tu sa ulozi ich skutocny pocet
           	db 90 dup(?)  		;miesto pre citany retazec
text1		db   13,10,'Zadajte retazec: $'
text2 		db   13,10,'Pocet cislic: $'
data   ends

code      	segment
       assume cs:code,ss:zas, ds:data


vypis	macro t 			; definovanie makra na vypis textu
	mov ah, 9			; presun 9 do registra AH, 9-systemova sluzba na vypis retazca
	mov dx, offset t		; presun du reg. DX offsetovu cast t
	int 21h				; prerusenie sluzba 21, vypis retazca
	endm				; koniec makra
;-----------------------------------------

nacit proc
	mov ax,seg data
	mov ds,ax
	vypis text1	
	mov ah,0ah   			;sluzba pre vstup retazca z klavesnice
	mov dx,offset vstup	
	int 21h
	xor ax,ax     			; nulovanie ax
	xor cx,cx     			; nulovanie pocitadla
	mov cl,pocet  			; pocet znakov do cl	      
	add dx,2      			; nastav sa na citanie prveho znaku
	mov si,dx     			; adresa prveho znaku v si
	xor dx,dx
endp nacit

;-----------------------------------------

pocitanie proc
	xor bx,bx
znova:	mov al, [si]  			; uloz znak do al ;   
      	cmp al, 2fh   			; je to cislica 0?  '0' = 30h
      	jbe dalej     			; znak nebude cislica ,v ascii tabulke je pod cislom '0'
      	cmp al, 3ah   			; je to cislica 9?
      	jnb dalej     			; znak nebude cislica, v ascii tabulke je nad cislicou '9'
      	inc bx				;pocita pocet malych pismen
dalej:	inc si        			; priprav dalsi znak
      	loop znova     			; opakuj prehladavanie retazca  
	xor cx,cx
	mov dx,bx
	xor bx,bx

endp pocitanie
;-----------------------------------------
prevod	proc
s10:    cmp dx,10                 	; je dx >= 10 ?	
	jb s1
	sub dx,10                 	;bude v cykle odcitavat od dx 10 az dovtedy kym dx<10
	inc cx                    	;v cl je zapisany pocet desiatok
	jmp s10
s1:     mov bl,dl
	add bl,30h                	;pripocitanim 30h k cislu ziskame jeho ASCII kod
	add cl,30h
vypis text2
	mov ah,2                  	;funkcia pre vypis retazca  
        mov dl,cl
	int 21h                   	;vypis desiatky
	mov ah,2      
	mov dl,bl              	  	;vypis jednotky
	int 21h 
	mov ax,4c00h
        int 21h

endp prevod
;-----------------------------------------
start: 
	call nacit
	call pocitanie
	call prevod
code  ends
      end start
