Part Number:MSP430F413
Hi,
I am trying to understand this code which was written by a former staff who has left the company.
The code is as follows, somehow I got lost in the routine as to what it actually does :
; THIS IS A 16-BIT BY 16-BIT MULTIPLICATION ROUTINE
; THE RESULT IS A 32-BITS LONG
; MULTIPLICAND X MULTIPLIER = RESULT
MULER1 EQU 0228H ; MULTIPLIER, LBYTE
MULER2 EQU MULER1+1 ; MULTIPLIER, HBYTE
MULND1 EQU 022AH
MULND2 EQU MULND1+1 ; MULTIPLICAND, LWORD
MULND3 EQU MULND1+2
MULND4 EQU MULND1+3 ; MULTIPLICAND, HWORD
MULRT1 EQU 0238H
MULRT2 EQU MULRT1+1 ; MULTIPLICATION RESULT, LWORD
MULRT3 EQU MULRT1+2
MULRT4 EQU MULRT1+3 ; MULTIPLICATION RESULT, HWORD
MULT16
CLR &MULRT1 ; CLEAR MULTIPLICATION RESULT LOCATION, LWORD
CLR &MULRT3 ; CLEAR MULTIPLICATION RESULT LOCATION, HWORD
CLR &MULND3 ; CLEAR MULTIPLICAND LOCATION, HWORD
MOV #020h,R15 ; SET COUNTER
MULT_XBIT
CLRC
RRC &MULER1
JNC MULT_SHIFT
MULT_ADD
ADD &MULND1, &MULRT1 ; ADD MULTIPLICAND WITH RESULT
ADDC &MULND3, &MULRT3 ; ADD MULTIPLICAND WITH RESULT
MULT_SHIFT
RLA &MULND1 ; SHIFT LEFT MULTIPLICAND, LWORD
RLC &MULND3 ; SHIFT LEFT MULTIPLICAND, HWORD
DEC R15
JNZ MULT_XBIT
RET