hi ~ ALL
I change Assembly code as following ( as green color word : STD ) ================================
Quote:
Code:
' PowerBasic compile to Std DLL
FUNCTION PB_MemCpy3 ALIAS "PB_MemCpy3" (BYVAL Destination AS DWORD, BYVAL SOURCE AS DWORD, BYVAL Length AS LONG) EXPORT AS LONG
! cld ' low address to high address
! mov esi, SOURCE
! mov edi, Destination
! mov ecx, Length
! rep movsb
END FUNCTION
Code:
'VB6
Private Declare Function PB_MemCpy3 Lib "C:\PBWin10\0\dll.ba.dll" (ByVal Destination As Long, ByVal Source As Long, ByVal Length As Long) As Long
dim b(1 to 5) as byte
for w = 1 to 5
b(w) = w
next
call PB_MemCpy3( Destination := Varptr( b(1) ) , SOURCE :=Varptr( b(2) ) , Length:= 4 )
' before PB_MemCpy3: b( ) = 1,2,3,4,5
' after PB_MemCpy3: b( ) = 2,3,4,5,5 ----> move success
Quote:
Code:
' PowerBasic compile to Std DLL
FUNCTION PB_MemCpy3 ALIAS "PB_MemCpy3" (BYVAL Destination AS DWORD, BYVAL SOURCE AS DWORD, BYVAL Length AS LONG) EXPORT AS LONG
! STD ' high address to low address
! mov esi, SOURCE ' code no change
! mov edi, Destination ' code no change
! mov ecx, Length ' code no change
! rep movsb ' code no change
END FUNCTION
Code:
'VB6
Private Declare Function PB_MemCpy3 Lib "C:\PBWin10\0\dll.ba.dll" (ByVal Destination As Long, ByVal Source As Long, ByVal Length As Long) As Long
dim b(1 to 5) as byte
for w = 1 to 5
b(w) = w
next
call PB_MemCpy3( Destination := Varptr( b(3 ) , SOURCE :=Varptr( b(2) ) , Length:= 1 )
' but crash , where error in my Assembly code
I use Asembly STD is error code ?? what code is right ?