Annotation of coherent/b/lib/libc/string/i8086/strncmp.m, revision 1.1.1.1

1.1       root        1: //////////
                      2: / i8086 C string library.
                      3: / strncmp()
                      4: / ANSI 4.11.4.4.
                      5: //////////
                      6: 
                      7: //////////
                      8: / strncmp(String1, String2, Count)
                      9: / char *String1, *String2;
                     10: / int Count;
                     11: /
                     12: / Compare up to Count bytes of String1 and String2.
                     13: //////////
                     14: 
                     15: #include <larges.h>
                     16: 
                     17: String1        =       LEFTARG
                     18: String2        =       String1+DPL
                     19: Count  =       String2+DPL
                     20: 
                     21:        Enter(strncmp_)
                     22:        mov     dx, $0          / Result to DX
                     23:        mov     cx, Count(bp)   / Count to CX
                     24:        or      cx, cx
                     25:        je      4f              / Zero length, return equal
                     26:        Lds     si, String2(bp) / String2 address to DS:SI
                     27:        Les     di, String1(bp) / String1 address to ES:DI
                     28:        cld
                     29: 
                     30: 1:     lodsb                   / String2 character to AL
                     31:        scasb                   / and compare to String1 character
                     32:        jne     2f              / Mismatch
                     33:        orb     al, al
                     34:        loopne  1b              / Continue if CX!=0 && AL!=0
                     35:        jmp     4f              / Match, return 0
                     36: 
                     37: 2:     ja      3f
                     38:        inc     dx              / String1 > String2, return 1
                     39:        jmp     4f
                     40: 
                     41: 3:     dec     dx              / String1 < String2, return -1
                     42: 
                     43: 4:     mov     ax, dx          / Result to AX
                     44:        Leave

unix.superglobalmegacorp.com

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