Как-то расточительно для одной дискретной команды отдавать целый регистр, может битовую маску дискретных сигналов сделать, в 16 раз меньше регистров потребуется:
Попробовал вашу схему, но функции Extract и Putbit у меня имеют другие входы/выходы, отличные от скриншота у вас. Возможно это у вас измененные макросы этих функций?