|
|
| Посл.отвђт | Сообщен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 |