Asembler - cyklus

Programovacie jazyky, rady, poradňa...
Zlatohlavok
Light Expert
Light Expert
Príspevky: 40
Registrovaný: 24 nov 2010, 19:38

Asembler - cyklus

Príspevok od používateľa Zlatohlavok »

Nazdar, potrebujem spravit cyklus a vyskocit z neho ked sa zopakuje n-krat
START:
MOV cx,0
A:
... ; tu mam nejaky kod
inc cx ; tu by sa mala pripocitat 1
cmp cx,5 ;ak sa rovna tak by malo vratit 1
JNZ PREC ;jump not zero, tda malo by to skocit prec
JMP A ; znova sa zopakuje cyklus

Takto som to mal nejako ale iba sa to cyklilo, nechce mi to ani zanic vyskocit prec a skoncit cyklus.

Prípadne nejaky iny typ cyklu neviete? To je jedno aky len nech mi to odtial vyskoci a necykli sa to. Diky :)
pcsiete
Medium Star
Medium Star
Príspevky: 413
Registrovaný: 07 dec 2012, 18:47

Re: Asembler - cyklus

Príspevok od používateľa pcsiete »

myslim ze to mas opacne. takto by to malo ist, vyskoci ti to samo

Kód: Vybrať všetko

xor cx, cx
.cyklus:
    ; kód

    inc cx
    cmp cx, 5
    jne .cyklus
;pokracovanie kodu
Zlatohlavok
Light Expert
Light Expert
Príspevky: 40
Registrovaný: 24 nov 2010, 19:38

Re: Asembler - cyklus

Príspevok od používateľa Zlatohlavok »

To prvé xor cx,cx by malo byt xor cx,5 nie?
Takto to cyklí, podla toho ako si napisal.

Ved musi tma byt niekde JMP PREC v tom kode, pred jne cyklus, lebo inac sa to bue stale tocit dokolecka, nie?
pcsiete
Medium Star
Medium Star
Príspevky: 413
Registrovaný: 07 dec 2012, 18:47

Re: Asembler - cyklus

Príspevok od používateľa pcsiete »

Nie. mas asi skusenosti len s vyssimi jazykmi. Xor je operacia vyberajuca len exkluzivne hodnoty (vstup 1:1 = 0, 0:0=0, 1:0=1, 0:1=1). To znamena ze xor cx, 5 by mohol mat vysledok 5 rovnako ako 0, 1 alebo 4.
Cyklus funguje len pokym cx!=5. V momente, ked bude cx=5 sa jne .cyklus nevykona a kod bude pokracovat sam nasledujucou instrukciou, cize nie ako je tomu vo vyssich jazykoch ako C.
Napísať odpoveď