Originariamente inviato da Mabi
Cosa intendi con implementare codice assembler ?
Io so che non è possibile includerne in VB.
E chi te lo ha detto? E' possibilissimo invece ...

Ad esempio, partiamo dalla tua moltiplicazione del cui risultato vuoi la parte a 32 bit meno significativa ...

Parlo dell'operazione

&H87654321 * &H12345678

e della parte di risultato che ti interessa : &H70B88D78

Questo il codice che ho scritto per tale operazione

codice:
Private Declare Function CallWindowProc Lib "user32" _
Alias "CallWindowProcA" (ByVal pLShiftCode As Long, _
                        ByRef p1 As Long, _
                        ByVal p2 As Long, _
                        ByVal p3 As Long, _
                        ByVal p4 As Long) As Long

Dim MulCode() As Byte
Dim pMul As Long

Private Sub Form_Load()
  ReDim MulCode(0 To 22)
    
  MulCode(0)  = &H55  ' push ebp
  MulCode(1)  = &H8B  ' mov ebp, esp
  MulCode(2)  = &HEC  
  MulCode(3)  = &H57  ' push edi
  MulCode(4)  = &H8B  ' mov edi, [ebp+8]
  MulCode(5)  = &H7D
  MulCode(6)  = &H08
  MulCode(7)  = &H8B  ' mov ecx, [ebp+12]
  MulCode(8)  = &H4D
  MulCode(9)  = &H0C
  MulCode(10) = &H8B  ' mov eax, [edi]
  MulCode(11) = &H07
  MulCode(12) = &HF7  ' mul ecx
  MulCode(13) = &HE1
  MulCode(14) = &H89  ' mov [edi], eax
  MulCode(15) = &H07
  MulCode(16) = &H5F  ' pop edi
  MulCode(17) = &H8B  ' mov esp, ebp
  MulCode(18) = &HE5
  MulCode(19) = &H5D  ' pop ebp
  MulCode(20) = &HC2  ' ret 16
  MulCode(21) = &H10
  MulCode(22) = &H00
    
  pMul = VarPtr(MulCode(0))
End Sub

Private Sub Command1_Click()
  Dim VA As Long
  Dim VB As Long
    
  VA = &H12345678  ' Primo valore
  VB = &H87654321  ' Secondo valore
    
  CallWindowProc pMul, VA, VB, 0, 0

  Print Hex$(VA)   ' Risultato in VA
End Sub
Fammi sapere