	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
;------------------- c 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
