|
Да все извращения в программе. И в перетряске .hex (или какого там) файла, прожигаемого в ПЗУ.
Вот пример (ассемблер от 2500AD).
ORG 0
LJMP START
LJMP EXT0_INT
ORG 0BH
LJMP TIM0_INT0
ORG 13H
LJMP EXT1_INT
ORB 1BH
LJMP TIM1_INT
ORG 23H
LJMP SER_INT
ORG 0F100H
START:
.....
EXT0_INT:
.....
TIM0_INT:
.....
EXT1_INT:
....
TIM1_INT:
....
SER_INT:
....
А потом .hex перетряхивается.
Из всех адресов, больших 0xf100, отнимается 0xf000.
И прожигается.
Программа 99.xxx% времени будет гулять по старшим адресам, у которых старшие разряды=1. Исключения - только вход в прерывания.
E-mail: info@telesys.ru