Выбери правильно формат данных и вперед. Для 3/16 достаточно байта с форматом 1.7 - 1 разряд на целую часть, 7 на дробную. 3/16 запишутся как 24 =128*3/16. Для промежуточных, входных и окончательных данных - судя по твоему посту с примером ниже можно выбрать формат 16.16. Т.е. 16 разрядов на целую и 16 на дробную часть.
Осталось только написать правильное умножение 32-х разрядного числа в формате 16.16 на 8-ми разрядное число в формате 1.7. Сложение и вычитание чисел с фиксированной запятой в формате 16.16 ==сложению вычитанию 32-х разрядных целых. Перевод входных данных в формат 16.16 - сдвиг влево на 16 разрядов. Умножение просто. Число в формате 16.16 пусть будет A.