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
|