scf
scf nebo SCF je instrukce některých procesorů, např. Z80 či ST9[1]. Název instrukce je odvozen z výrazu set carry flag.[2] Instrukce nastavuje hodnotu příznaku přenosu C na logickou jedičku, u podmíněných instrukcí tedy pak platí podmínka C.
Instrukce procesoru Z80
Kód instrukce | ||||||||
---|---|---|---|---|---|---|---|---|
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
1. byte | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 |
Kód instrukce scf je jednobytový, jeho hodnota je 55 desítkově a 37 šestnáctkově. Vykonání instrukce vyžaduje jeden M-cyklus a trvá čtyři T-cykly.[3][4][5]
Instrukci je nutné použít v případě, kdy je požadováno nastavení příznaku přenosu na logickou nulu a současně nesmí dojít k ovlivnění ostatních příznaků, v tomto případě musí být instrukce scf následována instrukcí ccf.[2] Instrukce ccf mění hodnotu příznaku přenosu na hodnotu opačnou.
Instrukce kromě příznaku přenosu ovlivňuje pouze příznaky, které není možné přímo testovat, jak příznak odečítání N tak příznak polovičního přenosu H jsou po vykonání instrukce scf nastaveny na logickou nulu.[3][4][2]
V roce 2012 se věnoval zkoumání funkce procesoru Z80 český programátor Patrik Rak a objevil, že pokud nějaká instrukce procesoru nastavuje některý z příznaků v registru F, následující instrukce scf nebo ccf pouze přenese stav bitů 3 a 5 registru A do odpovídajících bitů registru F, zatímco pokud instrukce procesoru nenastavuje žádný příznak, následující instrukce scf nebo ccf do bitů 3 a 5 registru F uloží výsledek operace OR odpovídajících bitů registru A a registru F.[6][7]
Odpovídající instrukce v instrukční sadě procesoru Intel 8080 je STC.[8]
Reference
- ↑ MONEY, Steve A. Microprocessor Data Book. [s.l.]: Academic Press, Inc., 1990. (2nd edition). Dostupné online. ISBN 0-12-504445-3. Kapitola SGS-Thompson ST9 Microcontroller, s. 104–105. ((anglicky))
- ↑ a b c VILÍM, Tomáš. Assembler a ZX Spectrum, 1. díl. Ústí nad Labem: Proxima - Software, 1992.
- ↑ a b ZAKS, Rodnay. Programming the Z80. [s.l.]: Sybex, 1981. 624 s. (Third edition). Dostupné online. ISBN 0-89588-094-6. S. 424. ((anglicky)) Poznámka: Odkazovaný soubor má desky z jiného vydání knihy, které navíc vyšlo i pod jiným názvem a s jiným ISBN
- ↑ a b 8ビット CPU Z80命令セット [online]. Rev. 2015-08-23 [cit. 2015-12-31]. Kapitola ビット操作. Dostupné online. ((japonsky))
- ↑ CIARCIA, Steve. Build Your Own Z80 Computer: Design Guidelines and Application Notes. [s.l.]: [s.n.], 1981. Dostupné online. ISBN 0-07-010962-1. Kapitola General purpose arithmetic and CPU control groups, s. 60–63. ((anglicky))
- ↑ Z80 Archivováno 25. 12. 2015 na Wayback Machine. na Sinclair FAQ, vyd. 2011-06-03, akt. 2015-09-30, cit. 2016-01-08
- ↑ SCF/CCF flags - new discovery na World of Spectrum, cit. 2016-01-08
- ↑ DURDA, Frank. 8080/Z80 Instruction Set [online]. [cit. 2016-01-08]. Kapitola Special Accumulator and Flag Instructions. Dostupné v archivu pořízeném dne 2016-02-11. ((anglicky))