;Peter Linder, kruzok 4
;zadanie 2
;nacita 2 dec cisla,urobi pozadovanu operaciu a vypise dec vysledok
;vstupne cisla su 8-bitove (max. 255)
;treba zadavat vsetky 3 cifry (napr. 214,036,005...)
;pri deleni vypise celociselnu cast
;pri odcitani vacsie od mensieho

.model small

data segment
deccis1	db 4,0,4 dup ('0')
deccis2 db 4,0,4 dup ('0')

cislo1	db 0
cislo2	db 0
 
hlaska1	db 10,13,'Zadaj prve cislo : $'
hlaska2 db 10,13,'Zadaj druhe cislo : $'

menu2 	db 10,13,' Operacie:',10,13
	db '      1) Scitanie',10,13
	db '      2) Odcitanie',10,13
	db '      3) Nasobenie',10,13
	db '      4) Delenie',10,13
	db ' Zadaj volbu: $'

hlaska3	db 10,13,'Vysledok : $'
hlaska_chyba	db 10,13,'Vysledok presahuje rozsah 0-255. $'
chyba_vs 	db 10,13,'Jedno z cisel presahuje rozsah 0-255. $'
data ends

code segment
assume cs:code,ds:data

start:	mov ax,seg data
	mov ds,ax

cyklus1:				;nacitanie cisel
	mov dx,offset hlaska1
	mov ah,09h
	int 21h

	mov dx,offset deccis1
	mov ah,0ah
	int 21h

	mov dx,offset hlaska2
	mov ah,09h
	int 21h
	
	mov dx,offset deccis2
	mov ah,0ah
	int 21h	
	
	mov bx,100				;prevod zo znakov na cisla		
	mov si,offset deccis1
	add si,2
	xor ax,ax
	xor cx,cx
prevod1:
	mov al,byte ptr [si]
	sub al,30h
	mul bl
	add cx,ax
	cmp bl,1
	je prevod2
	mov al,bl
	mov bl,10
	div bl
	mov bl,al
	inc si
	jmp prevod1

	
prevod2:cmp cx,255
	ja chyba_vstup
	mov cislo1,cl
	mov bx,100
        mov si,offset deccis2
	add si,2
	xor ax,ax
	xor cx,cx
loop1:	
	mov al,byte ptr [si]
	sub al,30h
	mul bl
	add cx,ax
	cmp bl,1
	je vyber_oper
	mov al,bl
	mov bl,10
	div bl
	mov bl,al
	inc si
	jmp loop1
	
chyba_vstup:				;kontroluje vstup
	mov dx,offset chyba_vs
	mov ah,09h
	int 21h
	jmp koniec


vyber_oper:				;menu na vyber operacie
	cmp cx,255
	ja chyba_vstup
	mov cislo2,cl

loop2:
	mov dx,offset menu2
	mov ah,09h
	int 21h

	mov ah,01h
	int 21h
	
	cmp al,'1'
	je scitanie
	cmp al,'2'
	je odcitanie
	cmp al,'3'
	je nasobenie
	cmp al,'4'
	je delenie
	jmp loop2
		
scitanie:					;jednotlive operacie
	xor ax,ax
	xor bx,bx
	mov al,cislo1
	mov bl,cislo2
	add ax,bx
        jmp vypis

odcitanie:
	xor ax,ax
	xor bx,bx
	mov al,cislo1
	mov bl,cislo2
	sub ax,bx
	jns vypis
	neg ax
	jmp vypis

nasobenie:
	xor ax,ax
	xor bx,bx
	mov al,cislo1
	mov bl,cislo2
	mul bl
	jmp vypis
	
delenie:
	xor ax,ax
	xor bx,bx
	mov al,cislo1
	mov bl,cislo2
	div bl
	mov ah,0
	jmp vypis

chyba:
	mov dx,offset hlaska_chyba
	mov ah,09h
	int 21h
	jmp koniec	
vypis:						;prevod z cisla na znak	
	cmp ax,256
	ja chyba
	mov cx,ax
	
	mov dx,offset hlaska3
	mov ah,09h
	int 21h
	
	mov ax,cx
	
	mov bx,100
loop3:  div bl
	mov cx,ax
	add al,30h
	xor dx,dx
	mov dl,al
	mov ah,02h
	int 21h
	cmp bx,1
	je koniec
	mov ax,bx
	mov bl,10
	div bl
	mov bl,al
	xor ax,ax
	mov al,ch
	jmp loop3
 	

koniec:	mov ax,4c00h
	int 21h

code ends
     end start



