You can do a much simpler comparison by just comparing the digits until you find a pair that are not equal. I'm assuming that D3 is the most significant byte.
Code:
movfw D3
subwf SD3,W
btfss STATUS,Z
goto GotResult
movfw D2
subwf SD2,W
btfss STATUS,Z
goto GotResult
movfw D1
subwf SD1,W
GotResult
;if zero flag set then numbers are equal
;if carry flag set then SD > D