1 /*
2 * Borland C++ 32-bit compiler (BCC32). Use with mirdef.h32
3 * Uses inline assembly feature. Suitable for Win32 Apps
4 * Also compatible with Microsoft Visual C++ 32-bit compiler
5 */
6
7 #define ASM _asm
8
muldiv(a,b,c,m,rp)9 int muldiv(a,b,c,m,rp)
10 int a,b,c,m,*rp;
11 {
12 ASM mov eax,DWORD PTR a
13 ASM mul DWORD PTR b
14 ASM add eax,DWORD PTR c
15 ASM adc edx,0h
16 ASM div DWORD PTR m
17 ASM mov ebx,DWORD PTR rp
18 ASM mov [ebx],edx
19 }
20
muldvm(a,c,m,rp)21 int muldvm(a,c,m,rp)
22 int a,c,m,*rp;
23 {
24 ASM mov edx,DWORD PTR a
25 ASM mov eax,DWORD PTR c
26 ASM div DWORD PTR m
27 ASM mov ebx,DWORD PTR rp
28 ASM mov [ebx],edx
29 }
30
muldvd(a,b,c,rp)31 int muldvd(a,b,c,rp)
32 int a,b,c,*rp;
33 {
34 ASM mov eax,DWORD PTR a
35 ASM mul DWORD PTR b
36 ASM add eax,DWORD PTR c
37 ASM adc edx,0h
38 ASM mov ebx,DWORD PTR rp
39 ASM mov [ebx],eax
40 ASM mov eax,edx
41 }
42
muldvd2(a,b,c,rp)43 void muldvd2(a,b,c,rp)
44 int a,b,*c,*rp;
45 {
46 ASM mov eax,DWORD PTR a
47 ASM mul DWORD PTR b
48 ASM mov ebx,DWORD PTR c
49 ASM add eax,[ebx]
50 ASM adc edx,0h
51 ASM mov esi,DWORD PTR rp
52 ASM add eax,[esi]
53 ASM adc edx,0h
54 ASM mov [esi],eax
55 ASM mov [ebx],edx
56 }
57
58