Инструкция
A jmp
действует как инструкция goto
. Он передает управление на новое место, и выполнение продолжается в этой точке; вы не вернетесь с jmp
(хотя вы можете выпустить еще jmp
).
В этом конкретном примере код в $ LN2 падает до $ LN3, поэтому каждый раз, когда выполняется $ LN2, будет выполняться $ LN3. Код в $ LN3 сравнивает счетчик цикла, чтобы увидеть, достигло ли оно максимального значения. Инструкции cmp
(«сравнить») и jae
(«выше или равно») выполняют сравнение, а затем выходят из цикла, если условие выполнено (то есть счетчик равен или превышает длину). Другими словами, если ваш счетчик цикла <длина, то <code>jae ничего не делает и переходит к следующей инструкции. Однако, если counter> = length, вы переходите к $ LN4, который выходит из цикла.