Даже перебдел - вот так проще:
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено 51 05 апреля 2004 г. 23:54
В ответ на: Вот тут виноват - исправляюсь: отправлено 51 05 апреля 2004 г. 20:05


int_rout:
push ACC
push PSW
push DPL
push DPH
;push whatever_else
;.......
;....... Здесь сам код обработчика
;.......
;pop whatever_else
pop DPH
pop DPL
pop PSW ;SP указывает на сохраненный ACC, но POP ACC мы пока не делаем
;
;Начало процедуры принудительного возврата
;
mov A,R0 ;Сохраняем ТЕКУЩИЙ R0 в уже ненужном ACC
mov R0,SP ;Копируем SP в R0
dec R0 ;Пропускаем сохраненный ACC - теперь R0 указывает на старший байт адреса возврата
mov @R0,#high(kuda_nado);Подменяем старший байт адреса возврата
dec R0 ;Теперь R0 указывает на младший байт адреса возврата
mov @R0,#low(kuda_nado) ;Подменяем младший байт адреса возврата
mov R0,A ;Восстанавливаем ТЕКУЩИЙ R0
pop ACC ;Вот теперь восстанавливаем ACC
reti ;Возврат kuda_nado

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru