Kakšna je uporaba smerne zastavice in sledi v 8086?
Zastavica smeri (DF):
- Zastavica smeri označuje smer zadnje operacije niza (navodila niza, kot so REP MOVS, REP CMPS itd.).
- Ko je DF=0, operacije z nizi povečajo podatkovne kazalce (DS, SI in DI).
- Ko je DF=1, operacije z nizi zmanjšajo podatkovne kazalce.
Zastavica za sledenje (TF):
- Zastavica sledenja se uporablja za korakanje skozi program med odpravljanjem napak.
- Ko je TF=0, se program izvaja normalno.
- Ko je TF=1, procesor ustvari prekinitev (INT 1) po vsakem ukazu, kar daje programerju možnost pregledati stanje programa in registrov.
Tukaj je primer za ponazoritev uporabe zastavice za smer:
```sestavljanje
; Inicializirajte podatkovne kazalce
mov si, offset sourceData; Kazalec izvornih podatkov
mov di, offset destData; Kazalec podatkov o cilju
mov cx, dolžina; Število bajtov za kopiranje
; Kopirajte podatke od vira do cilja v naraščajočem vrstnem redu
rep movsb; Kopiraj bajte (inkrementiraj kazalce)
; Obrnite vrstni red podatkov v cilju
mov si, offset destData
mov di, offset destData + length - 1
mov cx, dolžina
; Kopirajte podatke iz cilja nazaj v vir v padajočem vrstnem redu
rep movsb; Kopiraj bajte (zmanjšaj kazalce)
```
V zgornjem primeru se zastavica smeri uporablja za nadzor smeri operacij kopiranja niza. Na začetku je DF nastavljen na 0, tako da prvi REP MOVSB kopira bajte iz izvornih podatkov v ciljne podatke v naraščajočem vrstnem redu. Nato je DF nastavljen na 1 in drugi REP MOVSB kopira bajte nazaj iz destData v sourceData v padajočem vrstnem redu.
Zastavico za sledenje lahko uporabite za korakanje skozi program eno navodilo naenkrat, kar je koristno pri odpravljanju napak. Če želite uporabiti zastavico sledenja, jo lahko nastavite z navodilom INT 3 (prekinitvena točka) ali z uporabo razhroščevalnika. Ko je zastavica sledenja nastavljena, bo procesor po vsakem ukazu ustvaril prekinitev, kar vam bo omogočilo pregled stanja programa in registrov.