Подправил в конспекте после тест-пробы и читки листинга. Там реально +127/-128.
Там кстати в rev3 (в отличии от более ранних) затесалась команда INT extmem, которая в моей версии IDE в упор не воспринимается - отметил как "ограниченное применение" в зависимости от версии компилятора.
Есть еще одна "бяка" в том же PM0044 rev3 (p.53):
"...
6.11 Long Pointer Indirect Extended Indexed addressing mode
The pointer address is a word, the pointer size is an extended word, thus allowing 16-Mbyte
addressing space, and requires 2 bytes after the op-code.
Example:
1089 180000 ptr dc.b
page(table), high(table), low(table)
180000 10203040 table dc.b $10,$20,$30,$40
1690 AE03 LD X,#3
1692 72A71089 LDF A,([longptr.e],X)
X = 3
A = ([longptr.e],X) = ((longptr.e), X) =
(($1089.e), 3)
= ($180000,3) = ($180003) = $40
..."
Хотя там по идее должен стоять нечто типа low ({seg table}) по аналогии с
"...
In the STM8, symbols .H and .L are not available. Use low and high primitives instead for
example:
lab1 equ $112233
ld A,#{low{seg lab1}}; load A with $11
ld A,#{high lab1} ; load A with $22
ld A,#{low lab1} ; load A with $33
..."
из UM0144 на p.17...
Поскольку STM решил делать компилятор под "большие проекты" мутнячка с разметкой памяти весьма много. Ежли учитывать аналогию с компилятором для INTEL8086 и выше по отношению к сегментам и префикс-суффиксам видимости меток. Пока жую через давлюсь. Память то у МК жестко сегментирована в блоках от 65536 килобайт. Пока программа будет использовать нулевой сегмент вопросов особо не получится, а вот ежли полезет повыше - там и подарки почуствуются.
Особо относительно разметки и команд с short операндами. Ибо физически ограничено 0х0000-0х00FF.
Имеем правда непонятную директиву .setdp ... одначе она касается исключительно препроцессора компилятора, а все "короткие" варианты делаются исключительно по базе 0х0000+метка (метка 0х00-0хFF) т.е. 0х000000-0х0000FF. Или может варьироваться как младшая зона каждого сегмента? В самом МК такового физического указателя вроде нетути...
Ну и разнотолки имен в разметке при "взгляде сверху" - т.е. при работе с одними и теми же ячейками ОЗУ из программного кода в сташих сегментах.
Под такую канитель видимо и задумана весьма накрученная (по отношению к компиляторам mcs51/avr/pic) система объявления имен и сегментов плюс "сшивка" отдельных самостоятельных *.asm файлов проекта в единый файл выходного объектного кода.
Надо еще покрутить разметку и подстановку имен...
