Subversion Repositories Kolibri OS

Rev

Rev 2254 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2254 Rev 7128
Line 57... Line 57...
57
;* NumberSymbolsAD - ª®«¨ç¥á⢮ §­ ª®¢ ¯®á«¥           *
57
;* NumberSymbolsAD - ª®«¨ç¥á⢮ §­ ª®¢ ¯®á«¥           *
58
;*                   § ¯ï⮩ (0-17).                   *
58
;*                   § ¯ï⮩ (0-17).                   *
59
;* ‚ë室­ë¥ ¯ à ¬¥âàë:                                 *
59
;* ‚ë室­ë¥ ¯ à ¬¥âàë:                                 *
60
;* Data_String - áâப -१ã«ìâ â.                     *
60
;* Data_String - áâப -१ã«ìâ â.                     *
61
;*******************************************************
61
;*******************************************************
-
 
62
align 4
62
DoubleFloat_to_String:
63
DoubleFloat_to_String:
63
	pushad
64
	pushad
64
	; ¥§ã«ìâ â § ¯¨á뢠âì ¢ áâபã Data_String
65
	; ¥§ã«ìâ â § ¯¨á뢠âì ¢ áâபã Data_String
65
	mov	EDI, Data_String
66
	mov	EDI, Data_String
Line 148... Line 149...
148
	inc ESI
149
	inc ESI
149
	loop .N3
150
	loop .N3
150
	; Žè¨¡ª  - ­¥â §­ ç é¨å æ¨äà
151
	; Žè¨¡ª  - ­¥â §­ ç é¨å æ¨äà
151
	jmp	.Error
152
	jmp	.Error
152
; ‘ª®¯¨à®¢ âì §­ ç éãî ç áâì ç¨á«  ¢ ­ ç «® áâப¨
153
; ‘ª®¯¨à®¢ âì §­ ç éãî ç áâì ç¨á«  ¢ ­ ç «® áâப¨
-
 
154
align 4
153
.N4:	rep movsb
155
.N4:	rep movsb
154
	jmp    .End
156
	jmp    .End
155
 
-
 
156
; Žè¨¡ª 
157
; Žè¨¡ª 
-
 
158
align 4
157
.Error:
159
.Error:
158
	mov	AL,'E'
160
	mov	AL,'E'
159
	stosb
161
	stosb
160
	mov	AL,'R'
162
	mov	AL,'R'
161
	stosb
163
	stosb
Line 163... Line 165...
163
	stosb
165
	stosb
164
	xor	AL,AL
166
	xor	AL,AL
165
	stosb
167
	stosb
166
	jmp	.End
168
	jmp	.End
167
; ¥à¥¯®«­¥­¨¥ à §à來®© á¥âª¨
169
; ¥à¥¯®«­¥­¨¥ à §à來®© á¥âª¨
-
 
170
align 4
168
.Overflow:
171
.Overflow:
169
	mov	AL,'#'
172
	mov	AL,'#'
170
	stosb
173
	stosb
171
	xor	AL,AL
174
	xor	AL,AL
172
	stosb
175
	stosb
173
; Š®­¥æ ¯à®æ¥¤ãàë
176
; Š®­¥æ ¯à®æ¥¤ãàë
-
 
177
align 4
174
.End:
178
.End:
175
	popad
179
	popad
176
	ret
180
	ret
Line 177... Line 181...
177
 
181
 
Line 181... Line 185...
181
;* ‚室­ë¥ ¯ à ¬¥âàë:                               *
185
;* ‚室­ë¥ ¯ à ¬¥âàë:                               *
182
;* Data_String - ç¨á«® ¢ ª®¤¥ ASCII.                *
186
;* Data_String - ç¨á«® ¢ ª®¤¥ ASCII.                *
183
;* ‚ë室­ë¥ ¯ à ¬¥âàë:                              *
187
;* ‚ë室­ë¥ ¯ à ¬¥âàë:                              *
184
;* Data_Double - ç¨á«® ¢ ¤¢®¨ç­®¬ ª®¤¥.             *
188
;* Data_Double - ç¨á«® ¢ ¤¢®¨ç­®¬ ª®¤¥.             *
185
;****************************************************
189
;****************************************************
-
 
190
align 4
186
String_to_DoubleFloat:
191
String_to_DoubleFloat:
187
	pushad
192
	pushad
188
	cld
193
	cld
189
	; Žç¨é ¥¬ Data_BCD 
194
	; Žç¨é ¥¬ Data_BCD 
190
	mov dword [Data_BCD],0
195
	mov dword [Data_BCD],0
Line 200... Line 205...
200
	lodsb
205
	lodsb
201
	cmp	AL,' '
206
	cmp	AL,' '
202
	jne	.ShiftIgnoreEnd
207
	jne	.ShiftIgnoreEnd
203
	loop	.ShiftIgnore
208
	loop	.ShiftIgnore
204
	jmp	.Error
209
	jmp	.Error
-
 
210
align 4
205
.ShiftIgnoreEnd:
211
.ShiftIgnoreEnd:
206
	; à®¢¥à塞 §­ ª ç¨á« 
212
	; à®¢¥à塞 §­ ª ç¨á« 
207
	cmp	AL,'-'
213
	cmp	AL,'-'
208
	jne	.Positive
214
	jne	.Positive
209
	mov	[Data_Sign],80h
215
	mov	[Data_Sign],80h
Line 220... Line 226...
220
	mov	[Data_Flag],1
226
	mov	[Data_Flag],1
221
	lodsb
227
	lodsb
222
	cmp	AL,0	      ;ª®­¥æ áâப¨?
228
	cmp	AL,0	      ;ª®­¥æ áâப¨?
223
	jne	.NotDot
229
	jne	.NotDot
224
	jmp	.ASCIItoBCDConversionEnd
230
	jmp	.ASCIItoBCDConversionEnd
-
 
231
align 4
225
.NotDot:
232
.NotDot:
226
	; “¢¥«¨ç¨âì ­  1 §­ ç¥­¨¥ ¯®§¨æ¨¨ â®çª¨,
233
	; “¢¥«¨ç¨âì ­  1 §­ ç¥­¨¥ ¯®§¨æ¨¨ â®çª¨,
227
	; ¥á«¨ ®­  ¥é¥ ­¥ ¢áâà¥ç « áì
234
	; ¥á«¨ ®­  ¥é¥ ­¥ ¢áâà¥ç « áì
228
	cmp	[Data_Flag],0
235
	cmp	[Data_Flag],0
229
	jnz	.Figures
236
	jnz	.Figures
Line 282... Line 289...
282
	add	EBX, MConst
289
	add	EBX, MConst
283
	fdiv	qword [EBX] ;à §¤¥«¨âì ­  ª®­áâ ­âã
290
	fdiv	qword [EBX] ;à §¤¥«¨âì ­  ª®­áâ ­âã
284
.NoDiv:; ‚ë£à㧨âì ç¨á«® ¢ ¤¢®¨ç­®¬ ä®à¬ â¥
291
.NoDiv:; ‚ë£à㧨âì ç¨á«® ¢ ¤¢®¨ç­®¬ ä®à¬ â¥
285
	fstp	[Data_Double]
292
	fstp	[Data_Double]
286
	jmp	.End
293
	jmp	.End
287
 
294
align 4
288
.Error:; à¨ «î¡®© ®è¨¡ª¥ ®¡­ã«¨âì १ã«ìâ â
295
.Error:; à¨ «î¡®© ®è¨¡ª¥ ®¡­ã«¨âì १ã«ìâ â
289
	fldz	;§ ­¥á⨠­®«ì á á⥪ ᮯà®æ¥áá®à 
296
	fldz	;§ ­¥á⨠­®«ì á á⥪ ᮯà®æ¥áá®à 
290
	fstp	[Data_Double]
297
	fstp	[Data_Double]
291
.End:
298
.End:
292
	popad
299
	popad
293
	ret
300
	ret
Line 294... Line 301...
294
 
301
 
295
align 4
302
align 4
296
proc str_cat, str1:dword, str2:dword
-
 
297
	push eax ecx edi esi
303
proc str_cat uses eax ecx edi esi, str1:dword, str2:dword
298
	mov esi,dword[str2]
304
	mov esi,dword[str2]
299
	stdcall str_len,esi
305
	stdcall str_len,esi
300
	mov ecx,eax
306
	mov ecx,eax
301
	inc ecx
307
	inc ecx
302
	mov edi,dword[str1]
308
	mov edi,dword[str1]
303
	stdcall str_len,edi
309
	stdcall str_len,edi
304
	add edi,eax
310
	add edi,eax
305
	cld
311
	cld
306
	repne movsb
-
 
307
	pop esi edi ecx eax
312
	repne movsb
308
	ret
313
	ret
Line 309... Line 314...
309
endp
314
endp
310
 
315
 
Line 320... Line 325...
320
		jmp @b
325
		jmp @b
321
	@@:
326
	@@:
322
	sub eax,[str1]
327
	sub eax,[str1]
323
	ret
328
	ret
324
endp
329
endp
325
330
 
-
 
331
align 4
-
 
332
proc String_crop_0 uses eax ebx ecx edi
-
 
333
	mov edi,Data_String
-
 
334
	mov al,'.'
-
 
335
	mov ecx,32
-
 
336
	repne scasb
-
 
337
	mov ebx,edi
-
 
338
	mov edi,Data_String
-
 
339
	xor al,al
-
 
340
	mov ecx,32
-
 
341
	repne scasb
-
 
342
	cmp ebx,edi
-
 
343
	jg .end_f
-
 
344
	dec edi
-
 
345
	.cycle0:
-
 
346
		dec edi
-
 
347
		cmp edi,Data_String
-
 
348
		jle .end_f
-
 
349
		cmp byte[edi],'0'
-
 
350
		jne .cycle0end
-
 
351
		mov byte[edi],0
-
 
352
		jmp .cycle0
-
 
353
	.cycle0end:
-
 
354
	cmp byte[edi],'.'
-
 
355
	jne .end_f
-
 
356
		mov byte[edi],0
-
 
357
	.end_f:
-
 
358
	ret
-
 
359
endp
-
 
360
326
361