memmove386.asm

来自「一个通讯程序源码」· 汇编 代码 · 共 87 行

ASM
87
字号
;+------------------------------------------------------------------; memmove386.asm;; Name;      memmove - Copies characters between objects.;; Syntax;;      void *memmove(dest, src, count);      void *dest;;      const void *src;;      size_t count;;; Description;      The memmove function copies count characters from src to;      dest.  If some regions of src and dest overlap, memmove;      ensures that the original src bytes in the overlapping;      region are copied before being overwritten.;; Return Value;      The value of dest, the destination object.;;-------------------------------------------------------------------;+:EDITS:;:09-10-1992-13:59-wht@n4hgf-ECU release 3.20;:08-22-1992-15:39-wht@n4hgf-ECU release 3.20 BETA;:09-01-1991-23:15-wht@n4hgf-convert Chip's memmove.s	TITLE	$memmove	.386DGROUP	GROUP	CONST, _BSS, _DATA_DATA	SEGMENT  DWORD USE32 PUBLIC 'DATA'_DATA      ENDS_BSS	SEGMENT  DWORD USE32 PUBLIC 'BSS'_BSS      ENDSCONST	SEGMENT  DWORD USE32 PUBLIC 'CONST'CONST      ENDS	ASSUME   CS: _TEXT, DS: DGROUP, SS: DGROUP, ES: DGROUP	PUBLIC  _memmove	PUBLIC  memmove_TEXT	SEGMENT  DWORD USE32 PUBLIC 'CODE'_memmove PROC NEARmemmove:	push	edi	push	esi	mov	edi,[esp+12]	mov	esi,[esp+16]	mov	ecx,[esp+20]	mov	eax,edi		; return value: dest	jcxz	mm_exit	mov	edx,edi	sub	edx,esi	jb	short mm_left_to_right	cmp	ecx,edx	jb	short mm_left_to_rightmm_right_to_left:	add	edi,ecx	dec	edi	add	esi,ecx	dec	esi	std	rep movsb	cld	jmp	short mm_exitmm_left_to_right:	cld	mov	edx,ecx	shr	ecx,2	rep movsw	mov	ecx,edx	and	ecx,3	rep movsbmm_exit:	pop	esi	pop	edi	ret_memmove  ENDP_TEXT	ENDES	end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?