Раздел «Язык Ассемблера».SharedObjects:
Создание разделяемых объектов (shared objects) в Linux

Разделяемые объекты (shared objects) в Linux являются аналогами .DLL в Windows. Находятся они обычно в /usr/lib и имеют расширение .so. Что они из себя представляют? Это исполняемые файлы формата ELF, которые экспортируют некоторые функции.

В качестве примера создадим библиотеку chomp.so, которая будет экспортировать функцию chomp (отрезание последнего символа строки, если это символ новой строки '\n')

;Экспортирование функцию chomp:
global chomp

;Объявление функции chomp:
chomp:

;В качестве параметра функция берет строку
;(точнее указатель на нее)
;Первые четыре байта - адрес возврата,
;значит нам нужны вторые четыре байта
mov eax, [esp+4]
;Теперь в EAX адрес строки

xor ecx, ecx 

;Цикл - поиск нулевого символа (конца строки):

.loop
mov dl, [eax+ecx] ;Символ - в DL
inc ecx   ;Увеличим счетчик цикла
cmp dl, 0 ;Если не 0
jne .loop ;То вернуться в начало цикла   

;Уменьшение ECX на 2:
dec ecx
dec ecx

;Последний символ строки поместим в DL:
mov dl, [eax+ecx]

;Если это не символ новой строки:
cmp dl, 0x0A
;То выйти
jne .quit

;иначе отрезать его
;(поместить на его место символ конца строки)
mov [eax+ecx], byte 0

.quit:

;Завершение функции
ret

Компиляция:

nasm -felf chomp.asm -o chomp.o

Компоновка:

ld chomp.o -shared -o chomp.so