Rev 8140 | Rev 8919 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 8140 | Rev 8824 | ||
---|---|---|---|
Line -... | Line 1... | ||
- | 1 | include "..\..\..\develop\info3ds\info_fun_float.inc" |
|
- | 2 | ||
- | 3 | align 4 |
|
- | 4 | proc @DoubleToStr$qduso uses esi edi |
|
- | 5 | cld |
|
- | 6 | lea esi,[esp+12] |
|
- | 7 | mov edi,Data_Double |
|
- | 8 | movsd |
|
- | 9 | movsd |
|
- | 10 | mov ax,[esp+20] |
|
- | 11 | mov [NumberSymbolsAD],ax |
|
- | 12 | call DoubleFloat_to_String |
|
- | 13 | cmp dword[esp+24],0 |
|
- | 14 | je @f |
|
- | 15 | call String_crop_0 |
|
- | 16 | @@: |
|
- | 17 | mov eax,Data_String |
|
- | 18 | ret |
|
- | 19 | endp |
|
- | 20 | ||
- | 21 | align 4 |
|
- | 22 | proc @StrToDouble$qpc uses esi edi |
|
- | 23 | cld |
|
- | 24 | mov edi,Data_String |
|
- | 25 | mov esi,[esp+12] |
|
- | 26 | mov ecx,32 |
|
- | 27 | repnz movsb |
|
- | 28 | call String_to_DoubleFloat |
|
- | 29 | fld qword[Data_Double] |
|
- | 30 | ret |
|
- | 31 | endp |
|
- | 32 | ||
- | 33 | ;input: |
|
- | 34 | ; *str - указатель на строку, число должно быть в 10 или 16 ричном виде |
|
- | 35 | ;output: |
|
- | 36 | ; eax - число |
|
- | 37 | align 4 |
|
- | 38 | proc @StrToInt$qpc uses ebx esi |
|
- | 39 | xor eax,eax |
|
- | 40 | xor ebx,ebx |
|
- | 41 | mov esi,[esp+12] |
|
- | 42 | ||
- | 43 | ;на случай если перед числом находятся пробелы |
|
- | 44 | @@: |
|
- | 45 | cmp byte[esi],' ' |
|
- | 46 | jne @f |
|
- | 47 | inc esi |
|
- | 48 | jmp @b |
|
- | 49 | @@: |
|
- | 50 | ||
- | 51 | ;определение отрицательных чисел |
|
- | 52 | xor ecx,ecx |
|
- | 53 | inc ecx |
|
- | 54 | cmp byte[esi],'-' |
|
- | 55 | jne @f |
|
- | 56 | dec ecx |
|
- | 57 | inc esi |
|
- | 58 | @@: |
|
- | 59 | ||
- | 60 | cmp word[esi],'0x' |
|
- | 61 | je .load_digit_16 |
|
- | 62 | ||
- | 63 | .load_digit_10: ;считывание 10-тичных цифр |
|
- | 64 | mov bl,byte[esi] |
|
- | 65 | cmp bl,'0' |
|
- | 66 | jl @f |
|
- | 67 | cmp bl,'9' |
|
- | 68 | jg @f |
|
- | 69 | sub bl,'0' |
|
- | 70 | imul eax,10 |
|
- | 71 | add eax,ebx |
|
- | 72 | inc esi |
|
- | 73 | jmp .load_digit_10 |
|
- | 74 | jmp @f |
|
- | 75 | ||
- | 76 | .load_digit_16: ;считывание 16-ричных цифр |
|
- | 77 | add esi,2 |
|
- | 78 | .cycle_16: |
|
- | 79 | mov bl,byte[esi] |
|
- | 80 | cmp bl,'0' |
|
- | 81 | jl @f |
|
- | 82 | cmp bl,'f' |
|
- | 83 | jg @f |
|
- | 84 | cmp bl,'9' |
|
- | 85 | jle .us1 |
|
- | 86 | cmp bl,'A' |
|
- | 87 | jl @f ;отсеиваем символы >'9' и <'A' |
|
- | 88 | .us1: ;составное условие |
|
- | 89 | cmp bl,'F' |
|
- | 90 | jle .us2 |
|
- | 91 | cmp bl,'a' |
|
- | 92 | jl @f ;отсеиваем символы >'F' и <'a' |
|
- | 93 | sub bl,32 ;переводим символы в верхний регистр, для упрощения их последущей обработки |
|
- | 94 | .us2: ;составное условие |
|
- | 95 | sub bl,'0' |
|
- | 96 | cmp bl,9 |
|
- | 97 | jle .cor1 |
|
- | 98 | sub bl,7 ;convert 'A' to '10' |
|
- | 99 | .cor1: |
|
- | 100 | shl eax,4 |
|
- | 101 | add eax,ebx |
|
- | 102 | inc esi |
|
- | 103 | jmp .cycle_16 |
|
- | 104 | @@: |
|
- | 105 | or ecx,ecx ;если число отрицательное |
|
- | 106 | jnz @f |
|
- | 107 | sub ecx,eax |
|
- | 108 | mov eax,ecx |
|
- | 109 | @@: |
|
- | 110 | ret |
|
- | 111 | endp |
|
- | 112 | ||
- | 113 | align 4 |
|
1 | proc @Kolibri@StrLen$qpxc uses edi |
114 | proc @strlen$qpxc uses edi |
2 | cld |
115 | cld |
3 | mov edi,[esp+8] |
116 | mov edi,[esp+8] |
4 | mov ecx,-1 |
117 | mov ecx,-1 |
5 | xor al,al |
118 | xor al,al |
6 | repnz scas byte [edi] |
119 | repnz scasb |
7 | not ecx |
120 | not ecx |
8 | lea eax,[ecx-1] |
121 | lea eax,[ecx-1] |
9 | ret |
122 | ret |
10 | endp |
123 | endp |
Line -... | Line 124... | ||
- | 124 | ||
11 | 125 | align 4 |
|
12 | proc @Kolibri@StrCopy$qpcpxc uses esi edi |
126 | proc @strcpy$qpcpxc uses esi edi |
13 | cld |
127 | cld |
14 | mov edi,[esp+16] |
128 | mov edi,[esp+16] |
15 | mov ecx,-1 |
129 | mov ecx,-1 |
16 | mov esi,edi |
130 | mov esi,edi |
17 | xor al,al |
131 | xor al,al |
18 | repnz scas byte [edi] |
132 | repnz scasb |
19 | not ecx |
133 | not ecx |
20 | mov edi,[esp+12] |
134 | mov edi,[esp+12] |
21 | mov edx,ecx |
135 | mov edx,ecx |
22 | mov eax,edi |
136 | mov eax,edi |
23 | shr ecx,2 |
137 | shr ecx,2 |
24 | rep movs dword [edi],[esi] |
138 | rep movsd |
25 | mov ecx,edx |
139 | mov ecx,edx |
26 | and ecx,3 |
140 | and ecx,3 |
27 | rep movs byte [edi],[esi] |
141 | rep movsb |
28 | ret |
142 | ret |
Line -... | Line 143... | ||
- | 143 | endp |
|
29 | endp |
144 | |
30 | 145 | align 4 |
|
31 | proc @Kolibri@MemCopy$qpvpxvui uses esi edi |
146 | proc @memcpy$qpvpxvui uses esi edi |
32 | cld |
147 | cld |
33 | mov edi,[esp+12] |
148 | mov edi,[esp+12] |
34 | mov eax,edi |
149 | mov eax,edi |
35 | mov ecx,[esp+20] |
150 | mov ecx,[esp+20] |
36 | mov esi,[esp+16] |
151 | mov esi,[esp+16] |
37 | mov edx,ecx |
152 | mov edx,ecx |
38 | shr ecx,2 |
153 | shr ecx,2 |
39 | rep movs dword [edi],[esi] |
154 | rep movsd |
40 | mov ecx,edx |
155 | mov ecx,edx |
41 | and ecx,3 |
156 | and ecx,3 |
42 | rep movs byte [edi],[esi] |
157 | rep movsb |
Line -... | Line 158... | ||
- | 158 | ret |
|
43 | ret |
159 | endp |
44 | endp |
160 | |
45 | 161 | align 4 |
|
46 | proc @Kolibri@MemSet$qpvcui uses edi |
162 | proc @memset$qpvcui uses edi |
47 | cld |
163 | cld |
48 | mov edi,[esp+8] |
164 | mov edi,[esp+8] |
49 | mov al,[esp+12] |
165 | mov al,[esp+12] |
50 | mov ah,al |
166 | mov ah,al |
51 | mov dx,ax |
167 | mov dx,ax |
52 | shl eax,16 |
168 | shl eax,16 |
53 | mov ax,dx |
169 | mov ax,dx |
54 | mov ecx,[esp+16] |
170 | mov ecx,[esp+16] |
55 | mov edx,ecx |
171 | mov edx,ecx |
56 | shr ecx,2 |
172 | shr ecx,2 |
57 | rep stos dword [edi] |
173 | rep stosd |
58 | mov ecx,edx |
174 | mov ecx,edx |
59 | and ecx,3 |
175 | and ecx,3 |
60 | rep stos byte [edi] |
176 | rep stosb |
Line -... | Line 177... | ||
- | 177 | mov eax,[esp+4] |
|
- | 178 | ret |
|
- | 179 | endp |
|
- | 180 | ||
- | 181 | align 4 |
|
- | 182 | proc @strcmp$qpxct1 uses esi edi |
|
- | 183 | cld |
|
- | 184 | xor eax,eax |
|
- | 185 | mov edi,[esp+16] |
|
- | 186 | mov esi,edi |
|
- | 187 | mov ecx,-1 |
|
- | 188 | repne scasb |
|
- | 189 | not ecx |
|
- | 190 | mov edi,esi |
|
- | 191 | mov esi,[esp+12] |
|
- | 192 | repe cmpsb |
|
- | 193 | mov al,[esi-1] |
|
- | 194 | movzx edx,byte[edi-1] |
|
- | 195 | sub eax,edx |
|
- | 196 | ret |
|
- | 197 | endp |
|
- | 198 | ||
- | 199 | align 4 |
|
- | 200 | proc @strchr$qpxci uses edi |
|
- | 201 | mov edi,[esp+8] |
|
- | 202 | mov edx,edi |
|
- | 203 | mov ecx,-1 |
|
- | 204 | xor eax,eax |
|
- | 205 | cld |
|
- | 206 | repne scasb |
|
- | 207 | not ecx |
|
- | 208 | mov edi,edx |
|
- | 209 | mov al,[esp+12] |
|
- | 210 | repne scasb |
|
- | 211 | jnz @f |
|
- | 212 | lea eax,[edi-1] |
|
- | 213 | ret |
|
- | 214 | @@: |
|
- | 215 | xor eax,eax |
|
- | 216 | ret |
|
- | 217 | endp |
|
- | 218 | ||
- | 219 | align 4 |
|
- | 220 | proc @strstr$qpxct1 uses ebx esi edi |
|
- | 221 | xor eax,eax |
|
- | 222 | mov esi,[esp+16] |
|
- | 223 | test esi,esi |
|
- | 224 | je .not_f |
|
- | 225 | mov edi,[esp+20] |
|
- | 226 | test edi,edi |
|
- | 227 | je .not_f |
|
- | 228 | mov edx,edi |
|
- | 229 | mov ecx,-1 |
|
- | 230 | cld |
|
- | 231 | repne scasb |
|
- | 232 | not ecx |
|
- | 233 | mov ebx,ecx ;ebx = strlen(str2) |
|
- | 234 | align 4 |
|
- | 235 | .cycle: |
|
- | 236 | cmp byte[esi],0 |
|
- | 237 | je .not_f |
|
- | 238 | mov edi,edx |
|
- | 239 | push esi |
|
- | 240 | mov ecx,ebx |
|
- | 241 | repe cmpsb |
|
- | 242 | pop esi |
|
- | 243 | inc esi |
|
- | 244 | cmp byte[edi-1],0 |
|
- | 245 | jne .cycle |
|
- | 246 | ||
- | 247 | lea eax,[esi-1] |
|
- | 248 | .not_f: |
|
61 | mov eax,[esp+4] |
249 | ret |
62 | ret |
250 | endp |
63 | endp |
251 | |
64 | 252 | align 4 |
|
65 | proc __ftol |
253 | proc __ftol |
Line 77... | Line 265... | ||
77 | mov edx,[esp+4] |
265 | mov edx,[esp+4] |
78 | add esp,12 |
266 | add esp,12 |
79 | ret |
267 | ret |
80 | endp |
268 | endp |
Line -... | Line 269... | ||
- | 269 | ||
81 | 270 | align 4 |
|
82 | proc @Kolibri@Floor$qd |
271 | proc @floor$qd |
83 | fld qword [esp+4] |
272 | fld qword [esp+4] |
84 | mov ax,[esp+10] |
273 | mov ax,[esp+10] |
85 | shl ax,1 |
274 | shl ax,1 |
86 | cmp ax,0x8680 |
275 | cmp ax,0x8680 |
Line 101... | Line 290... | ||
101 | fldcw word [esp] |
290 | fldcw word [esp] |
102 | add esp,2 |
291 | add esp,2 |
103 | .floor_end: |
292 | .floor_end: |
104 | ret |
293 | ret |
105 | endp |
294 | endp'a' |
106 | - |