; a szam regiszterben lévő számot felbontja úgy, hogy a szám
; számjegyeit 3 különböző regiszterbe helyezi el.
; a temp regiszterekben az ascii kódnak megfelelő érték található

	list      p=16F877            
	#include <p16F877.inc>
	__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_OFF & _XT_OSC & _LVP_OFF
	
                ERRORLEVEL -302

hanyados	equ	20h
maradek		equ	21h
osztando	equ	22h
oszto		equ	23h
temp1		equ	24h
temp2		equ	25h
temp3		equ	26h
szam		equ	27h

		org 	0x0000
		nop				;icd
START
		movlw	d'049'			; pl.: 249 => 	temp1=2
		movwf 	szam			;		temp2=4
						;		temp3=9

		movfw	szam
		movwf	osztando
		movlw	d'100'
		movwf	oszto
		call	osztas8	
		movfw	hanyados
		addlw	d'48'			; + 48h - ascii eltolás
		movwf	temp1

		movfw	maradek
		movwf	osztando
		movlw	d'10'
		movwf	oszto
		call	osztas8	
		movfw	hanyados
		addlw	d'48'			; + 48h - ascii eltolás
		movwf	temp2	

		movfw	maradek
		movwf	osztando
		movlw	d'1'
		movwf	oszto
		call	osztas8	
		movfw	hanyados
		addlw	d'48'			; + 48h - ascii eltolás
		movwf	temp3

stop		goto	$

; Dr. Kóny László: Pic mikrovezérlők alkalmazástechnikája 
; cimű könyvből származó 8 bites osztás 

osztas8		movlw	d'1'
		movwf	hanyados
		clrf	maradek
osztas8_1	rlf	osztando
		rlf	maradek
		movfw	oszto
		subwf	maradek,w
		skpnc
		movwf	maradek
		rlf	hanyados
		bnc	osztas8_1
		return

		end


