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
.
Você não pode utilizar instruções mu*
(por exemplo, mul, mult etc) ou madd*
na sua submissão, mas pode utilizá-las para conferir seus resultados.