Annotation of coherent/b/lib/libc/crt/i8086/blkmv.s, revision 1.1

1.1     ! root        1: ////////
        !             2: /
        !             3: / Intel 8086 C runtime.
        !             4: / SMALL model.
        !             5: /
        !             6: ////////
        !             7: 
        !             8:        .globl  blkmv
        !             9: 
        !            10: ////////
        !            11: /
        !            12: / char *
        !            13: / blkmv(dptr, sptr, nbytes);
        !            14: / char *dptr;
        !            15: / char *sptr;
        !            16: /
        !            17: / Copy a block of bytes of length "nbytes" from
        !            18: / the block at "sptr" to the block at "dptr".
        !            19: / This routine is called by generated code for structure assignment and
        !            20: / for functions that return structures.
        !            21: /
        !            22: / The function returns the start address of the destination buffer.
        !            23: / This is used as the return value of a function returning a structure.
        !            24: /
        !            25: ////////
        !            26: 
        !            27: blkmv: push    si                      / standard
        !            28:        push    di                      / c
        !            29:        push    bp                      / function
        !            30:        mov     bp,sp                   / linkage.
        !            31: 
        !            32:        mov     cx,12(bp)               / grab the byte count.
        !            33:        jcxz    L0                      / duck if no bytes.
        !            34:        mov     si,10(bp)               / get source and
        !            35:        mov     di, 8(bp)               / destination pointers.
        !            36:        cld                             / move forward
        !            37:        rep                             / copy
        !            38:        movsb                           / the data block.
        !            39: 
        !            40: L0:    mov     ax, 8(bp)               / return dptr.
        !            41: 
        !            42:        mov     sp,bp                   / standard
        !            43:        pop     bp                      / c
        !            44:        pop     di                      / function
        !            45:        pop     si                      / linkage.
        !            46:        ret                             / done.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.