[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Необходимо сделать так, чтобы несколько сегментов IDATA в разных модулях отображались на одно адресное пространство.
Насколько я понял из описания это можно сделать с помощью атрибута OVERLAYABLE:
"OVERLAYABLE - Specifies that the segment can share memory with other segments. Segments declared with this relocation type can be overlaid with other segments which are also declared with the OVERLAYABLE relocation type."
-> "OVERLAYABLE - определяет, что сегмент МОЖЕТ разделять память с другими сегментами. Сегменты, объявленные с таким типом размещения МОГУТ быть перекрыты другими сегментами, также объявленными с типом размещения OVERLAYABLE".
В приведенном ниже примере этого не происходит. Подскажите что я делаю не так.
Спасибо всем!
----------------------------------------
файл Main_ADuC.asm
NAME Main_ADuC
...
?ID?Main_ADuC SEGMENT IDATA OVERLAYABLE
...
RSEG ?ID?Main_ADuC ;
fgh: DS 20h ;
...
END
----------------------------------------
файл SPI_ADuC.asm
NAME SPI_ADuC
...
?ID?SPI_ADuC SEGMENT IDATA OVERLAYABLE
...
RSEG ?ID?SPI_ADuC
SPIBuf: DS 20h ; SPI buffer
...
END
----------------------------------------
файл ADC.asm
NAME ADC
...
?ID?ADC SEGMENT IDATA OVERLAYABLE
...
RSEG ?ID?ADC
Buff: DS 20h ; !!! ADC_Scale_Save
...
END
----------------------------------------
Получаем:
IDATA 0071H 0020H UNIT STACK
IDATA 0091H 0020H UNIT ?ID?MAIN_ADUC
IDATA 00B1H 0020H UNIT ?ID?SPI_ADUC
IDATA 00D1H 0020H UNIT ?ID?ADC
E-mail: info@telesys.ru