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

Last change on this file since 376 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.