Quantcast
Channel: VBForums
Viewing all articles
Browse latest Browse all 15754

Assembly String move proplem

$
0
0
hi ~ ALL

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


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


! 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 ?





Viewing all articles
Browse latest Browse all 15754

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>