
PIC18CXX8
DS30475A-page 72
Advanced Information
2000 Microchip Technology Inc.
6.1
Operation
unsigned multiply. Only one instruction is required
when one argument of the multiply is already loaded in
the WREG register.
multiply. To account for the sign bits of the arguments,
each argument’s most significant bit (MSb) is tested
and the appropriate subtractions are done.
EXAMPLE 6-1:
8 x 8 UNSIGNED MULTIPLY
ROUTINE
EXAMPLE 6-2:
8 x 8 SIGNED MULTIPLY
ROUTINE
that is used. The 32-bit result is stored in 4 registers
RES3:RES0.
EQUATION 6-1:
16 x 16 UNSIGNED
MULTIPLICATION
ALGORITHM
EXAMPLE 6-3:
16 x 16 UNSIGNED
MULTIPLY ROUTINE
MOVFF
ARG1, WREG
;
MULWF
ARG2
; ARG1 * ARG2 ->
;
PRODH:PRODL
MOVFF
ARG1, WREG
MULWF
ARG2
; ARG1 * ARG2 ->
; PRODH:PRODL
BTFSC
ARG2, SB
; Test Sign Bit
SUBWF
PRODH, F
; PRODH = PRODH
;
- ARG1
MOVFF
ARG2, WREG
BTFSC
ARG1, SB
; Test Sign Bit
SUBWF
PRODH, F
; PRODH = PRODH
;
- ARG2
RES3:RES0
=
ARG1H:ARG1L
ARG2H:ARG2L
=
(ARG1H
ARG2H 216)+
(ARG1H
ARG2L 28)+
(ARG1L
ARG2H 28)+
(ARG1L
ARG2L)
MOVFF
ARG1L, WREG
MULWF
ARG2L
; ARG1L * ARG2L ->
;
PRODH:PRODL
MOVFF
PRODH, RES1
;
MOVFF
PRODL, RES0
;
MOVFF
ARG1H, WREG
MULWF
ARG2H
; ARG1H * ARG2H ->
;
PRODH:PRODL
MOVFF
PRODH, RES3
;
MOVFF
PRODL, RES2
;
MOVFF
ARG1L, WREG
MULWF
ARG2H
; ARG1L * ARG2H ->
;
PRODH:PRODL
MOVF
PRODL, W
;
ADDWF
RES1, F
; Add cross
MOVF
PRODH, W
;
products
ADDWFC
RES2, F
;
CLRF
WREG
;
ADDWFC
RES3, F
;
MOVFF
ARG1H, WREG
;
MULWF
ARG2L
; ARG1H * ARG2L ->
;
PRODH:PRODL
MOVF
PRODL, W
;
ADDWF
RES1, F
; Add cross
MOVF
PRODH, W
;
products
ADDWFC
RES2, F
;
CLRF
WREG
;
ADDWFC
RES3, F
;