Buscar

Lista 02 Assembly MIPS - Estruturas de Decisão

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 13 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Q16) *Faça um programa que leia um número com 9 algarismos e informe os dois 
algarismos seguintes que devem formar um CPF válido. 
 
Resposta: 
 
.text 
 
main: 
 
addi $2, $0, 5 
syscall 
add $8, $2, $0 
 
div $8, $8, 10 
mfhi $17 
 
div $8, $8, 10 
mfhi $16 
 
div $8, $8, 10 
mfhi $15 
 
div $8, $8, 10 
mfhi $14 
 
div $8, $8, 10 
mfhi $13 
 
div $8, $8, 10 
mfhi $12 
 
div $8, $8, 10 
mfhi $11 
 
div $8, $8, 10 
mfhi $10 
 
div $8, $8, 10 
mfhi $9 
 
addi $8, $0, 0 
 
mul $25, $9, 10 
add $8, $8, $25 
 
mul $25, $10, 9 
add $8, $8, $25 
 
mul $25, $11, 8 
add $8, $8, $25 
 
mul $25, $12, 7 
add $8, $8, $25 
 
mul $25, $13, 6 
add $8, $8, $25 
 
mul $25, $14, 5 
add $8, $8, $25 
 
mul $25, $15, 4 
add $8, $8, $25 
 
mul $25, $16, 3 
add $8, $8, $25 
 
mul $25, $17, 2 
add $8, $8, $25 
 
div $25, $8, 11 
mfhi $25 
addi $23, $0, 11 
 
sub $24, $23, $25 
 
addi $23, $24, -10 
srl $23, $23, 31 
andi $23, $23, 1 
 
bne $23, 1, primeiro_digito_zero 
j segundo_digito 
 
primeiro_digito_zero: 
addi $24, $0, 0 
 
segundo_digito: 
 
addi $8, $0, 0 
 
mul $25, $9, 11 
add $8, $8, $25 
 
mul $25, $10, 10 
add $8, $8, $25 
 
mul $25, $11, 9 
add $8, $8, $25 
 
mul $25, $12, 8 
add $8, $8, $25 
 
mul $25, $13, 7 
add $8, $8, $25 
 
mul $25, $14, 6 
add $8, $8, $25 
 
mul $25, $15, 5 
add $8, $8, $25 
 
mul $25, $16, 4 
add $8, $8, $25 
 
mul $25, $17, 3 
add $8, $8, $25 
 
mul $25, $24, 2 
add $8, $8, $25 
 
div $25, $8, 11 
mfhi $25 
addi $23, $0, 11 
 
sub $22, $23, $25 
 
addi $23, $22, -10 
srl $23, $23, 31 
andi $23, $23, 1 
 
bne $23, 1, segundo_digito_zero 
j fim 
 
segundo_digito_zero: 
addi $22, $0, 0 
 
fim: 
addi $2, $0, 1 
addi $4, $24, 0 
syscall 
 
addi $2, $0, 1 
addi $4, $22, 0 
syscall 
 
addi $2, $0, 10 
syscall 
 
Q17) *Faça um programa que leia três inteiros correspondentes a um país de registro de um 
produto; um código do fabricante do produto; e um código de um produto. O 
programa deve imprimir o número do código verificador para um padrão de códigos 
de barra EAN-13. Pesquise esse padrão e veja como são feitos os cálculos. 
 
Resposta: 
 
.text 
 
main: 
 
addi $2, $0, 5 
syscall 
addi $8, $2, 0 
 
div $8, $8, 10 
mfhi $11 
 
div $8, $8, 10 
mfhi $10 
 
div $8, $8, 10 
mfhi $9 
 
addi $2, $0, 5 
syscall 
addi $8, $2, 0 
 
Primeira_Divisao2: 
div $8, $8, 10 
mfhi $17 
addi $25, $25, 1 
bne $8, $0, continua_dividindo2 
j terceiro_valor 
 
continua_dividindo2: 
div $8, $8, 10 
mfhi $16 
addi $25, $25, 1 
bne $8, $0, continua_dividindo3 
j terceiro_valor 
 
continua_dividindo3: 
div $8, $8, 10 
mfhi $15 
addi $25, $25, 1 
bne $8, $0, continua_dividindo4 
j terceiro_valor 
 
continua_dividindo4: 
div $8, $8, 10 
mfhi $14 
addi $25, $25, 1 
bne $8, $0, continua_dividindo5 
j terceiro_valor 
 
continua_dividindo5: 
div $8, $8, 10 
mfhi $13 
addi $25, $25, 1 
bne $8, $0, continua_dividindo6 
j terceiro_valor 
 
continua_dividindo6: 
div $8, $8, 10 
mfhi $12 
addi $25, $25, 1 
j terceiro_valor 
 
terceiro_valor: 
addi $2, $0, 5 
syscall 
addi $8, $2, 0 
 
Primeira_Divisao3: 
div $8, $8, 10 
mfhi $22 
bne $8, $0, continua_dividindo2_2 
j verificacao_qtd_digitos 
 
continua_dividindo2_2: 
div $8, $8, 10 
mfhi $21 
bne $8, $0, continua_dividindo2_3 
j verificacao_qtd_digitos 
 
continua_dividindo2_3: 
div $8, $8, 10 
mfhi $20 
bne $8, $0, continua_dividindo2_4 
j verificacao_qtd_digitos 
 
continua_dividindo2_4: 
div $8, $8, 10 
mfhi $19 
bne $8, $0, continua_dividindo2_5 
j verificacao_qtd_digitos 
 
continua_dividindo2_5: 
div $8, $8, 10 
mfhi $18 
j verificacao_qtd_digitos 
 
verificacao_qtd_digitos: 
addi $4, $0, 4 
addi $5, $0, 5 
addi $6, $0, 6 
 
mul $23, $9, 1 
add $24, $24, $23 
 
mul $23, $10, 3 
add $24, $24, $23 
 
mul $23, $11, 1 
add $24, $24, $23 
 
beq $25, $4, terceiro_vai_ter_5 
j verificacao_qtd_digitos2 
 
verificacao_qtd_digitos2: 
beq $25, $5, terceiro_vai_ter_4 
j terceiro_vai_ter_3 
 
terceiro_vai_ter_3: 
mul $23, $12, 3 
add $24, $24, $23 
 
mul $23, $13, 1 
add $24, $24, $23 
 
mul $23, $14, 3 
add $24, $24, $23 
 
mul $23, $15, 1 
add $24, $24, $23 
 
mul $23, $16, 3 
add $24, $24, $23 
 
mul $23, $17, 1 
add $24, $24, $23 
 
mul $23, $20, 3 
add $24, $24, $23 
 
mul $23, $21, 1 
add $24, $24, $23 
 
mul $23, $22, 3 
add $24, $24, $23 
j calculos_finais 
 
terceiro_vai_ter_4: 
mul $23, $13, 3 
add $24, $24, $23 
 
mul $23, $14, 1 
add $24, $24, $23 
 
mul $23, $15, 3 
add $24, $24, $23 
 
mul $23, $16, 1 
add $24, $24, $23 
 
mul $23, $17, 3 
add $24, $24, $23 
 
mul $23, $19, 1 
add $24, $24, $23 
 
mul $23, $20, 3 
add $24, $24, $23 
 
mul $23, $21, 1 
add $24, $24, $23 
 
mul $23, $22, 3 
add $24, $24, $23 
j calculos_finais 
 
terceiro_vai_ter_5: 
mul $23, $14, 3 
add $24, $24, $23 
 
mul $23, $15, 1 
add $24, $24, $23 
 
mul $23, $16, 3 
add $24, $24, $23 
 
mul $23, $17, 1 
add $24, $24, $23 
 
mul $23, $18, 3 
add $24, $24, $23 
 
mul $23, $19, 1 
add $24, $24, $23 
 
mul $23, $20, 3 
add $24, $24, $23 
 
mul $23, $21, 1 
add $24, $24, $23 
 
mul $23, $22, 3 
add $24, $24, $23 
j calculos_finais 
 
calculos_finais: 
addi $8, $0, 10 
div $9, $24, $8 
mflo $23 
mfhi $9 
beq $9, $0, imprime_zero 
 
addi $23, $23, 1 
mul $23, $23, 10 
sub $23, $23, $24 
j imprime_inicial 
 
imprime_zero: 
addi $23, $0, 0 
addi $2, $0, 1 
addi $4, $23, 0 
syscall 
j fim 
 
imprime_inicial: 
addi $2, $0, 1 
addi $4, $23, 0 
syscall 
j fim 
 
fim: 
addi $2, $0, 10 
syscall 
 
Q18) *Faça um programa que receba um inteiro (entre 0 e 999) e imprima o binário 
correspondente. 
 
Resposta: 
 
.text 
 
main: 
addi $2, $0, 5 
syscall 
addi $8, $2, 0 
addi $9, $0, 2 
 
div $10, $8, $9 
mfhi $25 
bne $10, $0, bit2 
j fim1bit 
 
bit2: 
div $10, $10, $9 
mfhi $24 
bne $10, $0, bit3 
j fim2bits 
 
bit3: 
div $10, $10, $9 
mfhi $23 
bne $10, $0, bit4 
j fim3bits 
 
bit4: 
div $10, $10, $9 
mfhi $22 
bne $10, $0, bit5 
j fim4bits 
 
bit5: 
div $10, $10, $9 
mfhi $21 
bne $10, $0, bit6 
j fim5bits 
 
bit6: 
div $10, $10, $9 
mfhi $20 
bne $10, $0, bit7 
j fim6bits 
 
bit7: 
div $10, $10, $9 
mfhi $19 
bne $10, $0, bit8 
j fim7bits 
 
bit8: 
div $10, $10, $9 
mfhi $18 
bne $10, $0, bit9 
j fim8bits 
 
bit9: 
div $10, $10, $9 
mfhi $17 
bne $10, $0, bit10 
j fim9bits 
 
bit10: 
div $10, $10, $9 
mfhi $16 
j fim10bits 
 
fim1bit: 
addi $2, $0, 1 
add $4, $0, $25 
syscall 
j fim 
 
fim2bits: 
addi $2, $0, 1 
add $4, $0, $24 
syscall 
addi $2, $0, 1 
add $4, $0, $25 
syscall 
j fim 
 
fim3bits: 
addi $2, $0, 1 
add $4, $0, $23 
syscall 
addi $2, $0, 1 
add $4, $0, $24 
syscall 
addi $2, $0, 1 
add $4, $0, $25 
syscall 
j fim 
 
fim4bits: 
addi $2, $0, 1 
add $4, $0, $22 
syscall 
addi $2, $0, 1 
add $4, $0, $23 
syscall 
addi $2, $0, 1 
add $4, $0, $24 
syscall 
addi $2, $0, 1 
add $4, $0, $25 
syscall 
j fim 
 
fim5bits: 
addi $2, $0, 1 
add $4, $0, $21 
syscall 
addi $2, $0, 1 
add $4, $0, $22 
syscall 
addi $2, $0, 1 
add $4, $0, $23 
syscall 
addi $2, $0, 1 
add $4, $0, $24 
syscall 
addi $2, $0, 1 
add $4, $0, $25 
syscall 
j fim 
 
fim6bits: 
addi $2, $0, 1 
add $4, $0, $20 
syscall 
addi $2, $0, 1 
add $4, $0, $21 
syscall 
addi $2, $0, 1 
add $4, $0, $22 
syscall 
addi $2, $0, 1 
add $4, $0, $23 
syscall 
addi $2, $0, 1 
add $4, $0, $24 
syscall 
addi $2, $0, 1 
add $4, $0, $25 
syscall 
j fim 
 
fim7bits: 
addi $2, $0, 1 
add $4, $0, $19 
syscall 
addi $2, $0, 1 
add $4, $0, $20 
syscall 
addi $2, $0, 1 
add $4, $0, $21 
syscall 
addi $2, $0, 1 
add $4, $0, $22 
syscall 
addi $2, $0, 1 
add $4, $0, $23 
syscall 
addi $2, $0, 1 
add $4, $0, $24 
syscall 
addi $2, $0, 1 
add $4, $0, $25 
syscall 
j fim 
 
fim8bits: 
addi $2, $0, 1 
add $4, $0, $18 
syscall 
addi $2, $0, 1 
add $4, $0, $19 
syscall 
addi $2, $0, 1 
add $4, $0, $20 
syscall 
addi $2, $0, 1 
add $4, $0, $21 
syscall 
addi$2, $0, 1 
add $4, $0, $22 
syscall 
addi $2, $0, 1 
add $4, $0, $23 
syscall 
addi $2, $0, 1 
add $4, $0, $24 
syscall 
addi $2, $0, 1 
add $4, $0, $25 
syscall 
j fim 
 
fim9bits: 
addi $2, $0, 1 
add $4, $0, $17 
syscall 
addi $2, $0, 1 
add $4, $0, $18 
syscall 
addi $2, $0, 1 
add $4, $0, $19 
syscall 
addi $2, $0, 1 
add $4, $0, $20 
syscall 
addi $2, $0, 1 
add $4, $0, $21 
syscall 
addi $2, $0, 1 
add $4, $0, $22 
syscall 
addi $2, $0, 1 
add $4, $0, $23 
syscall 
addi $2, $0, 1 
add $4, $0, $24 
syscall 
addi $2, $0, 1 
add $4, $0, $25 
syscall 
j fim 
 
fim10bits: 
addi $2, $0, 1 
add $4, $0, $16 
syscall 
addi $2, $0, 1 
add $4, $0, $17 
syscall 
addi $2, $0, 1 
add $4, $0, $18 
syscall 
addi $2, $0, 1 
add $4, $0, $19 
syscall 
addi $2, $0, 1 
add $4, $0, $20 
syscall 
addi $2, $0, 1 
add $4, $0, $21 
syscall 
addi $2, $0, 1 
add $4, $0, $22 
syscall 
addi $2, $0, 1 
add $4, $0, $23 
syscall 
addi $2, $0, 1 
add $4, $0, $24 
syscall 
addi $2, $0, 1 
add $4, $0, $25 
syscall 
j fim 
 
fim: 
addi $2, $0, 10 
syscall 
 
 
Q19) *Faça um programa que leia um número escrito em binário (no máximo 8 bits) e 
imprima seu valor em decimal. 
 
 Resposta: 
 
.text 
 
main: 
addi $2, $0, 5 
syscall 
add $8, $2, $0 
 
div $8, $8, 10 
mfhi $25 
 
div $8, $8, 10 
mfhi $24 
 
div $8, $8, 10 
mfhi $23 
 
div $8, $8, 10 
mfhi $22 
 
div $8, $8, 10 
mfhi $21 
 
div $8, $8, 10 
mfhi $20 
 
div $8, $8, 10 
mfhi $19 
 
div $8, $8, 10 
mfhi $18 
 
mul $17, $25, 1 
add $9, $9, $17 
 
mul $16, $24, 2 
add $9, $9, $16 
 
mul $15, $23, 4 
add $9, $9, $15 
 
mul $14, $22, 8 
add $9, $9, $14 
 
mul $13, $21, 16 
add $9, $9, $13 
 
mul $12, $20, 32 
add $9, $9, $12 
 
mul $11, $19, 64 
add $9, $9, $11 
 
mul $10, $18, 128 
add $9, $9, $10 
 
addi $2, $0, 1 
add $4, $9, $0 
syscall 
 
 
Q20) *Dizemos que um número i é congruente módulo m a j se i % m = j % m. 
Exemplo: 35 é congruente módulo 4 a 39, pois 35 % 4 = 3 = 39 % 4. 
Faça um programa que, dados i, j e m, informe se i e j são congruentes módulos m 
 
 Resposta: 
 
.text 
 
main: 
 
addi $2, $0, 5 
syscall 
add $8, $2, $0 
 
addi $2, $0, 5 
syscall 
add $9, $2, $0 
 
addi $2, $0, 5 
syscall 
add $10, $2, $0 
 
div $8, $10 
mfhi $11 
 
div $9, $10 
mfhi $12 
 
beq $11, $12, iguais 
 
addi $2, $0, 11 
addi $4, $0, 'N' 
syscall 
j fim 
 
iguais: 
addi $2, $0, 11 
addi $4, $0, 'S' 
syscall 
j fim 
 
fim: 
addi $2, $0, 10 
syscall

Outros materiais