В своё время немало напрограммировал на ассемблере и непонаслышке знаю, что стандартная целочисленная операция div там даёт в качестве результата и частное от деления, и остаток.
Был немало удивлён тому факту, что такая полезная особенность CISC-архитектуры Intel нигде не используется!
В том же Perl - было бы логично сделать так:
$minutes=78;
($hours,$minutes)=div($minutes,60);
print "Duration: $hours:$minutes\n";
То есть вопрос не совсем в том, что можно написать такую замечательную функцию div, которая выдаст нам нужный список, а в том, что как минимум в такой функции нужно будет один раз делить и один раз умножать, а как прямолинейный максимум - вообще 2 раза делить.
А зачем? Ведь в итоге-то, если речь идёт о целочисленном делении и архитектуре Intel, всё равно будет выполнен тот же div в результате которого будет сразу получено в разных регистрах процессора частное и остаток. Но почему-то уровнями выше «теряется» либо остаток, либо частное от деления...
Может быть, где-то эту проблему уже решили и есть соотв. модуль на CPAN?