Visual basic + ensamblador

Quisiera saber si se puede llamar una rutina de ensamblador a visual basic. Necesito hacer un programa que sume o reste es muy sencillo.

1 respuesta

Respuesta
1
No existe manera de incluir código en ensamblador dentro de código VB de forma parecida a como se hace en VC. Para llamar a una función hecha en cualquier otro lenguaje (por supuesto ensamblador también) tendrás que hacer una Dll.
Te pongo un ejemplo muy sencillo, realizado con Borland TASM 5.0:
;-----------------------------------------------------
; SumaDll.asm
;-----------------------------------------------------
;Para compilar/enlazar:
; tasm32 -ml -m5 -q -zn sumadll.asm
; tlink32 -Tpd -aa -c -x sumadll.obj,sumadll.dll,,,sumadll.def
;-----------------------------------------------------
.386
.model flat
include c:\tasm\include\windows.inc
Public DllEntry
Public Suma
. Data
. Code
DllEntry proc
mov eax, TRUE
Ret
DllEntry Endp
;·····················································
; Suma 2 números: .
;·····················································
Suma proc
push ebp
mov ebp,esp
mov eax,[ebp+8] ;segundo parámetro en [ebp+8]
add eax,[ebp+12] ;primer parámetro en [ebp+8] => eax es el resultado
pop ebp
ret 8 ;2 parametros = 8 bytes, volvemos quitandolos de la pila
Suma endp
End DllEntry
y aqui el fichero def:
;-----------------------------------------------
; SumaDll.def
;-----------------------------------------------
LIBRARY SumaDll
DESCRIPTION 'Suma -- Demonstration assembler DLL'
Exports
DllEntry @1 RESIDENTNAME
Suma @2
Para compilar/enlazar sigue los comentarios de SumaDll.asm. En VB pon un botón en un formulario y escribe lo siguiente:
Private Declare Function Suma Lib "Sumadll" (ByVal sumando1 As Long, ByVal sumando1 As Long) As Long
Private Sub Command1_Click()
Dim l As Long
l = Suma(-1, -50)
MsgBox "Suma: " & l
End Sub
Tengo que reconocer que he usado VB y ensamblador, pero nunca ambas cosas conjuntamente. Esta respuesta me ha costado bastante sacarla adelante.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas