		code segment
		assume CS:code, DS:data
		mainproc proc
		mov AX, data
		mov DS, AX
		
		repeat:
		mov ah,01h
		int 21h
		call verification
		jc repeat
		
		call tobin
		mov bh,al
		
		repeat1:
		int 21h
		call verification
		jc repeat1
		
		
		call tobin
		mov bl,al
		cmp bh,bl
		
		pushf
		pop bx
		test bx, 0000000010000000b ;sf
		mov ah,09h
		mov dx, offset sign
		int 21h
		mov ah,02h
		jnz sf_true
		jz sf_false
		sf_true_end:
		sf_false_end:
		
		test bx, 0000100000000000b ;of
		mov ah,09h
		mov dx, offset over
		int 21h
		mov ah,02h
		jnz of_true
		jz of_false
		of_true_end:
		of_false_end:
		test bx, 0000000001000000b;zf
		mov ah,09h
		mov dx, offset zero
		int 21h
		mov ah,02h
		jnz zf_true
		jz zf_false
		zf_true_end:
		zf_false_end:
		
		test bx, 0000000000000001b;cf
		mov ah,09h
		mov dx, offset carry
		int 21h
		mov ah,02h
		jnz cf_true
		jz cf_false
		cf_true_end:
		cf_false_end:
		
		mov AX, 4C00h 
		int 21h
		;###################################################
		sf_true:
		mov dl,31h
		int 21h
		jmp sf_true_end
		
		sf_false:
		mov dl,30h
		int 21h
		jmp sf_false_end
		
		;//////////////////////
		
		of_true:
		mov dl,31h
		int 21h
		jmp of_true_end
		
		of_false:
		mov dl,30h
		int 21h
		jmp of_false_end
		
		;//////////////////////
		
		zf_true:
		mov dl,31h
		int 21h
		jmp zf_true_end
		
		zf_false:
		mov dl,30h
		int 21h
		jmp zf_false_end
		
		;//////////////////////
		
		cf_true:
		mov dl,31h
		int 21h
		jmp cf_true_end
		
		cf_false:
		mov dl,30h
		int 21h
		jmp cf_false_end
		
	verification proc
		clc ;убираем 0 из sf 
		cmp al, 30h ;проверяем на al>30h, если al<0(с=1,s=1) ошибка
		js error ;ошибка
	
		cmp al,39h ;проверка al<39h, если al<0(с=1,s=1) ошибка, если al>0 - либо ошибка, либо символ
		jbe digit;вывод - число
		;проверка на символ
		cmp al, 41h;проверяем на al<41h, если al<0(c=1,s=1) ошибка
		js error
		
		cmp al, 46h;проверяем на al<46h, если al<0(c=1,s=1) - символ, если al>0 - ошибка
		jbe valid
		
		jmp error
		digit: mov cx,1;вывод - число
		clc
		ret
		valid: mov cx,2;вывод - символ
		clc
		ret
		error: stc;вывод - ошибка
		ret
	verification endp
		
		
		
	tobin proc
		cmp cx, 2
	
		js todigit;для чисел
		jz tovalid;для символов
		endd:
		endv:
		ret
		
		todigit:
		sub al,30h
		jmp endd
		
		tovalid:
		sub al,41h
		add al,0Ah
		jmp endv
	tobin endp
		
		mainproc endp
		code ends
	
		data segment
		carry db 10,13,'CF=$'
		over db 10,13,'OF=$'
		sign db 10,13,'SF=$'
		zero db 10,13,'ZF=$'
		data ends
	
		stk segment stack
		db 256 dup (?)
		stk ends
		end mainproc