88 lines
1.6 KiB
Plaintext
88 lines
1.6 KiB
Plaintext
/
|
|
/ DJGPP GNU C version for DOS
|
|
/ M. Scott 22/3/98
|
|
/
|
|
|
|
|
|
.file "mrmuldv.c"
|
|
.text
|
|
.globl _muldiv
|
|
_muldiv:
|
|
pushl %ebp
|
|
movl %esp,%ebp
|
|
pushl %ebx
|
|
|
|
|
|
movl 8(%ebp),%eax
|
|
mull 12(%ebp)
|
|
addl 16(%ebp),%eax
|
|
adcl $0,%edx
|
|
|
|
divl 20(%ebp)
|
|
movl 24(%ebp),%ebx
|
|
movl %edx,(%ebx)
|
|
|
|
popl %ebx
|
|
popl %ebp
|
|
ret
|
|
|
|
.globl _muldvm
|
|
_muldvm:
|
|
pushl %ebp
|
|
movl %esp,%ebp
|
|
pushl %ebx
|
|
|
|
movl 8(%ebp),%edx
|
|
movl 12(%ebp),%eax
|
|
divl 16(%ebp)
|
|
|
|
movl 20(%ebp),%ebx
|
|
movl %edx,(%ebx)
|
|
|
|
popl %ebx
|
|
popl %ebp
|
|
ret
|
|
|
|
.globl _muldvd
|
|
_muldvd:
|
|
pushl %ebp
|
|
movl %esp,%ebp
|
|
pushl %ebx
|
|
|
|
movl 8(%ebp),%eax
|
|
mull 12(%ebp)
|
|
addl 16(%ebp),%eax
|
|
adcl $0,%edx
|
|
movl 20(%ebp),%ebx
|
|
movl %eax,(%ebx)
|
|
movl %edx,%eax
|
|
|
|
popl %ebx
|
|
popl %ebp
|
|
ret
|
|
|
|
.globl _muldvd2
|
|
_muldvd2:
|
|
pushl %ebp
|
|
movl %esp,%ebp
|
|
pushl %ebx
|
|
pushl %esi
|
|
|
|
movl 8(%ebp),%eax
|
|
mull 12(%ebp)
|
|
movl 16(%ebp),%ebx
|
|
addl (%ebx),%eax
|
|
adcl $0,%edx
|
|
movl 20(%ebp),%esi
|
|
addl (%esi),%eax
|
|
adcl $0,%edx
|
|
|
|
movl %eax,(%esi)
|
|
movl %edx,(%ebx)
|
|
|
|
popl %esi
|
|
popl %ebx
|
|
popl %ebp
|
|
ret
|
|
|