В ассемблере применяется "табличный декодер" - младший байт адреса равен коду символа, а содержимое ячейки(пары ячеек) памяти - сегментный код.
В Си или массив или switch-case...
На первом этапе получаем простую упаковку - каждой позиции свой набор сегментов в соответствии с кодом символа.
Эти данные не имеют конкретной привязки сегментов к карте ОЗУ. Просто наш "условно правильный дисплей".
А вот дальше - на втором этапе вплоть до побитовых перестановок для попадания сегментного кода в соответствующие ячейки карты ОЗУ конкретного стекла индикатора.
Это уже зависит от того, что от производителя дисплея досталось - может чуток и повезет, а может и "по максимуму" осложнений подкинуть...

Мне в основном 7-сегментники доставались, там раскладка чуток попроще, но принцип один и тот же - двуступенчатый.
