;DODAWANIE DWOCH LICZB DWUBAJTOWYCH WYNIK 2 LUB 3 BAJTOWY

 
 list p=16f1517 
 #include <p16f1517.inc> 
 
 ORG 0x000 ; poczatek programu 
  
 L1L equ 0x23   ; młodszy bajt liczby L1 - dwubajtowej 
 L1H equ 0x22     ; starszy bajt liczby L1 - dwubajtowej
 L2L equ 0x25     ; młodszy bajt liczby L2 - dwubajtowej
 L2H equ 0x24      ; starszy bajt liczby L2 - dwubajtowej
 WynL1 equ 0x35    ; wynik dwubjatowy
 WynL2 equ 0x34     ; wynik dwubjatowy
 WynH1 equ 0x33     ; wynik trzybajtowy

 ; wyczyszczenie rejestrów 
 clrf L1L 
 clrf L1H    
 clrf L2L 
 clrf L2H  
 clrf WynH1  
 clrf WynL1  
 clrf WynL2  
; dodajemy liczby FDE8 i D0EA
 ;dodawanie młodszych bajtów 
 movlw 0x4D    ; ładujemy do akumulatora młodszy bajt liczby L1,  
 movwf L1L         ; przenosiamy do rejestru L1L
 movlw 0x5B     ; ładujemy do akumulatora młodszy bajt liczby L2, 
 movwf L2L          ; przenosimy do rejestru L2L
 addwf L1L,w    ; dodajemy do L1L to co w akumulatorze 
   
 movwf WynL1 ; przeniesienie do WynL1 wyniku dodawania młodszych bajtów liczb L1 i L2 
  
 ; jeśli nastapiło przeniesienie 
 btfsc STATUS,C    ;sprawdz bit C rejestru status,  
 incf WynL2       ; zwiększamy WynL2 bo wystąpiło przeniesienie 
 
 ; dodawanie starszych bajtów 
 movlw 0x50     ; ładujemy do akumulatora starszy bajt liczby L1,  
 movwf L1H        ; przenosiamy do rejestru L1H
 movlw 0x65        ; ładujemy do akumulatora starszy bajt liczby L2
 movwf L2H     ; przenosiamy do rejestru L2H 
 addwf L1H,w       ; dodajemy do L1H to co w akumulatorze
  
 ; sprawdzamy przeniesienie - jeśli nastąpiło to 3 bajtowy wynik
 btfsc STATUS,C    ;sprawdz bit C rejestru status,  
 incf WynH1           ;zwiększamy WynH1 bo wystąpiło przeniesienie 
  
 ; zapisujemy drugi bajt wyniku 
 addwf WynL2,w    ; dodajemy do WynL2 to co w akumulatorze 
 movwf WynL2         ; przenosimy do rejestru WynL2

 end ; koniec 
