arkadaşlar asm de yazdığım 4 işlem 16bitlik yazılımı aşağıda veriyorum .
kolay gelsin. yapılan işlem sonucu; SONUCH = üstbyte SONUCL = altbyte
include "p16f877.inc"
__config(_CP_OFF & _PWRTE_OFF & _XT_OSC & _WDT_OFF & _BODEN_OFF & _LVP_OFF)
CBLOCK H'20'
REG20
REG21
REG22
REG23
REG24
REG25
REG26
REG27
REG28
BOLUMH
BOLUML
BOLENH
BOLENL
SONUCH
SONUCL
CARPIH
CARPIL
CARPANH
CARPANL
TOPL1H
TOPL1L
TOPL2H
TOPL2L
CIKARH
CIKARL
CIKH
CIKL
ENDC
ORG 0X000
GOTO MAIN
ORG 0X004
CLRF INTCON
RETFIE
MAIN
CLRF SONUCH
CLRF SONUCL
GOTO SMN
;------------------------------------ 03E8/0022=1D
MOVLW H'03'
MOVWF BOLUMH ;bölünecek sayı high byte
MOVLW H'E8'
MOVWF BOLUML ;bölünecek sayı low byte
MOVLW H'22'
MOVWF BOLENL ;bölecek sayı high byte
MOVLW H'00'
MOVWF BOLENH ;bölecek sayı high byte
;------------------------------------ 03E8*0022=
MOVLW H'03'
MOVWF CARPIH ;çarpılacak sayı high byte
MOVLW H'E8'
MOVWF CARPIL ;çarpılacak sayı low byte
MOVLW H'00'
MOVWF CARPANH ;çarpacak sayı high byte
MOVLW H'22'
MOVWF CARPANL ;çarpacak sayı high byte
;------------------------------------
MOVLW H'3'
MOVWF TOPL1H ;toplanacak A sayısı high byte
MOVLW H'E8'
MOVWF TOPL1L ;toplanacak A sayısı low byte
MOVLW H'3'
MOVWF TOPL2H ;toplanacak B sayısı high byte
MOVLW H'E8'
MOVWF TOPL2L ;toplanacak B sayısı low byte
;------------------------------------
SMN
MOVLW H'3'
MOVWF CIKARH ;çıkarılacak sayı high byte
MOVLW H'E8'
MOVWF CIKARL ;çıkarılacak sayı low byte
MOVLW H'04'
MOVWF CIKH ;çıkacak sayı high byte
MOVLW H'EE'
MOVWF CIKL ;çıkacak sayı low byte
;------------------------------------
; CALL BOLMEK ;hangi işlemi yapacaksan onu aktif et.
; CALL CARPMAK
CALL CIKARMAK
; CALL TOPLAMAK
DUR
GOTO DUR ;İŞLEM SONUNDA BURADA BEKLİYOR
;------------------------------------ ÇARPMA İŞLEMİ
CARPMAK
MOVF CARPIL,W
MOVWF REG26
MOVF CARPIH,W
MOVWF REG27
MOVF CARPANH,W
MOVWF REG23
MOVF CARPANL,W
MOVWF REG22
CALL CARPISLEM
MOVWF SONUCL
MOVF REG25,W
MOVWF SONUCH
RETURN
CARPISLEM
MOVLW 0X10
MOVWF REG28
CLRF REG21
CLRF REG20
CAR0
RRF REG27,F
RRF REG26,F
BTFSS STATUS,0
GOTO CAR1
MOVF REG22,W
ADDWF REG20,F
MOVF REG23,W
BTFSC STATUS,0
INCFSZ REG23,W
ADDWF REG21,F
CAR1
RRF REG21,F
RRF REG20,F
RRF REG25,F
RRF REG24,F
DECFSZ REG28,F
GOTO CAR0
MOVF REG24,W
BCF STATUS,7
BCF STATUS,6
BCF STATUS,5
RETURN
;------------------------------------ ÇIKARMA İŞLEMİ
CIKARMAK
MOVF CIKL,W
SUBWF CIKARL,W
MOVWF SONUCL
MOVF CIKH,W
BTFSS STATUS,0
ADDLW .1
SUBWF CIKARH,W
MOVWF SONUCH
RETURN
;------------------------------------ TOPLAMA İŞLEMİ
TOPLAMAK
MOVF TOPL1L,W
ADDWF TOPL2L,W
MOVWF SONUCL
MOVF TOPL1H,W
BTFSC STATUS,0
ADDLW .1
ADDWF TOPL2H,W
MOVWF SONUCH
RETURN
;------------------------------------ BÖLME İŞLEMİ
BOLMEK
MOVF BOLUML,W
MOVWF REG20
MOVF BOLUMH,W
MOVWF REG21
MOVF BOLENL,W
MOVWF REG22
MOVF BOLENH,W
MOVWF REG23
CLRF PCLATH
CALL BOLISLEM
MOVWF SONUCL
MOVF REG21,W
MOVWF SONUCH
RETURN
BOLISLEM
CLRF REG25
CLRF REG24
MOVLW 0X10
MOVWF REG26
IS0
RLF REG21,W
RLF REG24,F
RLF REG25,F
MOVF REG22,W
SUBWF REG24,F
MOVF REG23,W
BTFSS STATUS,0
INCFSZ REG23,W
SUBWF REG25,F
BTFSC STATUS,0
GOTO IS1
MOVF REG22,W
ADDWF REG24,F
MOVF REG23,W
BTFSC STATUS,0
INCFSZ REG23,W
ADDWF REG25,F
BCF STATUS,0
IS1
RLF REG20,F
RLF REG21,F
DECFSZ REG26,F
GOTO IS0
MOVF REG20,W
GOTO IS2
IS2 BCF STATUS,7
BCF STATUS,6
BCF STATUS,5
RETURN
END