Статьи по Assembler


Main.asm для mycall (ассемблер) - часть 7


mov eax,FATAL_DAT_FILE_OPEN

jmp ld_out

@endif

mov dat_file,eax

invoke GetFileSize,eax,NULL

@if(eax==0ffffffffh)

mov eax,FATAL_DAT_FILE_SIZE

jmp ld_out

@endif

mov dat_file_size,eax

add eax,3

invoke GlobalAlloc,GMEM_FIXED,eax

@if(!eax)

mov eax,FATAL_DAT_BUF_ALLOC

jmp ld_out

@endif

mov dat_buffer,eax

invoke ReadFile,dat_file,eax,dat_file_size,offset bytes_readwrite,NULL

@if(!eax)

mov eax,FATAL_DAT_FILE_READ

jmp ld_out

@endif

;Замена слэшей, CR, LF и пробелов на 0h, добавление в конец 1h

xor ebx,ebx

mov esi,dat_buffer

@while(ebx<dat_file_size)

mov al,byte ptr [esi][ebx]

xor edx,edx

@if(al==0dh)

inc edx

@elseif(al==0ah)

inc edx

@elseif(al==' ')

inc edx

@elseif(al=='/')

inc edx

@endif

@if(edx)

mov byte ptr [esi][ebx],0

@endif

inc ebx

@endw

mov word ptr [esi][ebx],0

add ebx,2

mov byte ptr [esi][ebx],1

xor eax,eax

ld_out:

push eax

invoke CloseHandle,dat_file

pop eax

ret

load_data ENDP


;ВСПОМОГАТЕЛЬНЫЕ ФУНКЦИИ

;Используются при разборе содержимого буфера данных:

;skip_nz - пропуск всех символов, пока не встретится 00h

;skip_nz2 - пропуск всех символов, пока не встретится 0000h

;///////////////////////////////////////////////////////////// Пропуски

skip_nz PROC

@while(byte ptr[esi]!=0)

inc esi

@endw

nc esi

ret

skip_nz ENDP

;=============================================================

skip_nz2 PROC

@while(word ptr[esi]!=0)

inc esi

@endw

add esi,2

ret

skip_nz2 ENDP


;ИЗМЕНЕНИЕ СОЕДИНЕНИЯ

;Функция вызывается при выборе в списке соединений нового соединения

;///////////////////////////////////////////////////////////// Изменение соединения

change_con PROC

;Установка указателя на запись текущего соединения

xor edx,edx ;sub_string

xor ecx,ecx ;cur_con

mov esi,dat_buffer

@while(byte ptr[esi]!=1)

@if(ecx==current_con)

@break

@endif

@if(word ptr[esi]==0)

inc edx

@if(edx==3)

inc ecx

xor edx,edx

@endif

inc esi

@endif

inc esi

@endw

call skip_nz2

;Формирование списка телефонов для данного соединения и установка его позиции




- Начало -  - Назад -  - Вперед -