Keil->ASM-> директивы proc & endp?

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Rtmip
Держит паяльник хвостом
Сообщения: 963
Зарегистрирован: Чт апр 03, 2014 23:16:55
Откуда: Россия

Keil->ASM-> директивы proc & endp?

Сообщение Rtmip »

Здравствуйте всем! Пытаюсь изучать asm mcs51, попробовал Keil, но не могу понять как в нем применить
директивы proc и endp? Любые варианты написания натыкаются на сообщения о синтаксической ошибке.
Может кто-нибудь дать пример, кусочек кода, на asm для 8051, который Keil примет без ошибок?
Последний раз редактировалось Gudd-Head Пт апр 04, 2014 10:18:46, всего редактировалось 1 раз.
Причина: Сюда перенёс
Реклама
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15575
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Keil->ASM-> директивы proc & endp?

Сообщение BOB51 »

Ежли решено изучать MCS51 под ассемблером, так лучше воспользоваться полным бесплатным вариантом от ATMEL
http://www.atmel.com/tools/C51ASM.aspx
там и полная документация по компилятору.
Синтаксис аналогичен кейловскому, запускается *.bat файликом с командной строки.
Единственно - предпочитает писать файлы под FAT32 (виндовс версия).
Ежли заинтересует - скину заготовку каталога проектов со всеми запускающими файликами.
По кейлу в конце года была бесплатная версия в комплекте с силабсовской IDE - но как сейчас не знаю - искать на сайте у силабса надо (у той версии токмо под силабсы и ограниченная вроде на 3 года лицензия на один комп).
:beer:
Реклама
Rtmip
Держит паяльник хвостом
Сообщения: 963
Зарегистрирован: Чт апр 03, 2014 23:16:55
Откуда: Россия

Re: Keil->ASM-> директивы proc & endp?

Сообщение Rtmip »

BOB51 писал(а): Ежли заинтересует - скину заготовку каталога проектов со всеми запускающими файликами.
Спасибо, интересует, буду признателен! :beer:
Однако, надеюсь, что кто-нибудь напишет пару строк на А51 под Keil, в которых будет proc & endp.
Очень хочу узнать как в Keile их можно использовать и применять :)
Аватара пользователя
Ser60
Друг Кота
Сообщения: 3784
Зарегистрирован: Ср дек 24, 2008 09:58:58

Re: Keil->ASM-> директивы proc & endp?

Сообщение Ser60 »

Имеете в виду Keil Microvision? Если ДА - вот пример организации процедур. Это для ARM, но для x51 так-же. МК какого производителя используете? Я сам использовал силлабовские C8051 и их IDE совместно с компилятором Keil. В этом IDE на АСМе не нужно директивы PROC и ENDP.

Код: Выделить всё

LPTMR0_setup	PROC			; Low-Power Timer configuration
	EXPORT	LPTMR0_setup
	IOORB	SIM_SCGC5, 0x01		; enable clock for LPTMR	
	SETH	LPTMR0_CMR, 60		; setup for 60 msec interval
	SETB	LPTMR0_PSR, 0x05	; set LPO as clock source, no prescaler		
	SETB	LPTMR0_CSR, 0x41	; start timer in autoreset, enable interrupt
	SETW	NVIC_ISER, 0x10000000	; enable LPTMR0 interrupt in NVIC
	bx	LR
ENDP
Реклама
Эиком - электронные компоненты и радиодетали
Rtmip
Держит паяльник хвостом
Сообщения: 963
Зарегистрирован: Чт апр 03, 2014 23:16:55
Откуда: Россия

Re: Keil->ASM-> директивы proc & endp?

Сообщение Rtmip »

Спасибо, Вы подтверждаете мои подозрения, что в Keil Microvision(именно его пробую, 4-ку, МК разные-цель научиться, понять) все зависит от конкретного МК. Читая встроенный хелп и эксперементируя выяснил, что конструкция, подобная Вашей не вызывает ошибок, но только если выбрать "Philips 80C51MX architecture". Если в проекте использовать АТ89Sxxxx, то ошибки, но вот почему? И почему бы в хелпе им сразу не указать? До сих пор не могу выяснить в каком случае будет работать без ошибок такой пример из хелпа:

Код: Выделить всё

P101 PROC NEAR
        CALL    P102 ; far call for P102
        RET          ; near return
P101 ENDP

P102 PROC FAR
        CALL    P101 ; near call for P101
        RET          ; far return
P102 ENDP

        END
Тут, как я понимаю по описанию из справки утверждается, что процедура открывается и закрывается
обязательно одним и тем же именем, однако это вызывает ошибку синтаксиса :(
А если перед ENDP убрать имя и при этом выбрать МК "80C51MX architecture" то нет ошибок :)
В каком случае или что надо сделать, чтобы вышеприведенный код не вызывал ошибок?
Кто может, подскажите, пожалуйста :)
Реклама
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15575
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Keil->ASM-> директивы proc & endp?

Сообщение BOB51 »

Ежли честно... то зачем для 51-й вообще такая конструкция? :shock:
Там всего-то два варианта вызова acall ( в пределах текущей страницы в 2к) и lcall (в пределах 64к).
Причем более 64 килобайт ОЗУ/ПЗУ можно получить только спецсхемотехникой (ну еще у 151/251 семейств), а у большинства серийных "ходовых" МК и ПЗУ не превышает 2-4 килобайта.
Даже искуственно замудреный код и то ... (см первый проект http://radiokot.ru/forum/viewtopic.php?f=62&t=94201).
:beer:
Реклама
Rtmip
Держит паяльник хвостом
Сообщения: 963
Зарегистрирован: Чт апр 03, 2014 23:16:55
Откуда: Россия

Re: Keil->ASM-> директивы proc & endp?

Сообщение Rtmip »

BOB51 писал(а):Ежли честно... то зачем для 51-й вообще такая конструкция? :shock:
Много придется написать, чтобы объяснить зачем :), поэтому вкратце, чтобы не утомлять:
1 - В Кейле ошибка? интересно узнать?
2 - Раз уж решил изучить asm 8051, то хоть чуть, но надо потрогать все возможности, а не только
основные команды и методы адресации :)
3 - Встретились тексты на asm, в которых сплошные процедуры, а вот ассемблировать их нечем
получается... и тд...
Ответить

Вернуться в «Разные вопросы по МК»