KMLIB (Kolibri Macro Library) v0.08 (22 ДЕКАБРЯ 2012)

Discussing libraries simplifying applications development
  • Пара мыслей:
    1) Это все-же не библиотека, а сборник макросов.
    2) Неплохо бы написать как это используется, хотя бы вкратце - не у всех есть прямое подключение к твоему мозгу. :wink:

    В целом хорошо, что не забрасываешь работу.
  • Mario wrote: 1) Это все-же не библиотека, а сборник макросов.
    Называй как хочешь, тебе никто не заприщает, а у меня это библиотека. И спорить на эту тему, я не собираюсь!
    Mario wrote: 2) Неплохо бы написать как это используется, хотя бы вкратце - не у всех есть прямое подключение к твоему мозгу. :wink:
    Для самых недоходчевых! Дока внутри либы, в папке "!DOC". Надо найти и открыть в IE файл, с названием INDEX.Там есть раздел "Введение", в нём вкратце описано как пользоваться либой. Описания макро функций в доке, пока ещё нет, но есть внутри каждого файла с макро функцией.

    Товарищи, если ещё что-то непонятно, обращайтесь!
  • Rock_maniak_forever wrote: Называй как хочешь, тебе никто не заприщает, а у меня это библиотека. И спорить на эту тему, я не собираюсь!
    Впрочем твоя правда:
    http://ru.wikipedia.org/wiki/Статическая_библиотека
    Статические библиотеки
    Могут быть в виде исходного текста, подключаемого программистом к своей программе на этапе написания (например, для языка Fortran существует огромное количество библиотек для решения разных задач именно в исходных текстах), либо в виде объектных файлов, присоединяемых (линкуемых) к исполняемой программе на этапе компиляции
    Признаю - я ошибался.
  • Добрый всем вечер! Либа немного обнавилась. Находится там же, вначале страницы. Забирайте.

    Пожалуйста, сообщайте обо всех замечаных багах в либе.
  • Доброй всем ночи! Либа обновилась до версии 0.03. Качайте! :D
  • Доброй всем ночи! Принимайте пополнение, обнавлено до версии 0.04. Image
  • Доброй всем ночи! Принимайте пополнение, обнавлено до версии 0.05. Image
  • Rock_maniak_forever,
    я бы хотел иметь под рукой макросы/процедуры такие как перевод числа в строку и перевод строки из различных кодировок в cp866.

    p.s. за хотелку сильно не пинайте :)
  • ChE wrote:Rock_maniak_forever,
    я бы хотел иметь под рукой макросы/процедуры такие как перевод числа в строку и перевод строки из различных кодировок в cp866.

    p.s. за хотелку сильно не пинайте :)
    1) Если чего-то очень хочешь, сделай сам или помоги другим! Только без обид!
    2) Признаться я сам недавно думал об этом. Поэтому сделаю обязательно, и возможно к следующей версии, но ничего не обещаю.
  • Rock_maniak_forever wrote:Признаться я сам недавно думал об этом. Поэтому сделаю обязательно, и возможно к следующей версии, но ничего не обещаю
    Данный кусок кода может быть пригодится, он переводит строку с числом в числовой вид. Строка может быть в 10 и 16-ричном виде. Дробные числа не преобразуются.

    Code: Select all

    ;input:
    ; buf - указатель на строку, число должно быть в 10 или 16 ричном виде
    ;output:
    ; eax - число
    align 4
    proc conv_str_to_int, buf:dword
    	xor eax,eax
    	push ebx esi
    	xor ebx,ebx
    	mov esi,[buf]
    	cmp word[esi],'0x'
    	je .load_digit_16
    
    	.load_digit_10: ;считывание 10-тичных цифр
    		mov bl,byte[esi]
    		cmp bl,'0'
    		jl @f
    		cmp bl,'9'
    		jg @f
    			sub bl,'0'
    			imul eax,10
    			add eax,ebx
    			inc esi
    			jmp .load_digit_10
    	jmp @f
    
    	.load_digit_16: ;считывание 16-ричных цифр
    		add esi,2
    	.cycle_16:
    		mov bl,byte[esi]
    		cmp bl,'0'
    		jl @f
    		cmp bl,'f'
    		jg @f
    		cmp bl,'9'
    		jle .us1
    			cmp bl,'A'
    			jl @f ;отсеиваем символы >'9' и <'A'
    		.us1: ;составное условие
    		cmp bl,'F'
    		jle .us2
    			cmp bl,'a'
    			jl @f ;отсеиваем символы >'F' и <'a'
    			sub bl,32 ;переводим символы в верхний регистр, для упрощения их последущей обработки
    		.us2: ;составное условие
    			sub bl,'0'
    			cmp bl,9
    			jle .cor1
    				sub bl,7 ;convert 'A' to '10'
    			.cor1:
    			shl eax,4
    			add eax,ebx
    			inc esi
    			jmp .cycle_16
    	@@:
    
    	pop esi ebx
    	ret
    endp
    
  • IgorA
    Большое спасибо! Обязательно пригодится. Image
  • Вот код для перевода целого числа в строку:

    Code: Select all

    dword_to_STR:
    ;на входе: 
    ;         EAX число 32 бит
    ;         ESI указатель на строку
    ;         EBX разрядность результата (от 2 до 16)
    ;на выходе:
    ;         [ESI] ASCIIZ строка
    	pushad
    	cmp	ebx, 16
    	ja	.end
    	cmp	eax, 7FFFFFFFh
    	jna	.sign_plus
    	mov	byte [esi], '-'
    	inc	esi
    	not	eax
    	inc	eax
    .sign_plus:
    	xor	ecx, ecx
    	jmp	.repeat
         
    .mesto	db 32 dup (0)
         
    .repeat:
    	xor	edx, edx
    	div	ebx
    	mov	edi, eax
    	mov	al, dl
    	cmp	al, 10
    	sbb	al, 69h
    	das
    	mov	byte [.mesto+ecx], al
    	mov	eax, edi
         
    	inc	ecx
    	cmp	eax, 0
    	jz	.endrep
    	jmp	.repeat
    .endrep:
    	mov	edi, .mesto
    	add	edi, ecx
    .copyrep:
    	dec	edi
    	mov	dl, byte [edi]
    	mov	byte [esi], dl
    	inc	esi
    
    	loop	.copyrep
    
    	mov	byte [esi], 0
    .end:
    	popad
    	ret
  • Вот ещё, перевёл часть листинга из книжки Кулакова на FASM.
    Есть перевод целых, дробных чисел в строку и обратно (в десятичной системе счисления). Думаю, можно использовать как основу.

    p.s. Код сильно не проверял, но вроде работает. 8)
    Attachments
    str.7z (4.14 KiB)
    Downloaded 356 times
  • ChE
    Ну вот с этого и надо было начинать! Спасибо. :D

    P.S. К следующей версии будет готово.
  • Who is online

    Users browsing this forum: No registered users and 5 guests