+ -
当前位置:首页 → 问答吧 → 汇编 如何实现结构体的拷贝

汇编 如何实现结构体的拷贝

时间:2011-07-06

来源:互联网

汇编 怎么样才能实现结构体的拷贝, 急 急 急 、、、、
、、、、

作者: HappyMonkeyEveryDay   发布时间: 2011-07-06

供参考:(用的是FASM语法)
;=============================================================================
; 拷贝内存块
; @AddrSrc = 源块的内存地址
; @AddrDest = 目标块的内存地址
; @Size = 要拷贝的字节数
;-----------------------------------------------------------------------------
proc _MemCopy @AddrSrc, @AddrDest, @Size

  cld ;清除方向标志,告诉程序si,di向前移动
  mov esi,[@AddrSrc] ;
  mov edi,[@AddrDest]
  mov ecx,[@Size]
  shr ecx,2 ;以双字传送,所以要将字节数除以4,得出折合的双字数,余数暂丢弃
  rep movsd ;以双字为单位进行传送。注:MOVSB 传送字符. MOVSW 传送字.
  mov ecx,[@Size]
  and ecx,3 ;如果字节数不是4的整倍数,那就算出余下还有多少字节,并放在ecx中
  rep movsb ;再以字节为单位拷贝
  ret
endp

作者: gsy999   发布时间: 2011-07-06