Baixe o app para aproveitar ainda mais
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
Compartilhar