Sua tarefa nesse exercício é criar um procedimento chamado
multfac
que faz a multiplicação entre dois inteiros de 4 bytes.
Sua função deve:
Receber o multiplicando e o multiplicador nos registradores $a0 e $a1
Retornar o produto nos registradores hi e lo
Lembre-se! Seu procedimento deve ser capaz de lidar com inteiros com sinal!
Não há dados de entrada para serem lidos.
Não há dados de saída para serem impressos.
Se multfac for chamada com
$a0 = 3
e
$a1 = 9
então seu procedimento deve retornar
lo = 27
e
hi = 0
Se multfac for chamada com
$a0 = -3
e
$a1 = 4
então seu procedimento deve retornar
lo = -12
e
hi = -1
Se multfac for chamada com
$a0 = 170000000
e
$a1 = 1000
então seu procedimento deve retornar
lo = -1798691840
e
hi = 39
Obsevação: Note que o valor do registrador lo deu negativo pois o SPIM não possui uma syscall para imprimir números grandes.
Você deve submeter apenas seu procedimento multfac, sem as seções .data, .text e o procedimento main. Lembre-se de cumprir os protocolos de chamada a procedimento com jal.
mult na sua submissão, mas pode utilizá-la para conferir seus resultados.