58 lines
1.4 KiB
C
58 lines
1.4 KiB
C
/*
|
|
* Borland C++ 32-bit compiler (BCC32). Use with mirdef.h32
|
|
* Uses inline assembly feature. Suitable for Win32 Apps
|
|
* Also compatible with Microsoft Visual C++ 32-bit compiler
|
|
*/
|
|
|
|
#define ASM _asm
|
|
|
|
int muldiv(a,b,c,m,rp)
|
|
int a,b,c,m,*rp;
|
|
{
|
|
ASM mov eax,DWORD PTR a
|
|
ASM mul DWORD PTR b
|
|
ASM add eax,DWORD PTR c
|
|
ASM adc edx,0h
|
|
ASM div DWORD PTR m
|
|
ASM mov ebx,DWORD PTR rp
|
|
ASM mov [ebx],edx
|
|
}
|
|
|
|
int muldvm(a,c,m,rp)
|
|
int a,c,m,*rp;
|
|
{
|
|
ASM mov edx,DWORD PTR a
|
|
ASM mov eax,DWORD PTR c
|
|
ASM div DWORD PTR m
|
|
ASM mov ebx,DWORD PTR rp
|
|
ASM mov [ebx],edx
|
|
}
|
|
|
|
int muldvd(a,b,c,rp)
|
|
int a,b,c,*rp;
|
|
{
|
|
ASM mov eax,DWORD PTR a
|
|
ASM mul DWORD PTR b
|
|
ASM add eax,DWORD PTR c
|
|
ASM adc edx,0h
|
|
ASM mov ebx,DWORD PTR rp
|
|
ASM mov [ebx],eax
|
|
ASM mov eax,edx
|
|
}
|
|
|
|
void muldvd2(a,b,c,rp)
|
|
int a,b,*c,*rp;
|
|
{
|
|
ASM mov eax,DWORD PTR a
|
|
ASM mul DWORD PTR b
|
|
ASM mov ebx,DWORD PTR c
|
|
ASM add eax,[ebx]
|
|
ASM adc edx,0h
|
|
ASM mov esi,DWORD PTR rp
|
|
ASM add eax,[esi]
|
|
ASM adc edx,0h
|
|
ASM mov [esi],eax
|
|
ASM mov [ebx],edx
|
|
}
|
|
|