Так ведь встроенный умножитель там 8-битный, да еще беззнаковый.
Если явно не указывать преобразования типов, то компилятор промотит
операции до знаковых 2-байтовых. И в библиотечных функциях
используются те-же инструкции 8-битного умножения, только по
несколько штук и с учетом знака. В некоторых случаях компилятору
надо явно преобразованием типов урезать разрядность операндов (а
иногда и результата).