Сделал как посоветовал Valen. Размер кучи установил в 4 кб. Результат тот же. Вот .map файл для деталей, и, кажется, тут не всё в порядке:
Код:
Area                                    Addr        Size        Decimal Bytes (Attributes)
--------------------------------        ----        ----        ------- ----- ------------
_HEAP                               0000C35D    000013FF =        5119. bytes (REL,CON)

      Value  Global                              Global Defined In Module
      -----  --------------------------------   ------------------------
     0000D35D  __sdcc_heap_start                  

ASxxxx Linker V03.00 + NoICE + sdld,  page 6.
Hexadecimal  [32-Bits]

Area                                    Addr        Size        Decimal Bytes (Attributes)
--------------------------------        ----        ----        ------- ----- ------------
_HEAP_END                           0000D75C    00000001 =           1. bytes (REL,CON)

      Value  Global                              Global Defined In Module
      -----  --------------------------------   ------------------------
     0000D75C  __sdcc_heap_end
Здесь не понимаю откуда берётся число 5119 (13FF), ведь в асм-файле задан размер 4096 байт.

Теперь если не задавать при компиляции myheap.rel, то размер кучи становится 1 кб:
Код:
Area                                    Addr        Size        Decimal Bytes (Attributes)
--------------------------------        ----        ----        ------- ----- ------------
_HEAP                               0000C35D    000003FF =        1023. bytes (REL,CON)

      Value  Global                              Global Defined In Module
      -----  --------------------------------   ------------------------
     0000C35D  __sdcc_heap_start                  

ASxxxx Linker V03.00 + NoICE + sdld,  page 6.
Hexadecimal  [32-Bits]

Area                                    Addr        Size        Decimal Bytes (Attributes)
--------------------------------        ----        ----        ------- ----- ------------
_HEAP_END                           0000C75C    00000001 =           1. bytes (REL,CON)

      Value  Global                              Global Defined In Module
      -----  --------------------------------   ------------------------
     0000C75C  __sdcc_heap_end
Т.е. установка размера кучи таки работает! Но malloc по-прежнему не отрабатывает. Если не трудно, прошу, Valen, прогоните пример кода, приведённого выше, у себя при разных размерах кучи и желательно свежим билдом SDCC, если это как-то заработает у Вас - будем искать чего я делаю не так.