Sunteți pe pagina 1din 8

Instrucțiuni de ciclare

Instrucţiunile de ciclare pot fi folosite pentru a realiza repetarea


unor blocuri de instrucţiuni.
Permit o programare simplă a structurilor de control de tip ciclu
cu test la sfârşit.
Drept contor al ciclului este utilizat registrul cx.
Instrucţiunile de ciclare pot transfera controlul la o locaţie (ţintă)
aflată în intervalul [-128,127] de octeţi faţă de ele, deci realizează
numai transferuri de tip short.
Aceste instrucţiuni nu modifică nici un indicator.
Instrucțiuni de ciclare

FG. jcxz <etichetă>


S. Salt la instrucţiunea indicată de etichetă dacă cx este 0
AF. Nu modifică nici un indicator.
Instrucțiuni de ciclare

FG. loop <etichetă>


S. (cx)= (cx) -1
Dacă (cx)<>0 atunci salt la instrucţiunea indicată de
etichetă, în caz contrar se execută instrucţiunea ce urmează
după instrucţiunea loop.
AF. Nu modifică nici un indicator.
Instrucțiuni de ciclare
FG. loope /loopz <etichetă>
S. (cx)= (cx) -1
Dacă (cx)<>0 şi (zf)=1 atunci salt la instrucţiunea indicată de
etichetă, în caz contrar se execută instrucţiunea ce urmează după
instrucţiunea loope/loopz.
AF. Nu modifică nici un indicator.
Condiţia pentru a efectua saltul la etichetă, în plus faţă de instrucţiunea loop
este şi condiţia zf=1, adică rezultatul ultimei operaţii din ciclu va trebui să
poziţioneze zf pe 1 pentru a permite reluarea ciclului; în caz contrar, execuţia
ciclului se va termina.
În acest caz sfârşitul ciclului se va datora fie îndeplinirii condiţiei zf=0, fie
condiţiei cx=0, fie pentru amândouă.
Instrucțiuni de ciclare
FG. loopne /loopnz <etichetă>
S. (cx)= (cx) -1
Dacă (cx)<>0 şi (zf)=0 atunci salt la instrucţiunea indicată de
etichetă, în caz contrar se execută instrucţiunea ce urmează după
instrucţiunea loopne/loopnz.
AF. Nu modifică nici un indicator.

Sfârşitul ciclului se va datora fie îndeplinirii condiţiei zf=1, fie condiţiei


cx=0, fie pentru amândouă.
Sarcini:
mov ax, 5 mov bx, 33 mov bx, 6
mov cx, 6 m1: mov cx, 3 mov cx, 5
m: add ax, 3 sub bx, 4 m2: add bx, cx
loop m loop m1 loop m2
Sarcini
mov cx, 7 mov cx, 6 mov ax,30 mov cx, 7
mov ax,5 mov ax,10 mov bx,12 mov ax,25
mov bx,20 m1: add ax,5 add ax,bx mov bx,10
cmp ax,bx dec cx mov cx, 10 xchg ax,bx
jg m jcxz m2 m: inc ax cmp ax,bx
m1: add ax,cx jmp m1 loop m jb m
loop m1 m2: mov bx,2 mov cl,10 add ax,bx
m: mov dl,9 mul bx add bl,cl m: inc bx
div dl add ax,bx div bl add ax,cx
add ah,al neg ax add ah,al dec cx
jcxz m1
jmp m
m1: div bl
Sarcini:

1. Fie M[1..n] un tablou de numere întregi, unde n=10. Scieți secvența de ce


calculează numărul elementelor egale cu 6.

2. Scrieți secvența de program ce calculează numărul literelor mari dintr-un sir


de 15 simboluri.

S-ar putea să vă placă și