· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.ASSEMBLER —› dec2ascii, ascii2dec

Посл.отвђт Сообщенiе


Дата: Авг 19, 2003 15:09:49

dec2ascii, ascii2dec


Дата: Авг 19, 2003 15:10:38

Kak mne perevesti dec v ascii i obratno?


Дата: Авг 19, 2003 15:43:54

DyC
Смотри MASM32LIB


Дата: Авг 20, 2003 05:25:30

А я могу прислать свои алгоритмы. Вроде у меня даже есть для чисел с фиксированной точкой
ksn78_ktm77@mail.ru


Дата: Окт 1, 2003 07:50:17 · Поправил: pooh

;-------------- N U M _ T O _ D E C -------------
;/***********************************************
;*	FUNCTION NUM_TO_DEC			*
;*	CONVERTS VALUE TO ASCII DECIMAL STRING 	*
;*	EAX: NUMBER TO CONVERT			*
;*	EDX: OFFSET STRING FOR RESULT		*
;*	STRING MUST BE 32 BYTES LONG!!!		*
;*	RETURNS OFFSET OF THIS STRING IN EAX	*
;***********************************************/
num_to_dec	proc
	push	ebx
	push	ecx
	push	edx

	mov	ebx,edx
	mov	ecx,31
dec_clear_loop:
	mov	byte ptr[ecx+edx],0
	loop	dec_clear_loop
	mov	byte ptr[ecx+edx],0

	add	ebx,30
	mov	ecx,10

num_to_dec_loop:

	xor	edx,edx
	div	ecx
	add	edx,'0'
	mov	byte ptr [ebx],dl
	dec	ebx
	test	eax,eax
	jnz	num_to_dec_loop

	pop	eax
	dec	eax

num_to_dec_find_beginning:
	inc	eax
	cmp	byte ptr [eax],0
	je	num_to_dec_find_beginning

	pop	ecx
	pop	ebx

	ret
num_to_dec	endp
;-------------- N U M _ T O _ D E C -------------

;-------------- D E C _ T O _ N U M -------------
;/***********************************************
;*	FUNCTION DEC_TO_NUM                     *
;*	CONVERTS ASCII DECIMAL STRING TO VALUE 	*
;*	EAX: OFFSET STRING			*
;*	RETURNS RESULT IN EAX			*
;*	RETURNS ERROR_CODE IN EDX IF ERROR	*
;************************************************/
dec_to_num	proc
	push	ebx
	mov	ebx,eax			;BX: string offset
	xor	eax,eax			;clear it for result

dec_check_loop:
	cmp	byte ptr [ebx],0	;if end of string
	je	dec_end_check		;go to exit

	cmp	byte ptr [ebx],'0'	;fool protect
	jb	dec_out_of_range
	cmp	byte ptr [ebx],'9'
	ja	dec_out_of_range

	mov	edx,eax			;\
	shl	edx,3           	; \
;	jnc	dec_no_overflow0	;  \
;	call	overflow_warning	;   \
;dec_no_overflow0:              	;    \MUL 10
	shl	eax,1           	;    /
;	jnc	dec_no_overflow1	;   /
;	call	overflow_warning	;  /
;dec_no_overflow1:              	; /
	add	eax,edx         	;/

;	jnc	dec_no_overflow2
;	call	overflow_warning
;dec_no_overflow2:

	xor	edx,edx
	mov	dl, byte ptr [ebx]	;DL: next simbol
	sub	edx,'0'			;set it to value
	add	eax,edx			;add to result
;	jnc	dec_no_overflow3
;	call	overflow_warning
;dec_no_overflow3:

	inc	ebx			;set pointer to next simbol
	jmp	dec_check_loop

dec_end_check:
	xor	edx,edx			;no error_code
	pop	ebx			;restore
	ret
dec_out_of_range:
	mov	edx,ERROR_CODE
	xor	eax,eax
	pop	ebx			;restore
	ret
dec_to_num	endp
;-------------- D E C _ T O _ N U M -------------


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.083