Inout98.DLL


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

Archivo MiDLL.def
LIBRARY "MiDLL"
DESCRIPTION 'Descripcion de Mi DLL'
VERSION 1.0
EXPORTS
MyFuncion ;Funcion a Exportar

Donde bastaria con llenar unos campos y tener Nuestra DLL de la siguiente Forma:

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.


 [Regresar Anterior]                                                                [Principal]