попытаюсь это расшифровать. Поскольку мы работаем с 16 битами (как определено в ассемблерной транскрипции) расположеными по адресу указаному в регисте r12, мы временно приводим указатель r12, изначально имеющий тип long 64бит к типу short c помощью скобок, таким образом будем работать только с первыми 16 битами переменной, на которую указывает указатель, не трогая остальные 48 бит. Звездочка снаружи говорит о том что r12 это указатель (юнит в памяти хранящий адрес на данные). Звездочка внутри скобок означает, что двигать будем не биты самого указателя (тк. у него тоже есть адрес) а по адресу в этом "регистре" (указателе) r12. Вроде так? 😅