Multiplikation

Gast #371874
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 ?
Gast #371875
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.