source: xtideuniversalbios/trunk/Assembly_Library/Src/Util/Registers.asm @ 149

Last change on this file since 149 was 149, checked in by aitotat, 13 years ago

Changes to Assembly Library:

  • Added pointer normalization functions
File size: 2.2 KB
Line 
1; Project name  :   Assembly Library
2; Description   :   Functions for register operations.
3
4
5; Section containing code
6SECTION .text
7
8;--------------------------------------------------------------------
9; Registers_ExchangeDSSIwithESDI
10;   Parameters
11;       Nothing
12;   Returns:
13;       DS:SI and ES:DI are exchanged.
14;   Corrupts registers:
15;       Nothing
16;--------------------------------------------------------------------
17ALIGN JUMP_ALIGN
18Registers_ExchangeDSSIwithESDI:
19    push    ds
20    push    es
21    pop     ds
22    pop     es
23    xchg    si, di
24    ret
25
26
27;--------------------------------------------------------------------
28; Registers_CopySSBPtoESDI
29; Registers_CopySSBPtoDSSI
30; Registers_CopyDSSItoESDI
31; Registers_CopyESDItoDSSI
32;   Parameters
33;       Nothing
34;   Returns:
35;       Copies farm pointer to different segment/pointer register pair
36;   Corrupts registers:
37;       Nothing
38;--------------------------------------------------------------------
39ALIGN JUMP_ALIGN
40Registers_CopySSBPtoESDI:
41    COPY_SSBP_TO_ESDI
42    ret
43
44%ifndef EXCLUDE_FROM_XTIDE_UNIVERSAL_BIOS
45ALIGN JUMP_ALIGN
46Registers_CopySSBPtoDSSI:
47    COPY_SSBP_TO_DSSI
48    ret
49
50ALIGN JUMP_ALIGN
51Registers_CopyDSSItoESDI:
52    COPY_DSSI_TO_ESDI
53    ret
54
55ALIGN JUMP_ALIGN
56Registers_CopyESDItoDSSI:
57    COPY_ESDI_to_DSSI
58    ret
59%endif
60
61
62;--------------------------------------------------------------------
63; Registers_NormalizeESSI
64; Registers_NormalizeESDI
65;   Parameters
66;       DS:SI or ES:DI: Ptr to normalize
67;   Returns:
68;       DS:SI or ES:DI: Normalized pointer
69;   Corrupts registers:
70;       AX, CX
71;--------------------------------------------------------------------
72ALIGN JUMP_ALIGN
73Registers_NormalizeESSI:
74    NORMALIZE_FAR_POINTER es, si, ax, cx
75    ret
76
77ALIGN JUMP_ALIGN
78Registers_NormalizeESDI:
79    NORMALIZE_FAR_POINTER es, di, ax, cx
80    ret
81
82
83;--------------------------------------------------------------------
84; Registers_SetZFifNullPointerInDSSI (commented to save bytes)
85;   Parameters
86;       DS:SI:  Far pointer
87;   Returns:
88;       ZF:     Set if NULL pointer in DS:SI
89;   Corrupts registers:
90;       Nothing
91;--------------------------------------------------------------------
92;ALIGN JUMP_ALIGN
93;Registers_SetZFifNullPointerInDSSI:
94;   push    ax
95;   mov     ax, ds
96;   or      ax, si
97;   pop     ax
98;   ret
Note: See TracBrowser for help on using the repository browser.