1# 2# memmove.S 3# 4# Simple 16-bit memmove() implementation 5# 6 7 .text 8 .code16gcc 9 .globl memmove 10 .type memmove, @function 11memmove: 12 pushw %di 13 pushw %si 14 movw %ax,%di 15 movw %dx,%si 16 cmpw %si,%di 17 ja 1f 18 # The third argument is already in cx 19 cld 20 rep ; movsb 212: 22 popw %si 23 popw %di 24 ret 25 261: /* si <= di, need reverse copy */ 27 add %cx,%di 28 add %cx,%si 29 dec %di 30 dec %si 31 std 32 rep ; movsb 33 cld 34 jmp 2b 35 36 .size memmove,.-memmove 37