abc Asembler - elektronski priručnik
XIII dio Petlje

Petlje

Instrukcija JMP se može koristiti za implementiranje petlji. Na primjer, sljedeći odlomak koda se može koristiti za izvršavanje tijela petlje 10 puta.

MOV  CL, 10
L1:
; < LOOP-BODY >
DEC  CL
JNZ   L1

Set procesorskih instrukcija, međutim, uključuje grupu instrukcija petlji za implementiranje iteracija. Osnovna LOOP instrukcija ima sljedeću sintaksu:

LOOP   label

Gdje je, label ciljna labela koja identifikuje ciljnu instrukciju kao u instrukcijama skoka. LOOP instrukcija pretpostavlja da ECX registar sadrži broj petlji. Kada se instrukcija petlje izvrši, ECX registar se dekrementira i kontrola skače na ciljnu labelu, sve dok vrijednost ECX registra, tj., brojač ne dostigne vrijednost nula.
Gore navedeni odlomak koda može se napisati kao:

      mov   ECX, 10
l1:
; < LOOP-BODY >
      loop  l1

Primjer
Sljedeći program ispisuje brojeve 1 do 9 na ekran:

section   .text
      global _start 	;must be declared for using gcc
_start: 			;tell linker entry point
        mov  ecx, 10
        mov  eax, '1'

l1:
        mov  [num], eax
        mov  eax, 4
        mov  ebx, 1
        push ecx
        mov  ecx, num
        mov  edx, 1
        int  0x80
        mov  eax, [num]
        sub  eax, '0'
        inc  eax
        add  eax, '0'
        pop  ecx
        loop l1
        mov  eax, 1 	;system call number (sys_exit)
        int  0x80 		;call kernel
section   .bss
num resb  1

Kada se gore navedeni kod kompajlira i izvrši, on će proizvesti sljedeći rezultat:

123456789:

Uslovni skok    <    Index    >    Brojevi