Algoritmo ULA
Trabalho Universitário: Algoritmo ULA. Pesquise 862.000+ trabalhos acadêmicosPor: fireflair • 22/3/2015 • 3.110 Palavras (13 Páginas) • 341 Visualizações
#include <stdio.h>
#include <string.h>
#include <math.h>
int WrA (char numero[100]){
int a, algarismo, decimal = 0, tamanho = 0, pos = 0;
tamanho = strlen(numero);
for (a = tamanho - 1; a >=0; a--){
if (numero[a] == '1'){
algarismo = numero[a] - '0';
decimal += pow(2, pos);
}
pos++;
}
return decimal;
}
int WrB (char numero[100]){
int i, algarismo, decimal = 0, tamanho = 0, pos = 0;
tamanho = strlen(numero);
for (i = tamanho - 1; i >=0; i--){
if (numero[i] == '1'){
algarismo = numero[i] - '0';
decimal += pow(2, pos);
}
pos++;
}
return decimal;
}
int main (void){
int loop = 1, mantA, mantB, i, overflow, compare;
int a=0, b=0, o=0, opcao, algA, algB;
char binA[9] = "00000000", binB[9] = "00000000", flag[100] = "0", operacao[4] = "000";
while (loop == 1){
system("cls");
printf("Menu principal da ULA\n\n");
printf("1. Definir registrador A\n\n");
printf("2. Definir registrador B\n\n");
printf("3. Ler registrador A (Acc)\n\n");
printf("4. Ler registrador B\n\n");
printf("5. Ler registrador de flags\n\n");
printf("6. Definir operacao\n\n");
printf("7. Executar ULA\n\n");
printf("8. Sair\n\n");
printf("Escolha a opcao => ");
scanf("%d", &opcao);
//Correção Flag em A
if (a > 255){
a = 255;
for (i=0; i<100 ;i++){
if(binA[i]=='\0'){
mantA = i - 1;
break;
}
}
if(mantA > 8){
overflow = mantA - 8;
for(i=0; i<= overflow; i++){
flag[i] = binA[i];
binA[i] = binA[i+1];
}
flag[overflow] = '\0';
binA[8] = '\0';
}
}else{
for (i=0; i<100 ;i++){
if(binA[i]=='\0'){
mantA = i;
break;
}
}
}
//Fim correção em Flag de A
//Correção de casas em A
if(mantA < 8){
for(i = 7; i >= 8 - mantA; i--){
binA[i] = binA[i - (8 - mantA)];
}
for(i = 0; i < 8-mantA; i++){
binA[i] = '0';
}
}
//Fim correção de casas em A
if (b > 255){
b = 255;
for (i=0; i<100 ;i++){
if(binB[i]=='\0'){
mantB = i - 1;
break;
}
}
if(mantB > 8){
...