Страница 1 из 1

Вложеный цикл

Добавлено: Сб сен 27, 2014 21:49:23
Резистор
Здравствуйте.

Решил я немного попрограммировать на языке ассемблера. В качестве первой практики написал программу для испытания вложенного цикла( for в for'e )

Пишу для МК attiny2313. Вот код:

Код: Выделить всё

.include "tn2313def.inc"

.def temp = R16
.def temp1 = R17

main:

	ldi temp,   0xA
	ldi temp1, 0x5 

	loop_1: ;цикл №1

		loop_2: ;цикл №2

			dec temp1
			brne loop_2

		dec temp
		brne loop_1
rjmp main


Пытаюсь отладить программу в отладчике. На первой итерации цикла №1 всё идёт по плану. Но на второй итерации цикла №1, цикл №2 выполняет больше пяти итераций.

Где я допустил ошибку?

Re: Вложеный цикл

Добавлено: Сб сен 27, 2014 22:42:07
КРАМ
Установка счетчика внутреннего цикла должна происходить ВНУТРИ ВНЕШНЕГО ЦИКЛА, а не перед ним.
В результате у Вас после второго входа во внутренний цикл переменная temp1 проскочила ноль и будет декрементироваться 255 раз.
.include "tn2313def.inc"

.def temp = R16
.def temp1 = R17

main:

ldi temp, 0xA
ldi temp1, 0x5

loop_1: ;цикл №1

ldi temp1, 0x5

loop_2: ;цикл №2

dec temp1
brne loop_2

dec temp
brne loop_1
rjmp main

Re: Вложеный цикл

Добавлено: Вс сен 28, 2014 05:52:31
Резистор
Всё. Понял. Спасибо