Lista Mips If
Lista Mips If
Lista Mips If
Atividade Prtica Organizao e Arquitetura de Computadores Licenciatura em Computao Lacio Araujo Costa 23/08/2013
LISTA DE EXERCCIOS Faa cada programa em um arquivo separado, com nome dado por exerccio- numero_questo.asm, por exemplo exercicio-1.asm 1) Codifique um programa correspondente ao seguinte pseudo-cdigo: int a = 3; /* O cdigo seguinte possue trs variveis A B e M. Primeiro na hora de declarar as variveis ele d os valores a elas e ento ele diz que M vai receber o valor de A. Assim como no pascal que int b = 4; corresponde a o <--. Depois ele tem um if onde ele diz que SE B for Menor que M ento M vai int m = 10; receber o valor de B. Ou seja A = 3, B=4 , M=10... Depois M ser 3 e depois de anlisada a condio m = a; M ser 3, pois, M se tornou A e como Quatro no menor que trs ele no entra na condio.*/ if ( b < m ) m = b; 2) Codifique o programa em C abaixo para assembler: void main() { /* Void Main quer dize que a funo principal sem retorno. Aqi ele fazuma int a = 5, b = 4, c = 0; simples soma de nmeros onde C ser A +B */ c = a + b; } 3) Codifique um programa correspondente a : int a = ...; int b = ...; x = 0; if ( a >= 0 && b <= 50 ) x = 1; 4) Qual o cdigo assembly MIPS para o procedimento recursivo seguinte, o qual calcula o factorial de um nmero? int fact (int n) { /* Aqui uma simples funo recursiva onde ele vai calcular o fatorial de qualquer if (n < 1) return(1); Nmero, ele pede para que se teste a funo com n variando de 1 at 5. Esse RETURN else quer dizer retorno, ou seja a funo fact vai retornar um valor do tipo inteiro como dito no return(n * fact(n-1)); incio do cdigo */ } Teste o procedimento fact, considerando n = 1, 2, 3, 4, 5. 5) Faa um programa em linguagem de montagem MIPS que receba como entrada uma string com n caracteres e gere como sada uma nova string com a inverso da ordem dos caracteres. Essa nova string tambm ter a troca das letras maisculas por minsculas e vice-versa. Por exemplo: se a entrada for HArdwArE a sada dever ser eRaWDRah. A entrada deve ser lida da memria e a sada deve ser escrita na memria. Caso a string
possua algum caractere que no seja letra o valor 1 dever ser armazenado no registrador v1 e o programa dever ser encerrado. Lembramos que o fim da string dado pelo caractere nulo e que para manipular string nessa questo recomendamos que sejam usadas variveis do tipo ASCIIZ. Ateno: os caracteres devero ser armazenados em seqncia na memria. 6) Escreva um programa em linguagem de montagem do MIPS que receba dois nmeros inteiros armazenados na memria e realiza a multiplicao dos dois nmeros. Considere nmeros positivos e negativos. A instruo mult no dever ser utilizada na implementao dessa questo. O resultado dever ser armazenado em uma varivel RESULT na memria. 7) Faa um programa em linguagem de montagem MIPS que receba como entrada dois nmeros, n e s, e que tenha como sada o resultado da combinao de n tomados s a s. Os nmeros n e s devem ser carregados da memria e o resultado da combinao deve ser colocado na mesma em uma varivel COMB. Caso s seja maior que n, deve ser armazenado o valor 1 no registrador v1. Caso n e/ou s seja menor que zero, o valor 2 deve ser armazenado no registrador v1. Quando n for igual a s o valor 3 deve ser armazenado no registrador V1. Quando n e/ou s for igual a zero o valor 4 deve ser armazenado no registrador v1. Segue abaixo a frmula da combinao.
Ateno: obrigatrio o uso de recurso para a implementao do clculo de n!, (n - s)! e s!. Sendo que a questo que no for feita recursivamente no ser aceita como resposta vlida. 8. Escreva um programa em linguagem de montagem do MIPS que converta um nmero inteiro (representao complemento a dois) na sua representao em ASCII. Nmeros positivos e negativos devem ser considerados. O nmero binrio ter 32 caracteres e ser lido da memria. Os nmeros estaro representados como string de caracteres ASCII e o fim de string ser denotado com o caractere null. O nmero binrio dever ser armazenado no registrador v0. Caso o nmero a ser convertido no seja vlido, o registrador v1 retornar o valor 1. Ateno: o cdigo de todas as questes dever estar claramente comentado, pois caso contrrio haver penalidades na correo, pois ser muito dificultada. Portanto colaborem com a correo! Enviar exerccios para o endereo: [email protected] Boa Sorte!