Есть решение задачи № 208 из Проекта Эйлера Ходящий робот на языке Ассемблер?

Ошибок в данном коде не выявило. Можете мне помочь с данной задачей?

mov eax, 0          ; счётчик количества возможных путей
mov ecx, 70         ; количество дуг в пути
mov ebx, 0          ; текущее направление движения (0 - север, 1 - восток, 2 - юг, 3 - запад)

check_paths:
cmp ecx, 0          ; если дуг больше нет, значит путь завершён
je end_program

mov edx, ecx        ; сохраняем количество дуг в регистр edx
dec edx             ; уменьшаем счётчик дуг на 1 (для проверки возможных направлений)

; проверяем возможные направления для следующей дуги
; если текущее направление на север, то следующее может быть на восток или на юг
cmp ebx, 0
je check_next_east_or_south
; если текущее направление на восток, то следующее может быть на север или на юг
cmp ebx, 1
je check_next_north_or_south
; если текущее направление на юг, то следующее может быть на восток или на запад
cmp ebx, 2
je check_next_east_or_west
; если текущее направление на запад, то следующее может быть на север или на запад
cmp ebx, 3
je check_next_north_or_west

check_next_east_or_south:
; двигаемся на восток
mov ebx, 1
dec ecx         ; уменьшаем количество дуг
jmp check_paths

check_next_north_or_south:
; двигаемся на север
mov ebx, 0
dec ecx         ; уменьшаем количество дуг
jmp check_paths

check_next_east_or_west:
; двигаемся на запад
mov ebx, 3
dec ecx         ; уменьшаем количество дуг
jmp check_paths

check_next_north_or_west:
; двигаемся на запад
mov ebx, 3
dec ecx         ; уменьшаем количество дуг
jmp check_paths

end_program:
; в eax теперь содержится количество возможных замкнутых путей
; можно вывести результат или использовать дальше в программе

Ответы (0 шт):