From 5a05e580e5959649251abfe5f6c1445edb75f2af Mon Sep 17 00:00:00 2001 From: nmlgc Date: Wed, 27 Aug 2014 19:47:14 +0200 Subject: [PATCH] [Reduction] #223-224: memmove --- libs/BorlandC/movmem.asm | 92 ++++++++++++++++++++++++++++++++++ th01_fuuin.asm | 102 +------------------------------------- th01_op.asm | 102 +------------------------------------- th01_reiiden.asm | 102 +------------------------------------- th02_main.asm | 102 +------------------------------------- th02_maine.asm | 102 +------------------------------------- th02_op.asm | 102 +------------------------------------- th03_main.asm | 103 +-------------------------------------- th03_mainl.asm | 102 +------------------------------------- th03_op.asm | 102 +------------------------------------- th04_main.asm | 102 +------------------------------------- th04_maine.asm | 102 +------------------------------------- th04_op.asm | 102 +------------------------------------- th05_main.asm | 102 +------------------------------------- th05_maine.asm | 102 +------------------------------------- th05_op.asm | 102 +------------------------------------- 16 files changed, 107 insertions(+), 1516 deletions(-) create mode 100644 libs/BorlandC/movmem.asm diff --git a/libs/BorlandC/movmem.asm b/libs/BorlandC/movmem.asm new file mode 100644 index 00000000..506a4c72 --- /dev/null +++ b/libs/BorlandC/movmem.asm @@ -0,0 +1,92 @@ +; void __cdecl movmem(const void *src, void *dst, unsigned int len) +_movmem proc DIST +@@src = DPTR_ 2 + dPtrSize +@@dst = DPTR_ 2 + (dPtrSize * 2) +@@len = word ptr 2 + (dPtrSize * 3) + + push bp + mov bp, sp + push si + push di +ifndef __HUGE + push ds +endif + mov cx, word ptr [bp+@@dst+2] + mov bx, word ptr [bp+@@dst] + mov dx, word ptr [bp+@@src+2] + mov ax, word ptr [bp+@@src] + call N_PCMP@ + jnb short @@forward + std + mov ax, 1 + jmp short @@prepare + +@@forward: + cld + xor ax, ax + +@@prepare: + LDS_ si, [bp+@@src] + LES_ di, [bp+@@dst] + mov cx, [bp+@@len] + or ax, ax + jz short @@movit + add si, cx + dec si + add di, cx + dec di + +@@movit: + test di, 1 + jz short @@isAligned + jcxz short @@done + movsb + dec cx + +@@isAligned: + sub si, ax + sub di, ax + shr cx, 1 + rep movsw + jnb short @@noOdd + add si, ax + add di, ax + movsb + +@@noOdd: +@@done: + cld +if LDATA + pop ds +endif + pop di + pop si + pop bp + ret +_movmem endp + +; void *__cdecl memmove(void *dest, const void *src, size_t n) +public _memmove +_memmove proc DIST +@@dst = DPTR_ 2 + dPtrSize +@@src = DPTR_ 2 + (dPtrSize * 2) +@@len = word ptr 2 + (dPtrSize * 3) + + push bp + mov bp, sp + push si + push di + push [bp+@@len] + push word ptr [bp+@@dst+2] + push word ptr [bp+@@dst] + push word ptr [bp+@@src+2] + push word ptr [bp+@@src] + call _movmem + add sp, 0Ah + mov dx, word ptr [bp+@@dst+2] + mov ax, word ptr [bp+@@dst] + pop di + pop si + pop bp + ret +_memmove endp diff --git a/th01_fuuin.asm b/th01_fuuin.asm index 6f4e31ef..9b276879 100644 --- a/th01_fuuin.asm +++ b/th01_fuuin.asm @@ -8807,107 +8807,7 @@ _getenv endp include libs/BorlandC/memcmp.asm include libs/BorlandC/memcpy.asm include libs/BorlandC/memset.asm - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; void __cdecl movmem(const void *src, void *dest, unsigned int length) -_movmem proc far - -_src = dword ptr 6 -dest = dword ptr 0Ah -_length = word ptr 0Eh - - push bp - mov bp, sp - push si - push di - push ds - mov cx, word ptr [bp+dest+2] - mov bx, word ptr [bp+dest] - mov dx, word ptr [bp+_src+2] - mov ax, word ptr [bp+_src] - call N_PCMP@ - jnb short loc_4991 - std - mov ax, 1 - jmp short loc_4994 -; --------------------------------------------------------------------------- - -loc_4991: - cld - xor ax, ax - -loc_4994: - lds si, [bp+_src] - les di, [bp+dest] - mov cx, [bp+_length] - or ax, ax - jz short loc_49A7 - add si, cx - dec si - add di, cx - dec di - -loc_49A7: - test di, 1 - jz short loc_49B1 - jcxz short loc_49C0 - movsb - dec cx - -loc_49B1: - sub si, ax - sub di, ax - shr cx, 1 - rep movsw - jnb short loc_49C0 - add si, ax - add di, ax - movsb - -loc_49C0: - cld - pop ds - pop di - pop si - pop bp - retf -_movmem endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; void *__cdecl memmove(void *dest, const void *src, size_t n) -_memmove proc far - -dest = dword ptr 6 -_src = dword ptr 0Ah -_length = word ptr 0Eh - - push bp - mov bp, sp - push si - push di - push [bp+_length] ; length - push word ptr [bp+dest+2] - push word ptr [bp+dest] ; dest - push word ptr [bp+_src+2] - push word ptr [bp+_src] ; src - push cs - call near ptr _movmem - add sp, 0Ah - mov dx, word ptr [bp+dest+2] - mov ax, word ptr [bp+dest] - pop di - pop si - pop bp - retf -_memmove endp - +include libs/BorlandC/movmem.asm ; =============== S U B R O U T I N E ======================================= diff --git a/th01_op.asm b/th01_op.asm index 3bc009ac..677189fe 100644 --- a/th01_op.asm +++ b/th01_op.asm @@ -8686,107 +8686,7 @@ _getenv endp include libs/BorlandC/memcmp.asm include libs/BorlandC/memcpy.asm include libs/BorlandC/memset.asm - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; void __cdecl movmem(const void *src, void *dest, unsigned int length) -_movmem proc far - -src = dword ptr 6 -dest = dword ptr 0Ah -_length = word ptr 0Eh - - push bp - mov bp, sp - push si - push di - push ds - mov cx, word ptr [bp+dest+2] - mov bx, word ptr [bp+dest] - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - call N_PCMP@ - jnb short loc_4C73 - std - mov ax, 1 - jmp short loc_4C76 -; --------------------------------------------------------------------------- - -loc_4C73: - cld - xor ax, ax - -loc_4C76: - lds si, [bp+src] - les di, [bp+dest] - mov cx, [bp+_length] - or ax, ax - jz short loc_4C89 - add si, cx - dec si - add di, cx - dec di - -loc_4C89: - test di, 1 - jz short loc_4C93 - jcxz short loc_4CA2 - movsb - dec cx - -loc_4C93: - sub si, ax - sub di, ax - shr cx, 1 - rep movsw - jnb short loc_4CA2 - add si, ax - add di, ax - movsb - -loc_4CA2: - cld - pop ds - pop di - pop si - pop bp - retf -_movmem endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; void *__cdecl memmove(void *dest, const void *src, size_t n) -_memmove proc far - -dest = dword ptr 6 -src = dword ptr 0Ah -_length = word ptr 0Eh - - push bp - mov bp, sp - push si - push di - push [bp+_length] ; length - push word ptr [bp+dest+2] - push word ptr [bp+dest] ; dest - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - push cs - call near ptr _movmem - add sp, 0Ah - mov dx, word ptr [bp+dest+2] - mov ax, word ptr [bp+dest] - pop di - pop si - pop bp - retf -_memmove endp - +include libs/BorlandC/movmem.asm ; =============== S U B R O U T I N E ======================================= diff --git a/th01_reiiden.asm b/th01_reiiden.asm index 9a7a0894..bba58cfa 100644 --- a/th01_reiiden.asm +++ b/th01_reiiden.asm @@ -12391,107 +12391,7 @@ _getenv endp include libs/BorlandC/memcmp.asm include libs/BorlandC/memcpy.asm include libs/BorlandC/memset.asm - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; void __cdecl movmem(const void *src, void *dest, unsigned int length) -_movmem proc far - -_src = dword ptr 6 -dest = dword ptr 0Ah -_length = word ptr 0Eh - - push bp - mov bp, sp - push si - push di - push ds - mov cx, word ptr [bp+dest+2] - mov bx, word ptr [bp+dest] - mov dx, word ptr [bp+_src+2] - mov ax, word ptr [bp+_src] - call N_PCMP@ - jnb short loc_5FE9 - std - mov ax, 1 - jmp short loc_5FEC -; --------------------------------------------------------------------------- - -loc_5FE9: - cld - xor ax, ax - -loc_5FEC: - lds si, [bp+_src] - les di, [bp+dest] - mov cx, [bp+_length] - or ax, ax - jz short loc_5FFF - add si, cx - dec si - add di, cx - dec di - -loc_5FFF: - test di, 1 - jz short loc_6009 - jcxz short loc_6018 - movsb - dec cx - -loc_6009: - sub si, ax - sub di, ax - shr cx, 1 - rep movsw - jnb short loc_6018 - add si, ax - add di, ax - movsb - -loc_6018: - cld - pop ds - pop di - pop si - pop bp - retf -_movmem endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; void *__cdecl memmove(void *dest, const void *src, size_t n) -_memmove proc far - -dest = dword ptr 6 -_src = dword ptr 0Ah -_length = word ptr 0Eh - - push bp - mov bp, sp - push si - push di - push [bp+_length] ; length - push word ptr [bp+dest+2] - push word ptr [bp+dest] ; dest - push word ptr [bp+_src+2] - push word ptr [bp+_src] ; src - push cs - call near ptr _movmem - add sp, 0Ah - mov dx, word ptr [bp+dest+2] - mov ax, word ptr [bp+dest] - pop di - pop si - pop bp - retf -_memmove endp - +include libs/BorlandC/movmem.asm ; =============== S U B R O U T I N E ======================================= diff --git a/th02_main.asm b/th02_main.asm index 0c14e5d8..ae452011 100644 --- a/th02_main.asm +++ b/th02_main.asm @@ -9271,107 +9271,7 @@ _getenv endp include libs/BorlandC/memcmp.asm include libs/BorlandC/memcpy.asm include libs/BorlandC/memset.asm - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; void __cdecl movmem(const void *src, void *dest, unsigned int length) -_movmem proc far - -src = dword ptr 6 -dest = dword ptr 0Ah -_length = word ptr 0Eh - - push bp - mov bp, sp - push si - push di - push ds - mov cx, word ptr [bp+dest+2] - mov bx, word ptr [bp+dest] - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - call N_PCMP@ - jnb short loc_67B6 - std - mov ax, 1 - jmp short loc_67B9 -; --------------------------------------------------------------------------- - -loc_67B6: - cld - xor ax, ax - -loc_67B9: - lds si, [bp+src] - les di, [bp+dest] - mov cx, [bp+_length] - or ax, ax - jz short loc_67CC - add si, cx - dec si - add di, cx - dec di - -loc_67CC: - test di, 1 - jz short loc_67D6 - jcxz short loc_67E5 - movsb - dec cx - -loc_67D6: - sub si, ax - sub di, ax - shr cx, 1 - rep movsw - jnb short loc_67E5 - add si, ax - add di, ax - movsb - -loc_67E5: - cld - pop ds - pop di - pop si - pop bp - retf -_movmem endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; void *__cdecl memmove(void *dest, const void *src, size_t n) -_memmove proc far - -dest = dword ptr 6 -src = dword ptr 0Ah -_length = word ptr 0Eh - - push bp - mov bp, sp - push si - push di - push [bp+_length] ; length - push word ptr [bp+dest+2] - push word ptr [bp+dest] ; dest - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - push cs - call near ptr _movmem - add sp, 0Ah - mov dx, word ptr [bp+dest+2] - mov ax, word ptr [bp+dest] - pop di - pop si - pop bp - retf -_memmove endp - +include libs/BorlandC/movmem.asm ; =============== S U B R O U T I N E ======================================= diff --git a/th02_maine.asm b/th02_maine.asm index c0457aca..a46a7c19 100644 --- a/th02_maine.asm +++ b/th02_maine.asm @@ -5231,107 +5231,7 @@ _getenv endp include libs/BorlandC/memcmp.asm include libs/BorlandC/memcpy.asm include libs/BorlandC/memset.asm - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; void __cdecl movmem(const void *src, void *dest, unsigned int length) -_movmem proc far - -src = dword ptr 6 -dest = dword ptr 0Ah -_length = word ptr 0Eh - - push bp - mov bp, sp - push si - push di - push ds - mov cx, word ptr [bp+dest+2] - mov bx, word ptr [bp+dest] - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - call N_PCMP@ - jnb short loc_4BB6 - std - mov ax, 1 - jmp short loc_4BB9 -; --------------------------------------------------------------------------- - -loc_4BB6: - cld - xor ax, ax - -loc_4BB9: - lds si, [bp+src] - les di, [bp+dest] - mov cx, [bp+_length] - or ax, ax - jz short loc_4BCC - add si, cx - dec si - add di, cx - dec di - -loc_4BCC: - test di, 1 - jz short loc_4BD6 - jcxz short loc_4BE5 - movsb - dec cx - -loc_4BD6: - sub si, ax - sub di, ax - shr cx, 1 - rep movsw - jnb short loc_4BE5 - add si, ax - add di, ax - movsb - -loc_4BE5: - cld - pop ds - pop di - pop si - pop bp - retf -_movmem endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; void *__cdecl memmove(void *dest, const void *src, size_t n) -_memmove proc far - -dest = dword ptr 6 -src = dword ptr 0Ah -_length = word ptr 0Eh - - push bp - mov bp, sp - push si - push di - push [bp+_length] ; length - push word ptr [bp+dest+2] - push word ptr [bp+dest] ; dest - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - push cs - call near ptr _movmem - add sp, 0Ah - mov dx, word ptr [bp+dest+2] - mov ax, word ptr [bp+dest] - pop di - pop si - pop bp - retf -_memmove endp - +include libs/BorlandC/movmem.asm ; =============== S U B R O U T I N E ======================================= diff --git a/th02_op.asm b/th02_op.asm index 5f600c8a..cceaf5c8 100644 --- a/th02_op.asm +++ b/th02_op.asm @@ -5314,107 +5314,7 @@ _getenv endp include libs/BorlandC/memcmp.asm include libs/BorlandC/memcpy.asm include libs/BorlandC/memset.asm - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; void __cdecl movmem(const void *src, void *dest, unsigned int length) -_movmem proc far - -src = dword ptr 6 -dest = dword ptr 0Ah -_length = word ptr 0Eh - - push bp - mov bp, sp - push si - push di - push ds - mov cx, word ptr [bp+dest+2] - mov bx, word ptr [bp+dest] - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - call N_PCMP@ - jnb short loc_5203 - std - mov ax, 1 - jmp short loc_5206 -; --------------------------------------------------------------------------- - -loc_5203: - cld - xor ax, ax - -loc_5206: - lds si, [bp+src] - les di, [bp+dest] - mov cx, [bp+_length] - or ax, ax - jz short loc_5219 - add si, cx - dec si - add di, cx - dec di - -loc_5219: - test di, 1 - jz short loc_5223 - jcxz short loc_5232 - movsb - dec cx - -loc_5223: - sub si, ax - sub di, ax - shr cx, 1 - rep movsw - jnb short loc_5232 - add si, ax - add di, ax - movsb - -loc_5232: - cld - pop ds - pop di - pop si - pop bp - retf -_movmem endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; void *__cdecl memmove(void *dest, const void *src, size_t n) -_memmove proc far - -dest = dword ptr 6 -src = dword ptr 0Ah -_length = word ptr 0Eh - - push bp - mov bp, sp - push si - push di - push [bp+_length] ; length - push word ptr [bp+dest+2] - push word ptr [bp+dest] ; dest - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - push cs - call near ptr _movmem - add sp, 0Ah - mov dx, word ptr [bp+dest+2] - mov ax, word ptr [bp+dest] - pop di - pop si - pop bp - retf -_memmove endp - +include libs/BorlandC/movmem.asm ; =============== S U B R O U T I N E ======================================= diff --git a/th03_main.asm b/th03_main.asm index bda7a314..dd8d3cc8 100644 --- a/th03_main.asm +++ b/th03_main.asm @@ -5560,108 +5560,7 @@ sub_4C4C endp include libs/BorlandC/memcmp.asm include libs/BorlandC/memcpy.asm include libs/BorlandC/memset.asm - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; void __cdecl movmem(const void *src, void *dest, unsigned int length) -_movmem proc far - -src = dword ptr 6 -dest = dword ptr 0Ah -_length = word ptr 0Eh - - push bp - mov bp, sp - push si - push di - push ds - mov cx, word ptr [bp+dest+2] - mov bx, word ptr [bp+dest] - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - call N_PCMP@ - jnb short loc_4D38 - std - mov ax, 1 - jmp short loc_4D3B -; --------------------------------------------------------------------------- - -loc_4D38: - cld - xor ax, ax - -loc_4D3B: - lds si, [bp+src] - les di, [bp+dest] - mov cx, [bp+_length] - or ax, ax - jz short loc_4D4E - add si, cx - dec si - add di, cx - dec di - -loc_4D4E: - test di, 1 - jz short loc_4D58 - jcxz short loc_4D67 - movsb - dec cx - -loc_4D58: - sub si, ax - sub di, ax - shr cx, 1 - rep movsw - jnb short loc_4D67 - add si, ax - add di, ax - movsb - -loc_4D67: - cld - pop ds - pop di - pop si - pop bp - retf -_movmem endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; void *__cdecl memmove(void *dest, const void *src, size_t n) -_memmove proc far - ; sub_1D189+138P - -dest = dword ptr 6 -src = dword ptr 0Ah -_length = word ptr 0Eh - - push bp - mov bp, sp - push si - push di - push [bp+_length] ; length - push word ptr [bp+dest+2] - push word ptr [bp+dest] ; dest - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - push cs - call near ptr _movmem - add sp, 0Ah - mov dx, word ptr [bp+dest+2] - mov ax, word ptr [bp+dest] - pop di - pop si - pop bp - retf -_memmove endp - +include libs/BorlandC/movmem.asm ; =============== S U B R O U T I N E ======================================= diff --git a/th03_mainl.asm b/th03_mainl.asm index 6a12e2d0..6b41ca37 100644 --- a/th03_mainl.asm +++ b/th03_mainl.asm @@ -4774,107 +4774,7 @@ sub_4B43 endp ; sp-analysis failed include libs/BorlandC/memcmp.asm include libs/BorlandC/memcpy.asm include libs/BorlandC/memset.asm - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; void __cdecl movmem(const void *src, void *dest, unsigned int length) -_movmem proc far - -src = dword ptr 6 -dest = dword ptr 0Ah -_length = word ptr 0Eh - - push bp - mov bp, sp - push si - push di - push ds - mov cx, word ptr [bp+dest+2] - mov bx, word ptr [bp+dest] - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - call N_PCMP@ - jnb short loc_4C06 - std - mov ax, 1 - jmp short loc_4C09 -; --------------------------------------------------------------------------- - -loc_4C06: - cld - xor ax, ax - -loc_4C09: - lds si, [bp+src] - les di, [bp+dest] - mov cx, [bp+_length] - or ax, ax - jz short loc_4C1C - add si, cx - dec si - add di, cx - dec di - -loc_4C1C: - test di, 1 - jz short loc_4C26 - jcxz short loc_4C35 - movsb - dec cx - -loc_4C26: - sub si, ax - sub di, ax - shr cx, 1 - rep movsw - jnb short loc_4C35 - add si, ax - add di, ax - movsb - -loc_4C35: - cld - pop ds - pop di - pop si - pop bp - retf -_movmem endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; void *__cdecl memmove(void *dest, const void *src, size_t n) -_memmove proc far - -dest = dword ptr 6 -src = dword ptr 0Ah -_length = word ptr 0Eh - - push bp - mov bp, sp - push si - push di - push [bp+_length] ; length - push word ptr [bp+dest+2] - push word ptr [bp+dest] ; dest - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - push cs - call near ptr _movmem - add sp, 0Ah - mov dx, word ptr [bp+dest+2] - mov ax, word ptr [bp+dest] - pop di - pop si - pop bp - retf -_memmove endp - +include libs/BorlandC/movmem.asm ; =============== S U B R O U T I N E ======================================= diff --git a/th03_op.asm b/th03_op.asm index 6051ccf7..e8387091 100644 --- a/th03_op.asm +++ b/th03_op.asm @@ -5193,107 +5193,7 @@ _getenv endp include libs/BorlandC/memcmp.asm include libs/BorlandC/memcpy.asm include libs/BorlandC/memset.asm - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; void __cdecl movmem(const void *src, void *dest, unsigned int length) -_movmem proc far - -src = dword ptr 6 -dest = dword ptr 0Ah -_length = word ptr 0Eh - - push bp - mov bp, sp - push si - push di - push ds - mov cx, word ptr [bp+dest+2] - mov bx, word ptr [bp+dest] - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - call N_PCMP@ - jnb short loc_4EE8 - std - mov ax, 1 - jmp short loc_4EEB -; --------------------------------------------------------------------------- - -loc_4EE8: - cld - xor ax, ax - -loc_4EEB: - lds si, [bp+src] - les di, [bp+dest] - mov cx, [bp+_length] - or ax, ax - jz short loc_4EFE - add si, cx - dec si - add di, cx - dec di - -loc_4EFE: - test di, 1 - jz short loc_4F08 - jcxz short loc_4F17 - movsb - dec cx - -loc_4F08: - sub si, ax - sub di, ax - shr cx, 1 - rep movsw - jnb short loc_4F17 - add si, ax - add di, ax - movsb - -loc_4F17: - cld - pop ds - pop di - pop si - pop bp - retf -_movmem endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; void *__cdecl memmove(void *dest, const void *src, size_t n) -_memmove proc far - -dest = dword ptr 6 -src = dword ptr 0Ah -_length = word ptr 0Eh - - push bp - mov bp, sp - push si - push di - push [bp+_length] ; length - push word ptr [bp+dest+2] - push word ptr [bp+dest] ; dest - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - push cs - call near ptr _movmem - add sp, 0Ah - mov dx, word ptr [bp+dest+2] - mov ax, word ptr [bp+dest] - pop di - pop si - pop bp - retf -_memmove endp - +include libs/BorlandC/movmem.asm ; =============== S U B R O U T I N E ======================================= diff --git a/th04_main.asm b/th04_main.asm index 8658aac8..900e9a35 100644 --- a/th04_main.asm +++ b/th04_main.asm @@ -7803,107 +7803,7 @@ _getenv endp include libs/BorlandC/memcmp.asm include libs/BorlandC/memcpy.asm include libs/BorlandC/memset.asm - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; void __cdecl movmem(const void *src, void *dest, unsigned int length) -_movmem proc far - -src = dword ptr 6 -dest = dword ptr 0Ah -_length = word ptr 0Eh - - push bp - mov bp, sp - push si - push di - push ds - mov cx, word ptr [bp+dest+2] - mov bx, word ptr [bp+dest] - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - call N_PCMP@ - jnb short loc_6144 - std - mov ax, 1 - jmp short loc_6147 -; --------------------------------------------------------------------------- - -loc_6144: - cld - xor ax, ax - -loc_6147: - lds si, [bp+src] - les di, [bp+dest] - mov cx, [bp+_length] - or ax, ax - jz short loc_615A - add si, cx - dec si - add di, cx - dec di - -loc_615A: - test di, 1 - jz short loc_6164 - jcxz short loc_6173 - movsb - dec cx - -loc_6164: - sub si, ax - sub di, ax - shr cx, 1 - rep movsw - jnb short loc_6173 - add si, ax - add di, ax - movsb - -loc_6173: - cld - pop ds - pop di - pop si - pop bp - retf -_movmem endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; void *__cdecl memmove(void *dest, const void *src, size_t n) -_memmove proc far - -dest = dword ptr 6 -src = dword ptr 0Ah -_length = word ptr 0Eh - - push bp - mov bp, sp - push si - push di - push [bp+_length] ; length - push word ptr [bp+dest+2] - push word ptr [bp+dest] ; dest - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - push cs - call near ptr _movmem - add sp, 0Ah - mov dx, word ptr [bp+dest+2] - mov ax, word ptr [bp+dest] - pop di - pop si - pop bp - retf -_memmove endp - +include libs/BorlandC/movmem.asm ; =============== S U B R O U T I N E ======================================= diff --git a/th04_maine.asm b/th04_maine.asm index 8ebacc62..5b06b904 100644 --- a/th04_maine.asm +++ b/th04_maine.asm @@ -4686,107 +4686,7 @@ _getenv endp include libs/BorlandC/memcmp.asm include libs/BorlandC/memcpy.asm include libs/BorlandC/memset.asm - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; void __cdecl movmem(const void *src, void *dest, unsigned int length) -_movmem proc far - -src = dword ptr 6 -dest = dword ptr 0Ah -_length = word ptr 0Eh - - push bp - mov bp, sp - push si - push di - push ds - mov cx, word ptr [bp+dest+2] - mov bx, word ptr [bp+dest] - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - call N_PCMP@ - jnb short loc_56AC - std - mov ax, 1 - jmp short loc_56AF -; --------------------------------------------------------------------------- - -loc_56AC: - cld - xor ax, ax - -loc_56AF: - lds si, [bp+src] - les di, [bp+dest] - mov cx, [bp+_length] - or ax, ax - jz short loc_56C2 - add si, cx - dec si - add di, cx - dec di - -loc_56C2: - test di, 1 - jz short loc_56CC - jcxz short loc_56DB - movsb - dec cx - -loc_56CC: - sub si, ax - sub di, ax - shr cx, 1 - rep movsw - jnb short loc_56DB - add si, ax - add di, ax - movsb - -loc_56DB: - cld - pop ds - pop di - pop si - pop bp - retf -_movmem endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; void *__cdecl memmove(void *dest, const void *src, size_t n) -_memmove proc far - -dest = dword ptr 6 -src = dword ptr 0Ah -_length = word ptr 0Eh - - push bp - mov bp, sp - push si - push di - push [bp+_length] ; length - push word ptr [bp+dest+2] - push word ptr [bp+dest] ; dest - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - push cs - call near ptr _movmem - add sp, 0Ah - mov dx, word ptr [bp+dest+2] - mov ax, word ptr [bp+dest] - pop di - pop si - pop bp - retf -_memmove endp - +include libs/BorlandC/movmem.asm ; =============== S U B R O U T I N E ======================================= diff --git a/th04_op.asm b/th04_op.asm index ea50a2f7..71123d32 100644 --- a/th04_op.asm +++ b/th04_op.asm @@ -5299,107 +5299,7 @@ _getenv endp include libs/BorlandC/memcmp.asm include libs/BorlandC/memcpy.asm include libs/BorlandC/memset.asm - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; void __cdecl movmem(const void *src, void *dest, unsigned int length) -_movmem proc far - -src = dword ptr 6 -dest = dword ptr 0Ah -_length= word ptr 0Eh - - push bp - mov bp, sp - push si - push di - push ds - mov cx, word ptr [bp+dest+2] - mov bx, word ptr [bp+dest] - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - call N_PCMP@ - jnb short loc_5D6C - std - mov ax, 1 - jmp short loc_5D6F -; --------------------------------------------------------------------------- - -loc_5D6C: - cld - xor ax, ax - -loc_5D6F: - lds si, [bp+src] - les di, [bp+dest] - mov cx, [bp+_length] - or ax, ax - jz short loc_5D82 - add si, cx - dec si - add di, cx - dec di - -loc_5D82: - test di, 1 - jz short loc_5D8C - jcxz short loc_5D9B - movsb - dec cx - -loc_5D8C: - sub si, ax - sub di, ax - shr cx, 1 - rep movsw - jnb short loc_5D9B - add si, ax - add di, ax - movsb - -loc_5D9B: - cld - pop ds - pop di - pop si - pop bp - retf -_movmem endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; void *__cdecl memmove(void *dest, const void *src, size_t n) -_memmove proc far - -dest = dword ptr 6 -src = dword ptr 0Ah -_length = word ptr 0Eh - - push bp - mov bp, sp - push si - push di - push [bp+_length] ; length - push word ptr [bp+dest+2] - push word ptr [bp+dest] ; dest - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - push cs - call near ptr _movmem - add sp, 0Ah - mov dx, word ptr [bp+dest+2] - mov ax, word ptr [bp+dest] - pop di - pop si - pop bp - retf -_memmove endp - +include libs/BorlandC/movmem.asm ; =============== S U B R O U T I N E ======================================= diff --git a/th05_main.asm b/th05_main.asm index 7d5ccf30..85a5a57c 100644 --- a/th05_main.asm +++ b/th05_main.asm @@ -8189,107 +8189,7 @@ _getenv endp include libs/BorlandC/memcmp.asm include libs/BorlandC/memcpy.asm include libs/BorlandC/memset.asm - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; void __cdecl movmem(const void *src, void *dest, unsigned int length) -_movmem proc far - -src = dword ptr 6 -dest = dword ptr 0Ah -_length = word ptr 0Eh - - push bp - mov bp, sp - push si - push di - push ds - mov cx, word ptr [bp+dest+2] - mov bx, word ptr [bp+dest] - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - call N_PCMP@ - jnb short loc_6470 - std - mov ax, 1 - jmp short loc_6473 -; --------------------------------------------------------------------------- - -loc_6470: - cld - xor ax, ax - -loc_6473: - lds si, [bp+src] - les di, [bp+dest] - mov cx, [bp+_length] - or ax, ax - jz short loc_6486 - add si, cx - dec si - add di, cx - dec di - -loc_6486: - test di, 1 - jz short loc_6490 - jcxz short loc_649F - movsb - dec cx - -loc_6490: - sub si, ax - sub di, ax - shr cx, 1 - rep movsw - jnb short loc_649F - add si, ax - add di, ax - movsb - -loc_649F: - cld - pop ds - pop di - pop si - pop bp - retf -_movmem endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; void *__cdecl memmove(void *dest, const void *src, size_t n) -_memmove proc far - -dest = dword ptr 6 -src = dword ptr 0Ah -_length = word ptr 0Eh - - push bp - mov bp, sp - push si - push di - push [bp+_length] ; length - push word ptr [bp+dest+2] - push word ptr [bp+dest] ; dest - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - push cs - call near ptr _movmem - add sp, 0Ah - mov dx, word ptr [bp+dest+2] - mov ax, word ptr [bp+dest] - pop di - pop si - pop bp - retf -_memmove endp - +include libs/BorlandC/movmem.asm ; =============== S U B R O U T I N E ======================================= diff --git a/th05_maine.asm b/th05_maine.asm index be60103a..921aacdb 100644 --- a/th05_maine.asm +++ b/th05_maine.asm @@ -5465,107 +5465,7 @@ _getenv endp include libs/BorlandC/memcmp.asm include libs/BorlandC/memcpy.asm include libs/BorlandC/memset.asm - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; void __cdecl movmem(const void *src, void *dest, unsigned int length) -_movmem proc far - -src = dword ptr 6 -dest = dword ptr 0Ah -_length = word ptr 0Eh - - push bp - mov bp, sp - push si - push di - push ds - mov cx, word ptr [bp+dest+2] - mov bx, word ptr [bp+dest] - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - call N_PCMP@ - jnb short loc_5B98 - std - mov ax, 1 - jmp short loc_5B9B -; --------------------------------------------------------------------------- - -loc_5B98: - cld - xor ax, ax - -loc_5B9B: - lds si, [bp+src] - les di, [bp+dest] - mov cx, [bp+_length] - or ax, ax - jz short loc_5BAE - add si, cx - dec si - add di, cx - dec di - -loc_5BAE: - test di, 1 - jz short loc_5BB8 - jcxz short loc_5BC7 - movsb - dec cx - -loc_5BB8: - sub si, ax - sub di, ax - shr cx, 1 - rep movsw - jnb short loc_5BC7 - add si, ax - add di, ax - movsb - -loc_5BC7: - cld - pop ds - pop di - pop si - pop bp - retf -_movmem endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; void *__cdecl memmove(void *dest, const void *src, size_t n) -_memmove proc far - -dest = dword ptr 6 -src = dword ptr 0Ah -_length = word ptr 0Eh - - push bp - mov bp, sp - push si - push di - push [bp+_length] ; length - push word ptr [bp+dest+2] - push word ptr [bp+dest] ; dest - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - push cs - call near ptr _movmem - add sp, 0Ah - mov dx, word ptr [bp+dest+2] - mov ax, word ptr [bp+dest] - pop di - pop si - pop bp - retf -_memmove endp - +include libs/BorlandC/movmem.asm ; =============== S U B R O U T I N E ======================================= diff --git a/th05_op.asm b/th05_op.asm index 96aa51f6..450fbc62 100644 --- a/th05_op.asm +++ b/th05_op.asm @@ -4981,107 +4981,7 @@ _getenv endp include libs/BorlandC/memcmp.asm include libs/BorlandC/memcpy.asm include libs/BorlandC/memset.asm - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; void __cdecl movmem(const void *src, void *dest, unsigned int length) -_movmem proc far - -src = dword ptr 6 -dest = dword ptr 0Ah -_length = word ptr 0Eh - - push bp - mov bp, sp - push si - push di - push ds - mov cx, word ptr [bp+dest+2] - mov bx, word ptr [bp+dest] - mov dx, word ptr [bp+src+2] - mov ax, word ptr [bp+src] - call N_PCMP@ - jnb short loc_59BC - std - mov ax, 1 - jmp short loc_59BF -; --------------------------------------------------------------------------- - -loc_59BC: - cld - xor ax, ax - -loc_59BF: - lds si, [bp+src] - les di, [bp+dest] - mov cx, [bp+_length] - or ax, ax - jz short loc_59D2 - add si, cx - dec si - add di, cx - dec di - -loc_59D2: - test di, 1 - jz short loc_59DC - jcxz short loc_59EB - movsb - dec cx - -loc_59DC: - sub si, ax - sub di, ax - shr cx, 1 - rep movsw - jnb short loc_59EB - add si, ax - add di, ax - movsb - -loc_59EB: - cld - pop ds - pop di - pop si - pop bp - retf -_movmem endp - - -; =============== S U B R O U T I N E ======================================= - -; Attributes: library function bp-based frame - -; void *__cdecl memmove(void *dest, const void *src, size_t n) -_memmove proc far - -dest = dword ptr 6 -src = dword ptr 0Ah -_length = word ptr 0Eh - - push bp - mov bp, sp - push si - push di - push [bp+_length] ; length - push word ptr [bp+dest+2] - push word ptr [bp+dest] ; dest - push word ptr [bp+src+2] - push word ptr [bp+src] ; src - push cs - call near ptr _movmem - add sp, 0Ah - mov dx, word ptr [bp+dest+2] - mov ax, word ptr [bp+dest] - pop di - pop si - pop bp - retf -_memmove endp - +include libs/BorlandC/movmem.asm ; =============== S U B R O U T I N E =======================================