Appendix A: System Routines — Direct Floating Point Operations
379
TI
-
89 / TI
-
92 Plus Developer Guide
Not for Distribution
Beta Version January 26, 2001
bcdmul
Declaration:
BCD16
bcdmul
(BCD16
a
, BCD16
b
)
Category(ies):
Direct Floating Point Operations
Description:
Calculate the product of two TI binary-code decimal floating-point numbers.
This routine performs the same function as the C “
∗
” operator on BCD16
values. This routine is provided as a convenience for assembly language
programs.
Inputs:
a
,
b
— Two BCD16 numbers to multiply.
Outputs:
Returns
a
∗
b
as a BCD16 number.
Assumptions:
None
Side Effects:
None
Availability:
All versions of the TI
-
89 / TI
-
92 Plus.
TI
-
89 / TI
-
92 Plus
Differences:
None
See Also: bcdadd, bcdbcd, bcdcmp, bcddiv, bcdlong, bcdneg, bcdsub
Example:
bcdresult = -10
a = -20
b = -30
prod = -40
.
.
.
move.l b(a6),-(sp) ;push b (a 10-byte BCD16 value)
move.l b+4(a6),-(sp)
move.w b+8(a6),-(sp)
move.l a(a6),-(sp) ;push a
move.l a+4(a6),-(sp)
move.w a+8(a6),-(sp)
move.l bcdmul(a2),a0 ;assumes a2 -> jump table
jsr (a0) ;call bcdmul(a, b)
lea 20(sp),sp ;pop parameters
; BCD16 routine value is always at –10(a6)
move.l bcdresult(a6),prod(a6)
move.l bcdresult+4(a6),prod+4(a6)
move.w bcdresult+8(a6),prod+8(a6)