Forum: Projekte & Code Multiplikation


von Org (Gast)


Lesenswert?

Hallo ich hab einen Code für PIC16F88 gesucht um zwei 8-Bit Register mit
einander zu Multiplizieren.
Hab diesen auch gefunden und sehr erfolgreich getestet, nur verstehe
ich nicht wie dieser Funktioniert.
Kann mir da vl wer helfen ?

;********   Define a macro for adding & right shifting  **
mult    MACRO   bit               ;Begin macro
        BTFSC   mulplr,bit
        ADDWF   H_byte,Same
        RRF     H_byte,Same
        RRF     L_byte,Same
        ENDM                      ;End of macro

;********   Multiplier Routine  **********************
multiply
  CLRF    H_byte
  CLRF    L_byte
  MOVF    mulcnd,W            ;move the multiplicand to W reg.
  BCF     STATUS,C        ;clear the Carry bit in the STATUS Reg.
  mult    0
  mult    1
  mult    2
  mult    3
  mult    4
  mult    5
  mult    6
  mult    7

  RETLW   0
********************************

......
.....

  MOVLW  XXX
  MOVWF  mulplr
  MOVLW  XXX
  MOVWF  mulcnd

  CALL  multiply

und dann is das ergebnis in H_byte und L_byte


nur wie ?

von Ale (Gast)


Lesenswert?

I'll will explain in english:

That multiplies in binary digit to digit:

Result = A * B = A.0 * B + (A.1 * B) << 1 + (A.2 * B) << 1 + ...

but does so using addition and shift, and testing every bit, if it is
set, adds B, if it is not, do not.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.