; rep_movsb.asm
; REP and MOVSB demo program
.586P
; Flat memory model
.MODEL FLAT, STDCALL
;---------------------------------------
; Data segment
_DATA SEGMENT
        mystring        BYTE    "abc"
        otherstr        BYTE    10  DUP(?)
        MYSTRING_SIZE   EQU     3    ; mystring is 3 bytes long
_DATA ENDS
;---------------------------------------
; Code segment
_TEXT SEGMENT
START:
        mov     esi, OFFSET mystring ; source offset
        mov     edi, OFFSET otherstr ; destination offset
        mov     ecx, MYSTRING_SIZE   ; set number of bytes to copy
        cld                          ; clear DF (destination pointers will be increased)
        rep movsb                    ; repeat until ECX is zero:
                                     ; copy mystring to otherstr
        ret                          ; Exit
_TEXT ENDS
END START