; сравнение строк на равенство
; в bx адрес первой строки, в si адрес второй
; результат если = то в cx=1 а иначе 0
comapre_strs:
push bx
push si
push ax
mov cx, 1 ; изначально считаем, что строки равны
.comp:
mov ah, [bx]
cmp [si], ah
jne .not_equal ; если нет равенства, то далее сравнивать нет смысла
cmp ah, 0
je .equal_and_exit ; если встречен 0, то конец цикла
inc si
inc bx
jmp .comp
.not_equal
mov cx, 0 ; сообщаем, что строки не равны
.equal_and_exit:
pop ax
pop si
pop bx
ret
Тут:
NASM предоставляет решение - локальные метки. Локальные метки по сути те же метки, только перед их названием ставится точка
Убрал дублирование части кода.
Если у вас идет в стек
push si
push bx
то брать назад