; The OS/K Team licenses this file to you under the MIT license. ; See the LICENSE file in the project root for more information. ; ; int strcmp(const char *str1, const char *str2) ; ; Returns: ; 0 if the contents of both strings are equal ; >0 if the first character that does not match has a greater value in str1 than in str2 ; <0 if the first character that does not match has a lower value in str1 than in str2 ; strcmp: mov rcx, zero .l: movzx rax, b[ax0+rcx] movzx rdx, b[ax1+rcx] cmp rax, rdx jmp.nz .r ; both zero? add rbx, rax, rdx jmp.bxz .r inc rcx, 1 jmp .l .r: dec rax, rdx ret ; ; int strncmp(const char *str1, const char *str2, int maxn) ; strncmp: mov rcx, ax2 jmp.cxz .r .l: movzx rax, b[ax0] movzx rdx, b[ax1] cmp rax, rdx jmp.nz .r inc ax0, 1 inc ax1, 1 loop .l .r: dec rax, rdx ret