source: xtideuniversalbios/trunk/Assembly_Library/Src/Util/Math.asm@ 411

Last change on this file since 411 was 376, checked in by gregli@…, 12 years ago

WIDE checkin... Added copyright and license information to sorce files, as per the GPL instructions for usage.

File size: 2.1 KB
Line 
1; Project name : Assembly Library
2; Description : Functions for register operations.
3
4;
5; XTIDE Universal BIOS and Associated Tools
6; Copyright (C) 2009-2010 by Tomi Tilli, 2011-2012 by XTIDE Universal BIOS Team.
7;
8; This program is free software; you can redistribute it and/or modify
9; it under the terms of the GNU General Public License as published by
10; the Free Software Foundation; either version 2 of the License, or
11; (at your option) any later version.
12;
13; This program is distributed in the hope that it will be useful,
14; but WITHOUT ANY WARRANTY; without even the implied warranty of
15; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16; GNU General Public License for more details.
17; Visit http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
18;
19
20
21; Section containing code
22SECTION .text
23
24;--------------------------------------------------------------------
25; Math_DivQWatSSBPbyCX
26; Parameters:
27; [SS:BP]: 64-bit unsigned divident
28; CX: 16-bit unsigned divisor
29; Returns:
30; [SS:BP]: 64-bit unsigned quotient
31; DX: 16-bit unsigned remainder
32; Corrupts registers:
33; AX
34;--------------------------------------------------------------------
35%ifndef EXCLUDE_FROM_XTIDECFG ; Not used in XTIDECFG
36ALIGN JUMP_ALIGN
37Math_DivQWatSSBPbyCX:
38 xor dx, dx
39 mov ax, [bp+6] ; Load highest divident WORD to DX:AX
40 div cx
41 mov [bp+6], ax ; Store quotient
42
43 mov ax, [bp+4]
44 div cx
45 mov [bp+4], ax
46
47 mov ax, [bp+2]
48 div cx
49 mov [bp+2], ax
50
51 mov ax, [bp]
52 div cx
53 mov [bp], ax
54 ret
55%endif
56
57
58;--------------------------------------------------------------------
59; Math_DivDXAXbyCX
60; Parameters:
61; DX:AX: 32-bit unsigned divident
62; CX: 16-bit unsigned divisor
63; Returns:
64; DX:AX: 32-bit unsigned quotient
65; BX: 16-bit unsigned remainder
66; Corrupts registers:
67; Nothing
68;--------------------------------------------------------------------
69%ifndef EXCLUDE_FROM_XTIDE_UNIVERSAL_BIOS OR EXCLUDE_FROM_XTIDECFG
70ALIGN JUMP_ALIGN
71Math_DivDXAXbyCX: ; This is currently unused (dead code)
72 xor bx, bx
73 xchg bx, ax
74 xchg dx, ax
75 div cx
76 xchg ax, bx
77 div cx
78 xchg dx, bx
79 ret
80%endif
Note: See TracBrowser for help on using the repository browser.