IMHO:
;Here you must place your 32-bit-value
AU var byte BankA ;Upper
AH var byte BankA ;High
AM var byte BankA ;Middle
AL var byte BankA ;low
;Here the result is placed
XU var byte BankA ;Upper
XH var byte BankA ;High
XM var byte BankA ;Middle
XL var byte BankA ;low
asm
;clear X
clrf _XU
clrf _XH
clrf _XM
clrf _XL
;shift A by 1 position left
rlncf _AL,f
rlcf _AM,f
rlcf _AH,f
rlcf _AU,f
[repeat the shift-routine]
;move A to X
movff _AU,_XU
movff _AH,_XH
movff _AM,_XM
movff _AL,_XL
[repeat the shift-routine]
[repeat the shift-routine]
[repeat the shift-routine]
;add A to X
movf _AL,w
addwf _XL,f ;ignore Carry
movf _AM,w
addwfc _XM,w
movf _AH,w
addwfc _XH,w
movf _AU,w
addwfc _XU,w
[repeat the shift-routine]
[repeat the add-routine]
endasm
PBP 2.50C, MCS+ 3.0.0.5, MPLAB 8, MPASM 5.14, ASIX Presto, PoScope, mE mikroBasic V7.2, PICKIT2
Bookmarks