ReAl (30.05.2007 14:26, просмотров: 1) ответил Т.Достоевский на Согласен абсолютно! Особенно в в свете появления двухядерных мелкоконтроллеров.
Тю, зачем эти сложности и ещё и занятый регистр? <asm>
TF1_SEG SEGMENT CODE INBLOCK
RSEG TF1_SEG
USING 0
TF1_isr:
_push <PSW,ACC,AR0>
; делаем быструю часть
...
...
; ну, например, по нулю счётчика динная работа
jz L?done
L?long_work: ; !!! вот оно - и никаких лишних команд
acall L?reti_only ; выполнится быстрее, кода меньше, расход стека тот же
_push <AR1,B>
; длинная работа
...
; да, да, в конце такого куска "между прерыванием и фоном"
; можно выходить не по ret, а по reti - экономит несколько pop-ов
_pop <B,AR1>
L?done:
_pop <AR0,ACC,PSW>
L?reti_only:
reti
</asm>