home *** CD-ROM | disk | FTP | other *** search
/ World of A1200 / World_Of_A1200.iso / programs / develop / hc11dev / hcs / mul16b01.s next >
Text File  |  1995-02-27  |  1KB  |  61 lines

  1. *-----------------------------------------------------------------------*
  2. *   Multiply 16 by 16 bit unsigned integer routine for the 6801/6811.
  3. *
  4. *    1/23/87
  5. *    D. G. Weiss
  6. *    MCU Technical Marketing
  7. *    Motorola Microprocessor Group
  8. *    Oak Hill, TX
  9. *
  10. *    Accepts:
  11. *    Multiplier:    Mpr[1..0]
  12. *    Multiplicand:    Mpd[1..0]
  13. *    Yields:
  14. *    Product:    Prod[3..0]
  15. *-----------------------------------------------------------------------*
  16.  
  17.     ORG    $00    ; Beginning of RAM
  18.  
  19. mpr    rmb    2    ; Multiplier
  20. mpr1    equ    mpr    ;   "          byte 1 (high order)
  21. mpr0    equ    mpr+1    ;   "          byte 0 (low order)
  22.  
  23. mpd    rmb    2    ; Multiplicand
  24. mpd1    equ    mpd    ;   "          byte 1 (high order)
  25. mpd0    equ    mpd+1    ;   "          byte 0 (low order)
  26.  
  27. prod    rmb    4    ; Product
  28. prod3    equ    prod    ;   "          byte 3 (high order)
  29. prod2    equ    prod+1
  30. prod1    equ    prod+2
  31. prod0    equ    prod+3    ;   "          byte 0 (low order)
  32.  
  33. CTR    RMB    1    ; Iteration counter
  34.  
  35.     ORG    $10
  36.  
  37. mpy16    EQU    *
  38.     ldd    #0
  39.     std    prod3
  40.     ldaa    mpr0
  41.     ldab    mpd0
  42.     mul
  43.     std    prod1
  44.     ldaa    mpr0
  45.     ldab    mpd1
  46.     mul
  47.     addd    prod2
  48.     std    prod2
  49.     ldaa    mpr1
  50.     ldab    mpd0
  51.     mul
  52.     addd    prod2
  53.     std    prod2
  54.     rol    prod3
  55.     ldaa    mpr1
  56.     ldab    mpd1
  57.     mul
  58.     addd    prod3
  59.     std    prod3
  60.     rts
  61.