Оказывается стек и правда работает как в книжке. А мой код запускается нормально обычно один раз, а возврат из кода происходит куда-то туда. В общем если в стек положить что-то. а потом сделать RET, то возврат произойдет по адресу который был положен только что в стек =) Однако здравствуй чатик и рефакторинг =)