segment .data a: db "This is fun" b: db "This is not" segment .text global main global memcmp memcmp: push rdi push rsi mov rdi, rcx mov rsi, rdx mov rcx, r8 repe cmpsb cmp rcx, 0 jz equal movzx eax, byte [rdi-1] movzx ecx, byte [rsi-1] sub rax, rcx pop rsi pop rdi ret equal: xor eax, eax pop rsi pop rdi ret main: push rbp mov rbp, rsp sub rsp, 32 lea rcx, [a] ; first parameter to memcmp lea rdx, [b] ; second parameter mov r8, 11 ; third parameter, count call memcmp xor eax, eax leave ret