zombie-core-utils/diff.asm
2021-09-18 06:31:46 -04:00

84 lines
1 KiB
NASM

extern puts
%include "../inc/length_func.inc"
section .data
text db "REEEEEEEEEE",0
text2 db "REEEEEEErEE",0
differ db "they differ",0
notdiffer db "they do not differ",0
textlength dq 0
text2length dq 0
section .text
global main
main:
sub rsp, 8 ;enter
;below we are getting the length of each string
;we do this because we dont want to compare with memory that isnt ours
mov r8, text
call length_func
mov [textlength], rax
mov r8, text2
call length_func
mov [text2length], rax
mov r8, [textlength]
mov r9, [text2length]
cmp r8, r9
jne _differ
xor rcx, rcx ;we do this to clear garbage in rcx (i have had garbage in it before)
_loop:
;loop tings
mov r8, text
add r8, rcx
mov r9, text2
add r9, rcx
mov r10b, [r8]
mov r11b, [r9]
cmp r10b, r11b
jne _differ
cmp r10b, 0
je _notdiffer
cmp r11b, 0
je _notdiffer
inc rcx
jmp _loop
_differ:
mov rdi, differ
cld
call puts
jmp _end
_notdiffer:
mov rdi, notdiffer
cld
call puts
_end:
add rsp, 8 ;exit
ret