base:16bit_multiplication_32-bit_product
This is an old revision of the document!
16-bit multiply with 32-bit product
;16-bit multiply with 32-bit product ;took from 6502.org multiplier = $f7 multiplicand = $f9 product = $fb mult16 lda #$00 sta product+2 ; clear upper bits of product sta product+3 ldx #$10 ; set binary count to 16 shift_r lsr multiplier+1 ; divide multiplier by 2 ror multiplier bcc rotate_r lda product+2 ; get upper half of product and add multiplicand clc adc multiplicand sta product+2 lda product+3 adc multiplicand+1 rotate_r ror ; rotate partial product sta product+3 ror product+2 ror product+1 ror product dex bne shift_r rts
base/16bit_multiplication_32-bit_product.1429237814.txt.gz · Last modified: 2015-04-17 04:30 by 127.0.0.1