start:
stdcall cmpStr,str1,str2
.if eax
cinvoke printf,szEqual
cinvoke _getch
.else
cinvoke printf,szNot_e
cinvoke _getch
.endif
exit:
invoke ExitProcess,0
;====================================
proc cmpStr,str1,str2
stdcall LenStr,[str1]
mov ebx,eax
stdcall LenStr,[str2]
.if ebx = eax
xor ecx,ecx
mov esi,[str1]
mov edi,[str2]
.repeat
inc ecx
cmpsb
.if ~ ZERO?
mov eax,FALSE
ret
.endif
.until ecx = eax
mov eax,TRUE
ret
.else
mov eax,FALSE
ret
.endif
proc LenStr,str
mov ecx,-1
mov esi,[str]
.repeat
inc ecx
.until byte[esi+ecx] = 0
mov eax,ecx
ret
endp
endp
section '.data' data readable writable
str1 db "Hello world!",0
str2 db "Hello world!",0
szNot_e db "Strings not equal",0
szEqual db "Strings equal",0