	LIST    p=16F1824
	#include "P16F1824.INC"

	CBLOCK  0x020		; Szabad RAM terület kezdete
		a1				; 1. változó
		a2
		a3
		b1				; 2. változó
		b2
		b3
		c1				; 3. változó
		c2
		c3
		d1				; összeg
		d2
		d3
	ENDC

	org   0

		goto	kezd

;------------------- a bővítése
kezd:	clrf	a3
		btfsc	a2,7
		comf	a3
;------------------- b bővítése
		clrf	b3
		btfsc	b2,7
		comf	b3
;------------------- b bővítése
		clrf	c3
		btfsc	c2,7
		comf	c3
;------------------- a+b->d
		movf	a1,w
		addwf	b1,w
        movwf   d1
		movf	a2,w
		addwfc	b2,w
        movwf   d2
		movf	a3,w
		addwfc	b3,w
        movwf   d3
;------------------- c+d->d
		movf	c1,w
		addwf	d1
		movf	c2,w
		addwfc	d2
		movf	c3,w
		addwfc	d3
;------------------- d<0 ?
		btfsc	d3,7
		bra		neg
;------------------- d>$007fff ?
poz:	btfsc	d3,0
		bra		pszat
		btfss	d2,7
		bra		vege
;------------------- d=$007fff (7fff)
pszat:	movlw	0xff
		movwf	d1
		movlw	0x7f
		movwf	d2
		;clrf	d3
		bra		vege
;------------------- d<$ff8000
neg:	btfss	d3,0
		bra		nszat
		btfsc	d2,7
		bra		vege
;------------------- d=$ff8000 (8000)
nszat:	clrf	d1
		movlw	0x80
		movwf	d2
		;movlw	0xff
		;movwf	d3
;-------------------
vege:	goto	vege
;-------------------

     END
