2021-09-18 06:06:05 -04:00
|
|
|
extern puts
|
|
|
|
%include "../inc/length_func.inc"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
section .data
|
2021-09-18 06:31:46 -04:00
|
|
|
text db "REEEEEEEEEE",0
|
|
|
|
text2 db "REEEEEEErEE",0
|
2021-09-18 06:06:05 -04:00
|
|
|
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
|
|
|
|
|
|
|
|
|
2021-09-18 06:31:46 -04:00
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-09-18 06:06:05 -04:00
|
|
|
|
|
|
|
_differ:
|
|
|
|
mov rdi, differ
|
|
|
|
cld
|
|
|
|
call puts
|
|
|
|
jmp _end
|
|
|
|
|
|
|
|
_notdiffer:
|
|
|
|
mov rdi, notdiffer
|
|
|
|
cld
|
|
|
|
call puts
|
|
|
|
|
|
|
|
_end:
|
|
|
|
add rsp, 8 ;exit
|
|
|
|
ret
|