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 de aja72
1
1
aja72, Desde los 14 años dedicado a la informática, principalmente...
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.
vean esta web:http://www.karmany.net/programacion-software/25-programacion-vb6/141-codigo-ensamblador-en-vb6-complemento-thundervb yo ya compile con este complemento para VB6. Incluso puede dar la opción también con lenguaje C. No olviden que tienen también que instalar aparte el compilar de assambler, el VBThuder junta VB6 con el asambler instalado, y entonces puedes desde el mismo VB6 editar el código de ambos lenguajes al mismo tiempo. - Carlos Vincent