Я использую NASM и застрял на том, как вернуться в al oop после прыжка с одного.
В _start
я использовал call loop1
, чтобы запустить l oop. L oop успешно выполняется, и первая итерация l oop выводит a
, что я и хочу. Цель этого l oop состоит в том, чтобы перебрать значение в edi
и распечатать каждый символ, если это буква a
. В настоящее время он печатает только один a
, если находит хотя бы один a
в edi
, и ничего, если не может его найти.
Да, все метки, используемые в этом коде, определены так что это не проблема. Пожалуйста, прокомментируйте, если мне нужно опубликовать мой полный код.
Вот мой код:
loop1:
cmp [edi], byte 0
je endloop
cmp byte [edi], 'a'
je istrue1
add edi, dword 1
add [n], dword 1
jmp loop1
endloop:
ret
istrue1:
mov ecx,edi
mov edx,1
call print
jmp loop1
Причина, по которой я использую этот подход, заключается в том, что я ранее делал это с .loop
внутри _start
и это не сработало так, как я задумал, поэтому я подумал, что не будет никаких проблем, если я включу это в процедуру.
Спасибо всем, кто может мне помочь с этим:)