Цитата(Палыч @ Apr 25 2011, 16:32)

1. Одна из программ, по всей видимости, не должна использовать прерывания.
Такой вариант не подходит
Цитата(Палыч @ Apr 25 2011, 16:32)

2. Труднее с вектором 0. Ваш транслятор (с языка Си - имхо) всегда в прошивку поместит команду по этому вектору (писать на ассемблере - не предлагаю, но там можно это обойти). Когда мне пришлось делать нечто подобное, я "заложил" в BootLoader функцию защиты вектора при заливке не первой программы: загрузчик не прописывал новую команду по этому вектору, но "выкусывал" из неё адрес, который сохранял в особой области памяти, и, в случае необходимости - передавал управление на этот адрес.
Почему в одной программе вектор 0 присутствует,а в другой нет?
По этим адресам получается расположены вектора прерываний?
:04002800
:08006400
:08016000
:0801DC0
Разве переменная -Z(CODE)INTVEC не отвечает за место где будут размещаться вектора прерываний?
Вот еще два mapping
EGMENT SPACE START ADDRESS END ADDRESS SIZE TYPE ALIGN
======= ===== ============= =========== ==== ==== =====
INTVEC CODE 00008000 - 00008003 4 com 1CODE CODE 00008004 - 0000AB17 2B14 rel 1
INITTAB CODE 0000AB18 - 0000AB25 E rel 0
NEAR_ID CODE 0000AB26 - 0000AB7E 59 rel 0
ABSOLUTE DATA 00000020 rel 0
DATA 00000034
DATA 000001C0
CSTACK DATA 00002000 - 00002054 55 dse 0
RSTACK DATA 00002055 - 0000206C 18 dse 0
NEAR_I DATA 0000206D - 000020C5 59 rel 0
NEAR_Z DATA 000020C6 - 0000277C 6B7 rel 0
CODE 00000028 - 0000002B 4 aseg
CODE 00000064 - 0000006B 8 aseg
CODE 00000160 - 00000167 8 aseg
CODE 000001DC - 000001E3 8 aseg SEGMENT SPACE START ADDRESS END ADDRESS SIZE TYPE ALIGN
======= ===== ============= =========== ==== ==== =====
INTVEC CODE 00000000 - 00000003 4 com 1CODE CODE 000001E4 - 00002CF7 2B14 rel 1
INITTAB CODE 00002CF8 - 00002D05 E rel 0
NEAR_ID CODE 00002D06 - 00002D5E 59 rel 0
ABSOLUTE DATA 00000020 rel 0
DATA 00000034
DATA 000001C0
CSTACK DATA 00002000 - 00002054 55 dse 0
RSTACK DATA 00002055 - 0000206C 18 dse 0
NEAR_I DATA 0000206D - 000020C5 59 rel 0
NEAR_Z DATA 000020C6 - 0000277C 6B7 rel 0
CODE 00000028 - 0000002B 4 aseg
CODE 00000064 - 0000006B 8 aseg
CODE 00000160 - 00000167 8 aseg
CODE 000001DC - 000001E3 8 aseg Из них получается что с нулевым вектором у меня проблем нет. для одной программы он расположен по адресу 0, для другой по адресу 8000.
А вот 4 других вектора или что это, пока не понятно расположены в одном и том же месте. Наверное их тоже можно передвинуть?