Thanks all of you for your participation and interesting solutions. Most of them supersede mine, as they are shorter, faster and accept a wider range of operands, exactly what I expected them to be. Here are my solutions:

00 { 77-Byte Prgm }This will accept two numbers in the range [1000..9999] and give their product.

01>LBL "MLTA"

02 0

03 0.099

04 Rv

05>LBL 00

06 STO IND ST T

07 RCL+ ST Y

08 ISG ST T

09 GTO 00

10 RCL ST Z

11 CLA

12 AIP

13 XEQ 02

14 XEQ 02

15 RCL IND ST Y

16 RCL IND ST Y

17 1.1

18 Rv

19>LBL 01

20 RCL+ ST Y

21 ISG ST T

22 GTO 01

23 RTN

24>LBL 02

25 ATOX

26 RCL+ ST X

27 LASTX

28 -3

29 ROTXY

30 +

31 ATOX

32 +

33 528

34 -

35 END

Examples:

1234 ENTER 5678 XEQ MLTA --> 7,006,652Here is an equivalent QBASIC program:9999 ENTER XEQ MLTA --> 99,980,001

CLS

DEFINT A-D, I

DEFDBL S

DIM M(100)

INPUT A, B

C = VAL(MID$(STR$(B), 2, 2)): REM C = B \ 100

D = VAL(RIGHT$(STR$(B), 2)): REM D = B - 100 * C

S = 0

FOR I = 0 TO 99

M(I) = S

S = S + A

NEXT I

S = M(D)

FOR I = 1 TO 100

S = S + M(C)

NEXT I

PRINT S

END? 1234,5678

7006652

The next program is an implementation of the Russian Peasant Multiplication Method:

00 { 52-Byte Prgm }

01>LBL "MLTB"

02 0

03 STO 00

04 Rv

05>LBL 00

06 0

07 BIT?

08 XEQ 01

09 BASE+

10 X=0?

11 GTO 02

12 1

13 ROTXY

14 X<>Y

15 -1

16 ROTXY

17 X<>Y

18 GTO 00

19>LBL 01

20 NOT

21 BASE+

22 X<>Y

23 STO+ 00

24 X<>Y

25 0

26 RTN

27>LBL 02

28 RCL 00

29 .END.

This will give the product of any two positive integer numbers, as long as the result doesn't exceed 2^{36}-1.

Examples:

12 ENTER 3456789 XEQ MLTB --> 41,481,4681234 ENTER 5678 XEQ MLTB --> 7,006,652

262143 ENTER XEQ MLTB --> 68,718,952,449

Here is a variation of the first program, in case one of the operands is allowed to be entered as two separate two-digit numbers, as proposed somewhere else in this thread:

00 { 47-Byte Prgm }

01>LBL "MLTC"

02 STO 01

03 0

04 STO 00

05 CLX

06 2.099

07 Rv

08>LBL 00

09 RCL+ 01

10 STO IND ST T

11 ISG ST T

12 GTO 00

13 RCL IND ST Z

14 RCL IND ST Z

15 1.1

16 Rv

17>LBL 01

18 RCL+ ST Y

19 ISG ST T

20 GTO 01

21 END

Examples:

12 ENTER 34 ENTER 5678 XEQ MLTC --> 7,006,65299 ENTER ENTER 9999 XEQ MLTC --> 99,980,001

Gerson.

P.S.: Programs #1 and #3 require the allocation of 100 numbered registers:

Shift MODES \/ SIZE 0100

*Edited: 27 Feb 2012, 5:39 p.m. *