Всем спасибо за ответы, все таки разобрался

Цитата(Xenia @ Jan 24 2014, 06:48)

Разве тут есть проблема? Используете память в качестве хранилища данных обычным образом. В обработчике прерывания записываете в эту память данные, а основная программа эти данные оттуда забирает или сразу использует.
В тех случаях, когда может возникнуть накладка (в прерывании получаем новые данные прежде, чем основная программа успела воспользоваться старыми), то организуете (опять же в памяти) стек FIFO (первым пришел, первым вышел). Тогда в обработчике запихиваете данные в стек, а в основной программе забираете данные оттуда.
Короче говоря, никакой особой специфики, вытекающей из работы с прерываниями, здесь нет, а имеет место типичный случай асинхронного обмена данными между двумя потоками.
Просто я вспомнил, что модули подпрограмм на ассемблере и Си отдельно компилятся и потом объединяются линковщиком в один модуль, как в асме для PC. Технология передачи данных между подпрограммами, либо через стек или специальные регистры AX или DX:AX
Цитата(kolobok0 @ Jan 24 2014, 14:11)

ну почему же либо?
стэк(если писюк то это та же озу), регистры, озу(конкретный адресс), внешняя переферия.
Стек и регистры понятно откуда известны, но откуда компилятор узнает адрес ОЗУ в другом модуле например? Не совсем очевидно, если вспомнить, что модули отдельно компилируются.