Надеюсь, прямо в кодах программировать не собираетесь?

Тогда просто запомните, что любая команда с регистром Y длиннее на один байт, чем команда с регистром X и по мере возможность следует использовать регистр X (это не всегда так, в самом конце я про это добавил, но в первом приближении можно таким правилом пользоваться).
Префиксы меняют поведение следующей команды.
Грубо говоря, где-то есть триггер, который обычно сброшен (и сбрасывается после каждой команды).
Когда в нём 0, то используется регистр X. Пишем команду
для загрузки константы в X. Будет сгенерирован код
Теперь пишем команду
для загрузки константы в Y. Код
Префикс 0x90 взводит тот триггер и он переключает дешифратор, который теперь обеспечивает работу следующей команды (видом 1:1 как для загрузки X) с регистром Y. Сразу после выполнения триггер сбрасывается и последовательнсть
занесёт первой строкой 0x1234 в Y и второй строкой 0x5678 в X.
0xAE - код операции занесения 16-битной константы в индексный регистр (по умолчанию X)
0x90 - префикс смены индексного регистра с X на Y
История тянется издавна и корни STM8 в ST7 и в мотороловских 8-битниках MC68xx и MOS Technology (Commodore) 6502.
Среди них были и такие, у которых был только один индексный регистр.
И такие, у которых короткая адресация была не к младшим 256 байтам ОЗУ, а к странице, старшие 8 бит адреса которой хранились в региcтре DP (DirectPage). Кстати, удобно было бы для RTOS -- при переключении задач сохранять/восстанавливать не кусок области короткой адресации, а только этот регистр. Правда, для этого нужно много ОЗУ, чтобы каждой задаче выделить по странице.
И такие, у которых два аккумулятора A и B, которые вкупе могут работать как 16-битный аккумулятор.
Короче, перед нами процесор с длинной и неплохой родословной

Также там есть префиксы для косвенности адресации, т.е. обычно команда берёт данные оттуда-то (например, из ячейки памяти), а если перед ней стоит соответствующий префикс, то тогда она из ячейки памяти содержимое вынимет, но использует его не как данные, а как адрес данных.
Первая команда LDW X, $1234 -- загружаем в X содержимое ячейки памяти с адресом 0x1234
Вторая команда LDW X,[$1234.w] -- загружаем в X содержимое ячейки памяти, адрес которой лежит в ячейке с адресом 0x1234
Сделано это для того, чтобы для довольно редко используемых команд не тратить место в основном коде команды. Например, пришлось бы всегда в коде команды иметь бит для выбора X/Y и для выбора дополнительной косвенности -- вот уже два бита и пропало. Итого в один байт влезет меньше команд.
Если порыться, то там есть и команды, которые имеют одинаковую длину и для X, и для Y. Но там и так префикс есть для дополнительного уровня косвенности и для выбоора длины адреса той ячейки, в которой лежит адрес, а под выбор X/Y таки бит задействован.
Но эти знания уже на втором этапе работы с STM8 на ассемблере может понадобитсья, когда уже на высокий уровнеь оптимизации выходить. Поскольку я этого делать не собираюсь, я детально и не смотрел.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.