Я работаю с кейлом, поэтому конкретно про ИАР не скажу.
Должен быть асемблерный файл в проекте. У меня он называется startup.a51. Среда сама предлагает добавлять его в проект при создании.
У вас должно быть нечто подобное. В этом файле несколько инструкций на ассемблере, которые проводят начальную инициализацию
Обычно это обнуление памяти, установка стека и предача управления сишным функциям.
Вот начало моего стандартного файла.
Код
CSEG AT 0 ; Директива ассемблера. Устанавливает АБСОЛЮТНЫЙ АДРЕС для секции кода.
; Линкер не может поменять этот адрес
; Именно здесь нужно откорректировать адрес для верхней программы.
; Тогда точкой входа в нее всегда будет именно этот адрес
?C_STARTUP: LJMP STARTUP1 ; непосредственно переход с вектора сброса.
; эту секцию линкер разместит в соответствии с установками
RSEG ?C_C51STARTUP; начало перемещаемой секции
STARTUP1:
IF IDATALEN <> 0
MOV R0,#IDATALEN - 1 ; здесь начинается обнуление памяти
CLR A
IDATALOOP: MOV @R0,A
DJNZ R0,IDATALOOP ; ну и так далее
Сообщение отредактировал редактор - Nov 9 2012, 06:49
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.