Set de Instrucciones, Cadena, Entrada y Salida y Aritmética y Lógicas

Contenido

  • Juegos de Instrucciones
  • Instrucciones en Cadena
  • Instrucciones Entrada y  Salida
  • Instrucciones Aritméticas y lógicas:

– ALU
– Juego de Instrucciones     (Procesador MIPS R200).
– Nomenclatura (Procesador     MIPS R200).
– Instrucciones     Aritméticas (Procesador     MIPS R200).
– Instrucciones Lógicas     (Procesador MIPS R200).
– Instrucciones Aritméticas.

 Juegos de Instrucciones:

Se define el juego o repertorio de instrucciones de un procesador digital como el conjunto de operaciones de transferencia, aritméticas y lógicas, que es capaz de ejecutar su unidad operativa y de instrucciones de control, que es capaz de ejecutar su unidad de control.

De acuerdo con el conjunto de instrucciones los procesadores digitales se pueden clasificar en dos grandes grupos:

  • Procesadores de juego de instrucciones reducido o RISC (Reduced Instruction Set Computer): Poseen un número reducido de instrucciones distintas y un número elevado de registros de aplicación general.
  • Procesadores de juego de instrucciones complejo o CISC (Complex Instruction Set Computer): Poseen un número elevado de instrucciones distintas y un potente juego de modos de direccionamiento, o formas de seleccionar los operandos y las instrucciones.

 

Instrucciones en Cadena

MOVSB: Copiar un byte de la cadena fuente al destino.

MOVSW Copiar dos bytes de la cadena fuente al destino.

LODSB: Poner en el acumulador un byte de la cadena fuente.

LODSW: Poner en el acumulador dos bytes de la cadena fuente.

STOSB: Almacenar en la cadena destino un byte del acumulador.

STOSW: Almacenar en la cadena destino dos bytes del acumulador.

CMPSB: Comparar un byte de la cadena fuente con el destino.

CMPSW: Comparar dos bytes de la cadena fuente con el destino.

SCASB: Comparar un byte del acumulador con la cadena destino.

SCASW: Comparar dos bytes del acumulador con la cadena destino.

Instrucciones Entrada y  Salida

Existen cuatro instrucciones de entrada-salida entre ellos se encuentran:

  •  START I/O
  • HALT I/O
  • TEST I/O
  • TEST CHANNEL

Instrucciones Aritméticas y lógicas

ALU: La unidad de aritmética/lógica (ALU), es la parte del CPU que realiza cálculos matemáticos y comparaciones lógicas.

Instrucciones Aritméticas y lógicas: Es un conjunto de instrucciones dentro de ello se incluyen las instrucciones que realizan operaciones aritméticas, lógicas, de desplazamiento y de comparación.

Juego de Instrucciones (Procesador MIPS R200)

Este conjunto de instrucciones especificado será capaz realizar carga y almacenamiento desde y hacia la memoria, se podrá desarrollar programas que resuelven problemas aritméticos y lógicos, posibilidad de controlar el flujo de la ejecución del programa mediante instrucciones de comparación y salto.

Nomenclatura (Procesador MIPS R200)

nomclatura de procesador MIPS R200

nomclatura de procesador MIPS R200

Instrucciones Aritméticas (Procesador MIPS R200)

Instrucciones Aritméticas (Procesador MIPS R200)

Instrucciones Aritméticas (Procesador MIPS R200)

Instrucciones Lógicas (Procesador MIPS R200)

Instrucciones Lógicas (Procesador MIPS R200)

Instrucciones Lógicas (Procesador MIPS R200)

 

Instrucciones Aritméticas:

Existen seis instrucciones aritméticas: ADD, SUB, RAU, RSU, MPY, y DIV.
La instrucción ADD, suma el número de posición de memoria de dirección m al acumulador.
La instrucción SUB, resta el número de posición de memoria de dirección m al acumulador.
La instrucción RAU, suma un bit a la posición menos significativa del contenido de la posición de memoria de la dirección m.
La instrucción RSU, resta uno de un número de la memoria y almacena entonces el resultado en la misma posición de la memoria.
La instrucción MPY,  coloca en cero el acumulador, transfiere el multiplicando al registro m e inicia la secuencia de multiplicación.
La instrucción DIV, divide el dividiendo, cuyo valor es de 70 bits en la cascada de registros.

 

 

Publicado en Diversidad | Etiquetado , , | Deja un comentario

hoja de excel calcula componentes vector resultante equilibrante

Hoja de Excel para calcular vectores resultante e equilibrante. Ingresar N vectores en el ejemplo hay A,B,C,D,E,F,G vectores modificar cuantos vectores necesita.

Descargar Documento: Calcular Vector resultante y equilibrante

 

 

 

Publicado en Diversidad | Etiquetado | Deja un comentario

Formula General Ecuacion cuadratica pseudocodigo PSeInt

Algoritmo que resuelve Formula General Ecuacion cuadratica pseudocodigo PSeInt

formula general psedocodigo

formula general psedocodigo

Descargar algoritmo: FORMULA GENERAL – PSEINT

 

Publicado en Diversidad | Etiquetado | 2 comentarios

if ordenar tres numero de mayor a menor pseudocodigo PSeInt

Algoritmo pseudocodigo if ordenar tres numero de mayor a menor PSeInt

 

if ordenar tres numero de mayor a menor  pseudocodigo

if ordenar tres numero de mayor a menor pseudocodigo

 

Descargar algoritmo: IF ORDENAR NUMEROS MENOR A MAYOR – PSEINT

 

Publicado en Diversidad | Etiquetado | 14 comentarios

Ecuación cuadrática Fórmula general Ecuación de segundo grado diagrama de flujos DFD

Algoritmo que resuelve la Ecuación cuadrática o Fórmula general o Ecuación de segundo grado diagrama de flujos DFD,

Como funciona en el DFD:

Se ingresa los cooficientes, luego se evalua la discriminante (DISC) es decir (B^2) – 4*a*c, si la DISC = 0 entonces solo tiene una solución pues se elimina  (B^2)-4*a*c.

Ahora bien si la  DISC> 0, se tiene dos soluciones en los Reales.

Cuando la DISC < 0 tiene dos soluciones complejas porque en los reales no es posible aplicar la radical a numeros negativos (sqrt -100) solo en los  los complejos la i imaginaria.

 

Ecuación cuadrática Fórmula general Ecuación de segundo grado diagrama de flujos DFD

Ecuación cuadrática Fórmula general Ecuación de segundo grado diagrama de flujos DFD

 

Descargar algoritmo: Ecuación cuadrática Fórmula general Ecuación de segundo grado diagrama de flujos DFD

 

Publicado en Diversidad | Etiquetado | 1 comentario

if ordenar tres numero de mayor a menor dfd

Algoritmo de diagrama de flujo hecho en DFD que ordena tres numeros de menor a mayor con la decisión IF

if ordenar numero de mayor a menor dfd

if ordenar numero de mayor a menor dfd

Descargar algoritmo: IF ORDENAR NUMEROS MENOR A MAYOR – DIAGRAMA DE FLUJOS – DFD

 

Publicado en Diversidad | Etiquetado | 4 comentarios

Pilas y Colas C++

Pilas y Colas escrito en C++, este es un solución donde se implementa en la forma de manejar los datos de entrada, esto fue ejecutado en VisualStudio y también en cualquier compilador standar, si tienes alguna duda no dudes en postearlo.

/*

Programación
Choc Cac, Victor Hugo.

*/

#include <cstdlib>
#include <iostream>

using namespace std;
const int NUMEROMAXIMO = 6;
int  VALORMAXIMO = NUMEROMAXIMO-1;

//=========================================================
//==============Declaracion de la cola=====================
struct SCola{
int elemento;
struct SCola *siguiente;
};

typedef struct SCola TCola;

typedef struct{
TCola *Adelante;
TCola *ElFin;
}Cola;

void CrearCola(Cola *cola);
void InsertarCola (Cola *cola, int x);
int RemoverCola(Cola *cola);
int LimpiarCola(Cola cola);
//==========Fin de declaracones cola=======================
//=========================================================

//=========================================================
//=======Inicio de declariones Pila========================
typedef struct
{
int tope;
int item[NUMEROMAXIMO];
}pila;

int Lleno(pila*);
int VacioPila(pila*);
void push(pila*, int);
void pop(pila*, int*);

//==========fin declaraciones de pila======================
//==========fin declaraciones de pila======================
//=========================================================

int _tmain(int argc, _TCHAR* argv[])
{
//=========================================================
//========declaracines de pilas============================
pila p;
int dato;
p.tope=0;
//=========fin de Pila=====================================
//=========================================================

//=========================================================
//=========declaraciones de cola===========================
Cola cola;
CrearCola(&cola);
int Cx;
//=========fin de cola=====================================
//=========================================================

cout << «\n\t\tPrimeros en Entrar Ultimos en Salir»;
cout << «\n\t\t\t\t===PILA===\n»;
for(int i=0;i<VALORMAXIMO;i++)
{
cout << «\nEscribe Numero: «;
cin >> dato;
push(&p,dato);
cout << «insertado…»;
}

cout << «\n»;
for(int a=0;a<VALORMAXIMO;a++)
{
pop(&p,&dato);
Cx = dato;
InsertarCola(&cola, Cx);//insertamos en la cola
cout << «\nInserto en cola y se elimino en Pila = »  << dato;
}

/*
Una vez que se inserto
en Cola imprimimos
e eleminamos la cola.
*/
cout << «\n\n\t\tPrimeros en Entrar Primeros en Salir»;
cout << «\n\t\t\t\t===COLA===\n\n»;

for(int xy=0;xy<VALORMAXIMO;xy++)
{
cout << «Imprimiendo y elimando Cola: » <<  RemoverCola(&cola) << «\n»;
}
//=============fin de impresion de cola
system(«pause»);
return 0;
}

//=========================================================
//==========Inicio funciones pila==========================
void push(pila *p,int dato)
{
if(!Lleno(p))
{
(p->tope)++;
p->item[p->tope]=dato;  //elemento[1]=dato
}
else
{
cout << «\nDesbordamiento de bufer»;
}
}

void pop(pila *p,int *dato)
{
if(!VacioPila(p))
{
*dato=p->item[p->tope];
(p->tope)–;
}
else
{
cout << «\nDesbordamiento de bufer»;
}
}

int Lleno(pila *p)
{
return(p->tope==VALORMAXIMO);
}

int VacioPila(pila *p)
{
return(p->tope==0);
}
//==========fin funciones de pila==========================
//=========================================================

//=========================================================
//==========Inicio funciones de cola=======================
void CrearCola(Cola *cola)
{
cola->Adelante=cola->ElFin=NULL;
}

void InsertarCola (Cola *cola, int x)
{
TCola *nuevo;
nuevo=(TCola*)malloc(sizeof(TCola));
nuevo->elemento=x;
nuevo->siguiente=NULL;
if(LimpiarCola(*cola))
{
cola->Adelante=nuevo;
}
else
cola->ElFin->siguiente=nuevo;
cola->ElFin=nuevo;
}

int RemoverCola (Cola *cola)
{
int temp=NULL;
if(!LimpiarCola(*cola))
{
TCola *nuevo;
nuevo=cola->Adelante;
temp=cola->Adelante->elemento;
cola->Adelante=cola->Adelante->siguiente;
free(nuevo);
}
else
cout << «cola vacia: «;
return (temp);
}

int LimpiarCola(Cola cola)
{
return (cola.Adelante==NULL);
}
//==========Fin funciones de cola==========================
//=========================================================

Publicado en Diversidad | Etiquetado | Deja un comentario

Archivo Ordenamiento C++

Archivo Ordenamiento C++ este es un ejemplo para ordenar los datos en un archivo o fichero escrito en c++, ha sido ejecutado en VisualStudio aunque también debe de correr en cualquier compilador standar, si tienes alguna duda no dudes en postearlo, que con gusto te ayudaré.

/*

Choc Cac, Victor Hugo.

La aplicación es ordena por el número de carnet (pero no se puede colocar
un caracter como separador ejemplo 10-1010, si no solo 101010)

*/

#include <fstream>
#include <iostream>
#include <cstdlib>
#include <Windows.h>

using namespace std;

const int maximo = 3;//maximo de estudiantes, solo puse tres.

struct Estudiante{
double carne;
char nombre[100];
};

void CrArchivo();
void SinArchivo();
void OrArchivo();

Estudiante Datos[maximo];

int _tmain(int argc, _TCHAR* argv[])
{
int menu;
do
{
system(«cls»);
cout<<endl<<«===Archivo de Ordenamiento===\n\n»;
cout<<«1. Agregar Alumnos.\n»;
/*
Observación:
Antes de selecionar la opcion 3 podemos ver, la opcion 2 para ver la lista desordenada, ahora bien si
selecciona la opcion 3 y seguidamente la opcion 2 observaremos que la lista ya esta ordenada

Para verificar si la lista fue ordenada, salimos de la aplicación y seleccionamos la opción 3.
*/
cout<<«2. Archivo No ordenado(antes de ordenar) y ordenado(despues guardardo).\n»;
cout<<«3. Archivo ordenar(ordena los datos).\n»;
cout<<«4. Salir.\n»;
cout<<«Que Opcion: «;

cin>>menu;

switch (menu)
{
case 1:
{
CrArchivo();
}
break;
case 2:
{
SinArchivo();
}
break;
case 3:
{
OrArchivo();
}
break;
case 4:
{
menu =-1;
}
break;
default: cout<<«\nFuera de Rango, teclee una opcion validad……\n»;
}
}while(menu !=-1);
return 0;
}

void CrArchivo()
{
int numero = 1;
system(«cls»);
ofstream salida(«ordenacion.bin», ios::out | ios::binary);
if(!salida)
{
cout << «\nNo puede crearse el archivo ordenacion.bin\n»;
system(«pause»);
return exit(1);
}
for(int conta=0; conta < maximo;conta++)
{
cout << «\nIngrese Su Carne: «;
cin>> Datos[conta].carne;
cin.ignore();
cout << «Nombre completo estudiante: «;
cin.getline(Datos[conta].nombre,31);
salida.write((char *) &Datos, sizeof(Datos));
}
salida.close();
}
void SinArchivo()
{
int numero = 1;
system(«cls»);
ifstream abrir(«ordenacion.bin», ios::in | ios::binary);
if(!abrir)
{
cout << «\nNo puede abrirse el archivo ordenacion.bin\n»;
system(«pause»);
return exit(1);
}

for(int conta=0;conta < maximo; conta++)
{
abrir.read((char *) &Datos, sizeof(Datos));
cout << «\nEstrutura No.» << numero;
cout << «\nSu nombre es: » << Datos[conta].nombre;
cout << «\nSu Carne es: » << Datos[conta].carne << «\n\n» << endl;
numero++;
}
abrir.close();
system(«pause»);
}
void OrArchivo()
{
int i, j;
int numero = 1;
Estudiante temp;
system(«cls»);
fstream abrir(«ordenacion.bin», ios::out| ios::binary);
if(!abrir)
{
cout << «\nNo puede abrirse el archivo ordenacion.bin\n»;
system(«pause»);
return exit(1);
}

for (i = 0; i < maximo – 1 ; i++)
{

for (j = i + 1; j < maximo ; j++)
{
if (Datos[i].carne > Datos[j].carne)
{
temp = Datos[i];
Datos[i] = Datos[j];
Datos[j] = temp;
}
}
}

cout << «Espere, Ordenando lista….»;
Sleep(5000);
system(«cls»);
for(int conta=0;conta<maximo;conta++)
{

cout << «\nEstrutura No.» << numero;
cout << «\nSu nombre es: » << Datos[conta].nombre;
cout << «\nSu Carne es: » << Datos[conta].carne << «\n\n»;
numero++;
abrir.write((char*) &Datos, sizeof(Datos));
}
system(«pause»);
system(«cls»);
cout << «Guardando lista, espere….»;
Sleep(5000);
abrir.close();
system(«cls»);
}

Publicado en Diversidad | Etiquetado | Deja un comentario

Archivo ingresar N estudiantes y buscar c++

Archivos o Ficheros en C++, inserción y búsqueda.

Este es un ejemplo de un algoritmo, con el tema de ficheros donde se ingresan N estudiantes al fichero o al archivo, también esta integrado el algoritmo de búsqueda de datos.

/*
Se ingresan N estudiantes el Archivo o Fichero, y luego se realiza la busqueda de la misma

Choc Cac, Victor Hugo

*/

#include <iostream>
#include <cstdlib>

using namespace std;

struct agenda{
char nombre[20], apellido[20], apellido2[20],numero[100];
}datos;

int _tmain(int argc, _TCHAR* argv[])
{

int menu = 101, metodo_busqueda, comparacion, Error=0;
char buscar_dato[16];

do
{
system(«cls»);
cout<<endl<<«Alumnos\n\n»;
cout<<«1. Agregar nuevo Alumno.\n»;
cout<<«2. Buscar Alumno.\n»;
cout<<«3. Salir.\n»;
cout<<«Que Opcion: «;

cin>>menu;

switch (menu)
{
case 1:
{
system(«cls»);
FILE*abrir;

abrir=fopen(«registro.dat», «a+b»);
cout<<«\nNuevo Alumno: «<<endl;
cout<<«Primer nombre: «;
cin>>datos.nombre;
cout<<«\nPrimer apellido: «;
cin>>datos.apellido;
cout<<«\nSegundo Apellido: «;
cin>>datos.apellido2;
cout<<«\nnumero carne: «;
cin>>datos.numero;

fwrite(&datos, sizeof(datos), 1, abrir);
fclose(abrir);
}
break;
case 2:
{
system(«cls»);
FILE*busqueda;
busqueda=fopen(«registro.dat», «r+b»);
cout<<«\nQue metodo Desea hacer la Buqueda?»<<endl;
cout<<«\n1. Nombre»;
cout<<«\n2. Apellido»;
cout<<«\n3. Numero de carnet»<<endl;
cout<<endl<<«Que desea Hacer?: «;
cin>>metodo_busqueda;

switch(metodo_busqueda)
{
case 1:
{
cout<<«\nIngrese el nombre a buscar: «;
cin>>buscar_dato;

while(!feof(busqueda))
{
fread(&datos, sizeof(datos), 1, busqueda);

comparacion=strcmp(buscar_dato, datos.nombre);

if(comparacion==0)
{
cout<<«\nDatos del estudiante»;
cout<<«\nNombre: «;
cout<<datos.nombre;
cout<<«\nApellido: «;
cout<<datos.apellido;
cout<<«\nNumero Carnet: «;
cout<<datos.numero;
Error=1;
break;
}

}

if(Error==0)
{
cout<<endl<<«Error! Nombre existe»;
}

}

break;
case 2:
{
cout<<endl<<«Ingrese el apellido a buscar: «;
cin>>buscar_dato;
while(!feof(busqueda))
{
fread(&datos, sizeof(datos), 1, busqueda);
comparacion=strcmp(buscar_dato, datos.apellido);
if(comparacion==0)
{
cout<<«\nDatos del estudiante»;
cout<<«\nNombre: «;
cout<<datos.nombre;
cout<<«\nApellido: «;
cout<<datos.apellido;
cout<<«\nNumero Carnet: «;
cout<<datos.numero;
Error=1;
break;
}

}
if(Error==0)
{
cout<<endl<<«Error! Apellido no existe»;
}
}
break;

case 3:
{
cout<<endl<<«Ingrese el Carnet a buscar: «;
cin>>buscar_dato;
while(!feof(busqueda))
{
fread(&datos, sizeof(datos), 1, busqueda);
comparacion=strcmp(buscar_dato, datos.numero);

if(comparacion==0)
{
cout<<«\nDatos del estudiante»;
cout<<«\nNombre: «;
cout<<datos.nombre;
cout<<«\nApellido: «;
cout<<datos.apellido;
cout<<«\nNumero Carnet: «;
cout<<datos.numero;
Error=1;
break;
}

}
if(Error==0)
{
cout<<endl<<«Error! el carnet no existe»;
}

}
break;
default: cout<<«\nFuera de Rango, teclee una opcion validad……\n»;
}
cin.get();cin.get();
fclose(busqueda);
}
break;
case 3:
{
menu=101;
}
break;
default: cout<<«\nFuera de Rango, teclee una opcion validad……\n»;
}
}while(menu !=101);

return 0;
}

Publicado en Diversidad | Etiquetado | 5 comentarios

Invertir Vector en C Sharp

Este es un ejemplo de como invertir un Vector en C Sharp, si tienes alguna duda no dudes en comentar.

/*
Invertir Vector

Choc Cac, Victor Hugo

*/
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;

namespace csharpt_consola
{
class Program
{
static void Main(string[] args)
{
int limite=6, temp; // limite del vector y auxiliar de intercambio.
String a; // declarar un vector para us uso entrada en teclado.

int[] vector = new int[limite]; //creamos el vector.

for (int i = 0; i < limite; i++)
{
Console.Write(«Ingrese los numeros: «);
a = Console.ReadLine();
vector[i] = Int32.Parse(a);// lee a luego el int32.parse lo convierte en un int.
}

for (int i=0;i<limite/2;i++)
{
temp = vector[i];
vector[i] = vector[limite-1-i];
vector[limite-1-i] = temp;
}

Console.Write(«Presione una tecla para continuar…»);
Console.ReadKey();

for (int i = 0; i < limite; i++)
{
Console.Write(«\nLos numeros que ingreso son: «+vector[i]+»\n»);// con el signo + concatenamos.
}
Console.Write(«Presione una tecla para salir…»);
Console.ReadKey();
}
}
}

Publicado en Diversidad | Etiquetado | 1 comentario