Ľudmila Jánošíková

Programovanie v jazyku symbolických adries

pre 32-bitové procesory Intel
Obsah Index
Inštrukcie cyklu

Inštrukcie cyklu nemenia príznakové bity:

OF SF ZF AF PF CF
- - - - - -

loop návestie (loop control with CX counter)

V 32-bitovom režime inštrukcia loop dekrementuje register ECX a porovná ho s nulou, pričom nezmení hodnoty príznakových bitov. Ak je nový obsah registra ECX rôzny od nuly, vykoná sa skok na návestie, v opačnom prípade pokračuje spracovanie programu nasledujúcou inštrukciou. Návestie označuje prvú inštrukciu cyklu. Pretože obsah ECX sa testuje až po dekrementovaní, nemôžeme očakávať, že cyklus sa nevykoná ani raz, ak je na začiatku cyklu hodnota ECX nulová. Ak chceme ošetriť takúto situáciu, musíme pred prvú inštrukciu cyklu zaradiť príkaz jecxz – skok na návestie za inštrukciou loop.

Inštrukcie

loope návestie
loopz návestie

dekrementujú register ECX a porovnajú ho s nulou. Ak je nový obsah registra ECX rôzny od nuly a príznak ZF = 1, vykoná sa skok na návestie, v opačnom prípade pokračuje spracovanie programu nasledujúcou inštrukciou.

Inštrukcie

loopne návestie
loopnz návestie

dekrementujú register ECX a porovnajú ho s nulou. Ak je nový obsah registra ECX rôzny od nuly a príznak ZF = 0, vykoná sa skok na návestie, v opačnom prípade pokračuje spracovanie programu nasledujúcou inštrukciou.

V nasledujúcom príklade použijeme inštrukcie loopnz a jecxz.

Úloha

Čítajte znaky zadávané z klávesnice a ukladajte ich do premennej IOBuffer, kým sa nestlačí ENTER alebo nezadá MaxPocet znakov.

Riešenie

TITLE MASM CitajRet(main.asm)
INCLUDE Irvine32.inc
MaxPocet EQU 80
IOBuffer DB MaxPocet dup (?)
.code
main PROC
        mov ecx,MaxPocet
        jecxz Koniec
        mov edx,offset IOBuffer
        mov edi,0
Citaj:  call ReadChar
        call WriteChar
        mov [edx+edi],al; ulož znak do premennej IOBuffer
        inc edi
        cmp al,0Dh; bol ENTER?
        loopne Citaj; ak nebol, opakuj cyklus
Koniec:
exit
main ENDP
END main

Hore

Načo je vám jazyk symbolických adries?

Architektúra moderných procesorov

Registre

Spôsoby adresovania

Premenné a návestia

Symbolické konštanty

Inštrukčný súbor

Segmentové direktívy

Moduly

Služby operačného systému MS-DOS

Služby operačného systému Windows 95/98/NT/XP

Systémová úroveň vstupu a výstupu

Prostriedky pre prípravu programu

Skokové inštrukcie | Inštrukcie pre prácu so zásobníkom
Vydala Žilinská univerzita v Žiline, 2000. ISBN 80-7100-723-4.
Otázky a pripomienky môžete poslať autorke.
Naposledy upravené 16.10.2015.