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

Last change on this file since 177 was 149, checked in by Tomi Tilli, 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.