Skoda, ze v priklade je zminen jenom 1 typ preruseni (tady nemaskovatelne), pritom treba 6502 pouziva maskovatelne i nemaskovatelne. Bylo by zajimave vysvetlit rozdily.
Jinak ohledne: """Přerušovací rutina, která modifikuje obsah obou pracovních registrů tedy musí začínat a končit takto:"""
Ta rutina nemusi nutne pouzivat zasobnik, i kdyz je to bezna praxe. Dulezite je navratit obsah menenych registru zpet, no a protoze leckdy jde o to, aby preruseni bylo vykonano co nejrychleji, tak lze pouzit i jine techniky.
Napr. docela
; vstup do irq
IRQ STA tempadd ; ulozeni A nekam docasne
... vlastni prace v preruseni
LDA tempadd ; nacteni A z docasneho ulozeni
RTS ; navrat z preruseni
tempadd .byte 00 ; temporary prostor
Nebo jeste drsneji
; vstup do irq
IRQ STA zpet+1 ; ulozeni A primo do mista zpetneho nacteni
... vlastni prace v preruseni
zpet LDA #00 ; nacteni A, kde bude 00 zmenena podle vstupu do IRQ
RTS ; navrat z preruseni
Tyto a obdobne techniky dost zasadne zkracuji pocet cyklu potrebnych na preruseni, protoze prace se zasobnikem je vetsinou casove nejnakladnejsi.
Pravda, pokud budeme předpokládat, že přerušení je jednoúrovňové (a nebude se tedy před ukončením přerušovací rutiny volat přerušení další), tak je použití zásobníku overkill. Taky na některých mikroprocesorech lze použít stínové registry (například druhou sadu registrů) - viz Z80, 8048, 8051 atd. Pro co největší urychlení přerušovací rutiny jsou všechny postupy dobré.