Asembler - Błąd w postaci zawieszającej się pętli

0

Witam

Mój krótki program (napisany w FASM) nie robi na razie nic, prócz wyświetlania okienka. Mam pętlę w pętli, jednak program przy odpalaniu się wiesza. Męczę się i głowię i nie wiem co jest przyczyną.

Byłbym wdzięczny, gdyby ktoś zerknął na moje pętle
Fragment programu:

 
warunek_i:
        ;for(double i = 0; i < YMAX)
        mov eax, [YMAX]
        cmp [i], eax
        jne petla_i
        je przerwij

          petla_i:

          warunek_j:
          ;for(double j = 0; j < XMAX)
          mov eax, [XMAX]
          cmp [j], eax
          jne petla_j
          je ink_i

             petla_j:

             mov cx, 5

            ety:


            cmp cx, 0
            je zakoncz
            dec cx
            jmp ety


            zakoncz:



             ink_j:
             ;j++
             add [j], 1
             jmp warunek_j

        ink_i:
        ;i++
        add [i], 1
        jmp warunek_i


       przerwij:

Kod źródłowy w załączniku

0

emu8086 twoim przyjacielem.

0

Nie wiedziałem, że istnieje taki program - dzięki :)

Problem z tematu na szczęście już rozwiązałem, jednak szkoda, że ten programik obsługuje tylko programy 16-bitowe :( Ollydbg nie jest już (w moim przekonaniu) już taki przejrzysty jak ten co podałeś, Shalom

0

Napisz gdzie był problem, dla potomnych ;) Niestety emu8086 idealne nie jest (nie wspiera np koprocesora) ale mimo to jest bardzo wygodne i znacznie skraca czas szukania błędów :)

0

Już się robi. Problem rozwiązało zmienienie rejestru eax na rejestr ax i zmienienie zmiennej dd na dw. Jeśli ktoś jest w stanie to wytłumaczyć to proszę się nie krępować

1 użytkowników online, w tym zalogowanych: 0, gości: 1