Comecemos a Expliar, antes que nada debemos saber, que una DLL,
es una libreria Externa que contiene funciones que pueden ser llamadas desde
diferentes lenguajes de programacion, llamese Visual C++, Visual Basic, Borland
Delphi, ..., hasta Assembler mismo.
Ahora lo interesante cuan sencillo (de alguna Manera) es
realizar una DLL en Ensamblador, usando el MASM32. Para eso debemos tener en
cuanta primero, que debe tener una forma.
;Vamos a Llamarlo esqueleto de DLL
MiDLL.ASM
.386
.model flat, stdcall
option casemap :none
include d:\masm32\include\windows.inc
include d:\masm32\include\user32.inc
include d:\masm32\include\kernel32.inc
includelib d:\masm32\lib\user32.lib
includelib d:\masm32\lib\kernel32.lib
;***************************************
;Prototipo de nuestras Funciones a Exportar ;***************************************
.data
hInstance dd ? ;Handle de la Dll
.code
DllEntry PROC hInst :DWORD, Reason :DWORD, Reserved1 :DWORD
mov eax, hInst
mov hInstance, eax
xor eax, eax
inc eax
ret
DllEntry ENDP
;****************************
;Aqui van nuestras funciones a Exportar
MIFUNCION PROC
nop
ret
MIFUNCION ENDP
end DllEntry
inout98.ASM
.386
.model flat, stdcall
option casemap :none
include d:\masm32\include\windows.inc
include d:\masm32\include\user32.inc
include d:\masm32\include\kernel32.inc
includelib d:\masm32\lib\user32.lib
includelib d:\masm32\lib\kernel32.lib
;***************************************
;Prototipo de nuestras Funciones a Exportar ;***************************************
ESCRITURA proto :Dword,:dword
LECTURA proto :Dword
.data
hInstance dd ? ;Handle de la Dll
.code
DllEntry PROC hInst :DWORD, Reason :DWORD, Reserved1 :DWORD
mov eax, hInst
mov hInstance, eax
xor eax, eax
inc eax
ret
DllEntry ENDP
;********************************
;Aqui van nuestras funciones a Exportar
;********************************
ESCRITURA proc puerto:Dword,dato:dword
mov al,byte ptr dato
mov edx,puerto
out dx,al
mov eax, 1
ret
ESCRITURA endp
;leer(word ptr puerto)
LECTURA proc puerto:Dword
xor eax,eax
mov edx,puerto
in al,dx
ret
LECTURA endp
end DllEntry
Archivo inout98.def
LIBRARY "inout98"
DESCRIPTION 'Libreria para leer el puerto
desde VB, en Win98'
VERSION 1.0
EXPORTS
LECTURA
ESCRITURA
Donde lo escrito con Rojo, que se nota claramente, son nuestras funciones.
Yoel Ocmin
yoelocmin@hotmail.com
Como han podido observar,
el crear una Dll enRadAsm, es mucho mas facil, Asi que se los recomiendo.
OBS: Les recomiendo bajar la ultima version del RadAsm,
que trae pantillas, que te permitiran hacer programas mucho mas Rápido.