реклама на сайте
подробности

 
 
> Вопрос по ASM на Keil, Memory space overlap
JustIce
сообщение Jan 18 2009, 08:21
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 8-01-09
Пользователь №: 43 008



Возник такой вопрос:
При разделении асемблерного кода на несколько файлов (выделение каждой функции своего файла) компилятор почему то лепит кажый файл начиная с нулевого адреса.
Кто знает как сделать так чтобы компилятор последовательно соединил всё?

;-----------------------------
prog_01.asm

EXTRN CODE(quart_read)
;-----------------------------
quart_read.asm

PUBLIC quart_read
;-----------------------------

INPUT MODULES INCLUDED:
quart_read.obj (QUART_READ)
prog_01.obj (PROG_01)


LINK MAP OF MODULE: scnd (QUART_READ)


TYPE BASE LENGTH RELOCATION SEGMENT NAME
-----------------------------------------------------

* * * * * * * D A T A M E M O R Y * * * * * * *
REG 0000H 0008H ABSOLUTE "REG BANK 0"

* * * * * * * C O D E M E M O R Y * * * * * * *
CODE 0000H 0053H ABSOLUTE
* OVERLAP * CODE 0000H A0EBH ABSOLUTE
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 5)
Палыч
сообщение Jan 19 2009, 08:56
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(JustIce @ Jan 18 2009, 11:21) *
При разделении асемблерного кода на несколько файлов (выделение каждой функции своего файла) компилятор почему то лепит кажый файл начиная с нулевого адреса.
По всей видимости в исходном файле был определен сегмент кода, размещаемый с нулевого адреса. При разделении файла, Вы в каждом файле определили такие сегменты. Посмотрите ассемблерную инструкцию SEGMENT в документе a51.chm в каталоге HLP Keil'a
Go to the top of the page
 
+Quote Post
Omen_13
сообщение Jan 25 2009, 17:46
Сообщение #3


Силовик-затейник
****

Группа: Модераторы
Сообщений: 766
Регистрация: 18-02-07
Из: Столица солнечного Башкортостана
Пользователь №: 25 467



Необходимо импользовать RSEG для того чтобы сегменты кода были перемещаемые

Код
TimerModul    SEGMENT CODE;определяем сегмент в ПЗУ
    RSEG TimerModul;ссылаемся на него

PUBLIC proc1


--------------------
"Вперёд на мины, ордена потом!"
"инжинер/разработчик создает нечто, в отличии от многих других профессий. В этом есть сходность с художниками или музыкантами"(с)CodeWarrior1241
Go to the top of the page
 
+Quote Post
serenya
сообщение Nov 24 2009, 13:24
Сообщение #4





Группа: Участник
Сообщений: 7
Регистрация: 31-10-09
Пользователь №: 53 339



Цитата(JustIce @ Jan 18 2009, 11:21) *
При разделении асемблерного кода на несколько файлов (выделение каждой функции своего файла)...

Подскажите пожалуйста как разделить один файл asm на несколько и потом все файлы включить в проект, у меня ссылки на переменные и подпрограммы не видит компилятор. В Silabs IDE в начале файла я добавлял $include (LCD.asm) а как правильно это сделать в KEIL?
Go to the top of the page
 
+Quote Post
-JonnS-
сообщение Nov 25 2009, 19:16
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 72
Регистрация: 7-05-07
Из: Болгария
Пользователь №: 27 577



В "асм" секции надо обявить:
Код
PUBLIC Tmp;
.....
ASM_data SEGMENT DATA           ; segment for DATA RAM.
         RSEG    ASM_data       ; switch to this data segment
Tmp:     DS     1
EXTRN     DATA     (Count,Count1)
....
PUBLIC     LCD_Init,.....
...
LCD_Init:  
......
mov a,Count
.....

В "С" секции:
Код
extern char Tmp;
char Count,Count1;
.....
extern void LCD_Init(void);
....
Go to the top of the page
 
+Quote Post
serenya
сообщение Dec 3 2009, 05:40
Сообщение #6





Группа: Участник
Сообщений: 7
Регистрация: 31-10-09
Пользователь №: 53 339



Цитата(-JonnS- @ Nov 25 2009, 22:16) *
В "асм" секции надо обявить:
Код
PUBLIC Tmp;
.....
ASM_data SEGMENT DATA          ; segment for DATA RAM.
         RSEG    ASM_data      ; switch to this data segment
Tmp:     DS     1
EXTRN     DATA     (Count,Count1)
....
PUBLIC     LCD_Init,.....
...
LCD_Init:  
......
mov a,Count
.....

В "С" секции:
Код
extern char Tmp;
char Count,Count1;
.....
extern void LCD_Init(void);
....

Спасибо, начало получаться.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 2nd August 2025 - 05:26
Рейтинг@Mail.ru


Страница сгенерированна за 0.01393 секунд с 7
ELECTRONIX ©2004-2016