exx писал(а):Дмитрий, а как с бантиками, можно их поглядеть?
Оформляй нужные супер-пупер подпрограммы макросами в одном файле и подключай его в начале программы как в СИ. (не в сегменте кода). Названия макросов дублируй названиями подпрограмм. Если компилятор ругается на дублирование названий меток и макросов, то добавляй префикс, например: "M_". В основной проге обьявляй только нужные подпрограммы из этого файла. Если будет ошибка типа: "Undefined symbol" (аля однопроходный компилятор), то обьявлять нужные подпрограммы надо до их вызовов...
- Код: Выделить всё
.include "io_layer.inc" ;подключение супер-пупер библиотеки
.list ;включение листинга
.def temp=r16 ;определение главного рабочего регистра
;--------------------------------------------
.cseg ;выбор сегмента программного кода
.org 0 ;установка текущего адреса на ноль
;--------------------------------------------
бла
бла
бла
...
io_layer.inc (как в авр макросы обьявляются не помню)
:
- Код: Выделить всё
macro M_CA_VolUp
CA_VolUp: бла-бла-бла
бла-бла-бла
ret
endm
macro M_Printf
Printf: бла-бла-бла
ret
endm
macro M_ЦЫ_должен_умереть!
ЦЫ_должен_умереть!:
бла-бла-бла
рет
endm
Ну и в самом теле проги:
- Код: Выделить всё
M_CA_VolUp ;обьявление только нужных подпрограмм
M_Printf ;
main: call CA_VolUp
rjmp main
В макросах можно не париться с одинаковыми названиями меток, почитай про локальные метки в макросах в соотв. доке.
Добавлено спустя 7 минут 48 секунд:Да, и в макросы можно передавать параметры, в общем, аля сишные функции
Последний раз редактировалось
Dmitry__ 29 янв 2012, 02:47, всего редактировалось 1 раз.