words/mstar.asm
Jump to Vocabulary
; ( n1 n2 -- d) Arithmetics
; R( -- )
; multiply 2 cells to a double cell
VE_MSTAR:
.db $02, "m*",0
.dw VE_HEAD
.set VE_HEAD = VE_MSTAR
XT_MSTAR:
.dw PFA_MSTAR
PFA_MSTAR:
movw temp0, tosl
loadtos
; result: (temp3*temp1)* 65536 + (temp3*temp0 + temp1*temp2) * 256 + (temp0 * temp2)
; low bytes
mul tosl,temp0
movw zl, r0
clr temp2
clr temp3
; middle bytes
mul tosh, temp0
add zh, r0
adc temp2, r1
adc temp3, zeroh
mul tosl, temp1
add zh, r0
adc temp2, r1
adc temp3, zeroh
mul tosh, temp1
add temp2, r0
adc temp3, r1
movw tosl, temp2
savetos
movw tosl, zl
jmp DO_NEXT
Jump to Vocabulary