viernes, 24 de febrero de 2012

LENGUAJE ENSAMBLADOR

LENGUAJE ENSAMBLADOR
(assembly language en inglés) es un lenguaje de programación de bajo nivel para los computadores, microprocesadores, microcontroladores, y otros circuitos integrados programables. Implementa una representación simbólica de los códigos de máquina binarios y otras constantes necesarias para programar una arquitectura dada de CPU y constituye la representación más directa del código máquina específico para cada arquitectura legible por un programador.
CARACTERÍSTICAS
* Se utilizan traductores que convierten el código fuente - en L. ensamblador- a código objeto.
 * El código escrito en lenguaje ensamblador posee una cierta dificultad de ser entendido ya que su estructura se acerca al lenguaje máquina, es decir, es un lenguaje de bajo nivel.
* El lenguaje ensamblador es difícilmente portable, es decir, un código escrito para un microprocesador, puede necesitar ser modificado, para poder ser usado en otra máquina distinta. Al cambiar a una máquina con arquitectura diferente, generalmente es necesario reescribirlo completamente.
* Los programas hechos por un programador experto en lenguaje ensamblador son generalmente mucho más rápidos y consumen menos recursos del sistema (memoria RAM y ROM) que el programa equivalente compilado desde un lenguaje de alto nivel. Al programar cuidadosamente en lenguaje ensamblador se pueden crear programas que se ejecutan más rápidamente y ocupan menos espacio que con lenguajes de alto nivel.
*  Con el lenguaje ensamblador se tiene un control muy preciso de las tareas realizadas por un microprocesador por lo que se pueden crear segmentos de código difíciles y/o muy ineficientes de programar en un lenguaje de alto nivel, ya que, entre otras cosas, en el lenguaje ensamblador se dispone de instrucciones del CPU que generalmente no están disponibles en los lenguajes de alto nivel.
* También se puede controlar el tiempo en que tarda una rutina en ejecutarse, e impedir que se interrumpa durante su ejecución.



 ESTRUTURA DEL COMPILADOR

SINTAXIS DEL LENGUAJE
Estructura de una línea:

INSTRUCCIÓN EN ENSAMBLADOR


ETIQUETA

MNEMOTÉCNICO

OPERANDOS

COMENTARIOS


INSTRUCCIÓN EN LENGUAJE MÁQUINA


DIRECCIÓN

CÓDIGO DE
OPERACIÓN
DIRECCIÓN DE  LOS OPERANDOS


- Características de los ensambladores modernos:
    * Formato libre.
    * Delimitadores de campo.
- Tipos de líneas en un programa ensamblador
   * Instrucciones.
     - Ejecutables por el computador.
   *Pseudoinstrucciones
    - Indicaciones o directivos para el traductor.
    - No ejecutables por el computador.
La sintaxis es la siguiente
Nombre de la instrucción Operando 1, Operando 2, Operando 3, Operando 4, ...
El nombre de la instrucción está formada por 2 o 3 letras, los operandos pueden ser registros, constantes o direcciones de memoria. La cantidad de operandos dependerá de la instrucción.
Por ejemplo:
MOV AL, [1000]
Esta instrucción indica que se copie el valor de la porción de la memoria que esté en la ubicación 1000 (En hexadecimal) a la parte baja del registro AX (AL). Cuando un operando es un valor de una dirección de memoria, ésta dirección se escribe entre corchetes, recordar que el operando 1 es el destino y el operando 2 es el origen. Y cuando es una constante dependerá del ensamblador, en el caso del debug (Un programa que sirve para crear y editar aplicaciones que viene con el DOS) se interpretarán como hexadecimales, en los siguientes ejemplos se interpretará que las constantes son números hexadecimales.
También se puede tomar un valor de la memoria apuntado por un registro, por ejemplo:
MOV AL, [DI]
DI está apuntado al valor que está en la memoria que será copiado al registro AL. El nombre MOV viene de la palabra move, que es una palabra del ingles que significa mover. Justamente la instrucción mencionada significa, mover el valor apuntado por DI a AL.
También se puede copiar el valor de un registro a otro
MOV AL, BL
En este caso se copia el valor de BL a AL
Igualmente se puede copiar el valor de la parte baja de un registro a la parte alta de otro registro
MOV CH, DL
Así como también operar con las partes altas
MOV AH, DH
Inclusive se puede copiar el valor de un registro a una dirección de memoria
MOV [1000], AL
Igualmente apuntada la dirección de memoria a DI
MOV [DI], AL
Y también con los registros completos (Solamente completos en el procesador 8086)
MOV AX, DX
También trabajar con los registros completos para todos los procesadores de 32 bits
MOV EBX, EDX
En éste caso mueve la totalidad del registro DX a la totalidad del registro BX, en éste caso se está trabajando con los registros en forma extendida (32 bits), pero hay que tener precaución ya que el procesador 8086 no interpretará correctamente ésta instrucción (El procesador 8086 es obsoleto por ésta desventaja y otras más, por ejemplo sólo puede direccionar 1 MB), además el debug no puede interpretar ésta instrucción.
No se puede realizar lo siguiente porque no se pueden pasar valores en la memoria sin la intervención de un registro, además no se ha especificado el tamaño
MOV [1000], [2000]
Igualmente no se puede hacer lo siguiente
MOV [DI], [1000]
Así como también lo siguiente
MOV [DI], [SI]
Sin embargo lo siguiente es correcto
MOV [1000], AX
Pero no lo siguiente porque no se está especificando el tamaño
MOV [SI], 1F
Lo correcto sería lo siguiente
Si se quiere transferir un byte
MOV byte [SI], 1F
Si se quiere transferir una palabra (16 bits)
MOV word [SI], 1F
Si se quiere transferir una doble palabra (32 bits)
MOV dword [SI], 1F
EJEMPLO
Un programa escrito en lenguaje ensamblador consiste en una serie de instrucciones que corresponden al flujo de órdenes ejecutables por un microprocesador.
Por ejemplo, en el lenguaje ensamblador para un procesador x86:
La sentencia
  • MOV AL, 061h
Asigna el valor hexadecimal 61 (97 decimal) al registro "AL".
El programa ensamblador lee la sentencia de arriba y produce su equivalente binario en lenguaje de máquina
  • Binario: 10110000 01100001 (hexadecimal: B061)
El mnemónico MOV es un código de operación u "opcode". El opcode es seguido por una lista de argumentos o parámetros, completando una típica instrucción de ensamblador. En el ejemplo, AL es un registro de 8 bits del procesador, al cual se le asignará el valor hexadecimal 61 especificado.
El código de máquina generado por el ensamblador consiste de 2 bytes. El primer byte contiene empaquetado la instrucción MOV y el código del registro hacia donde se va a mover el dato:
10110 000   01100001
  |    |        |
  |    |        +---- Número 61h en binario
  |    |      
  |    +--- Registro AL
  +-------- Instrucción MOV
En el segundo byte se especifica el número 61h, escrito en binario como 01100001, que se asignará al registro AL, quedando la sentencia ejecutable como:
  • 10110000 01100001
La cual puede ser entendida y ejecutada directamente por el procesador.



LENGUAJE PL/SQL- CODIGO FUENTE

PL/SQL: es un lenguaje portable, procedural y de transacción muy potente y de fácil manejo, con las siguientes características fundamentales:
1.Incluye todos los comandos de SQL.
2. Es una extensión de SQL, ya que este es un lenguaje no completo dado que no incluye las herramientas clásicas de programación. Por eso, PL/SQL amplia sus posibilidades al incorporar las siguientes sentencias:
- Control condicional
- Ciclos
3. Incorpora opciones avanzadas en:
- Control y tratamiento de errores llamado excepciones.
- Manejo de cursores.

Estructura del bloque de código
La organización del bloque de código de PL/SQL, compuesto por cuatro secciones DECLARE, BEGIN, EXCEPTION y END.

EJEMPLO  CODIGO  FUENTE DESDE ORACLE FORMS

Código Fuente:
Declare
repid REPORT_OBJECT;
v_rep VARCHAR2(100);
rep_status Varchar2(20);
BEGIN
repid := find_report_object('REP_VINCULADO');
-- Determinamos si se visualizará la ventana de parámetros 
SET_REPORT_OBJECT_PROPERTY(repid,REPORT_OTHER,'paramform=no'); 
SET_REPORT_OBJECT_PROPERTY(repid,REPORT_EXECUTION_MODE,BATCH); 
--Fijamos el valor para el tipo de ejecución (SYNCHRONOUS, ASYNCHRONOUS) 
SET_REPORT_OBJECT_PROPERTY(repid,REPORT_COMM_MODE,SYNCHRONOUS); 
--Fijamos el valor para el tipo de salida(cache, printer, file, mail..)
SET_REPORT_OBJECT_PROPERTY(repid,REPORT_DESTYPE,CACHE); 
--fijamos el valor para el formato de salida del reporte (html, pdf, rtf)
SET_REPORT_OBJECT_PROPERTY(repid,REPORT_DESFORMAT,'html');
--fijamos el valor para el servidor de reportes que ejecutará el report 
SET_REPORT_OBJECT_PROPERTY(repid,REPORT_SERVER,'nombre_del_servicio_de_reportes'); 
--ejecutamos el reporte 
v_rep := RUN_REPORT_OBJECT(repid);
rep_status := report_object_status(v_rep);
WHILE rep_status in ('RUNNING','OPENING_REPORT','ENQUEUED') LOOP
rep_status := report_object_status(v_rep);
END LOOP;
if rep_status = 'FINISHED' then
--Visualizamos la salida del reporte 
WEB.SHOW_DOCUMENT('/reports/rwservlet/getjobid'||substr(v_rep,instr(v_rep,'_',-1)+1)||'?'||'server=nombre_del_servicio_de_reportes','_blank');
Else
message('error en la ejecución');
end if;
END;


jueves, 23 de febrero de 2012

ORACLE

Es una herramienta cliente/servidor  para la gestión de bases de datos;objeto _relacional (o ORDBMS por el acrónimo en inglés  de Object-Relational Data Base Management System), desaarrollado por Oracle Corporation.

FUNCIONES O CARACTERISTICAS
*Es uno de los sistemas de bases de datos mas completo.
* Se destaca su soporte de transacciones.
* Estabilidad.
* Escabilidad.

* Soporte Multiplataforma.
(Windows, Unix, Macintosh y Mainframes). Estos porque más del 80% de los códigos internos de Oracle son iguales a los establecidos en todas las plataformas de Sistemas Operativos.
* Con salidas de SQL*FORMS.
* Tiene gran capacidad de almacenamiento.
* Se puede instalar en la gran mayoría de los S.O.
* Trabaja en la base de un modelo Relacional.

TIPO DE LICENCIAMIENTO
Existen dos formas de licenciarse en ORACLE:
1. Por el número de procesadores.
2. Por el número de usuarios.
    Licencia Comercial.

NIVEL  DE  LENGUAJE
Utiliza el Lenguaje PL/SQL ,lenguaje de 5° generación.

ESTRUCTURAS

El servidor Oracle consta de una “instance” y una base de datos Oracle. El Oracle Instance consta de una estructura de memoria llamada Area Global del Sistema (SGA), y de unos procesos background utilizados por el servidor Oracle para manejar una base dedatos. Cada Oracle Instance , que se identifica por su ORACLE_SID, puede abrir y utilizar solo una base de datos en cualquier punto y momento.
Area Global del Sistema (SGA)
Las estructuras de memoria de un instance Oracle están contenidas en la región de memoria llamada SGA, que contiene datos deinformación de control para el servidor Oracle. La SGA está situada en la memoria virtual del ordenador, donde reside el servidorOracle. La SGA está compuesta de varias estructuras de memoria, incluyendo:
Pool compartida : utilizada para almacenar la sentencia SQL más recientemente ejecutada y los datos más reciemientementeutilizados del diccionario de de datos.
Buffer de datos : utilizado para almacenar los datos más recientemente utilizados.
Buffer de redo log: utilizado para registrar los cambios hechos en la base de datos.

· Una BD Oracle tiene una estructura física y una estructura lógica :
· La estructura física se corresponde a los ficheros del sistema operativo.
· La estructura lógica está formada por los tablespace y los objetos de un esquema de BD.
ESTRUCTURA LOGICA
· Se divide en unidades de almacenamiento lógicas: Tablespaces.
· Cada BD estará formada por uno o mas tablespaces (al menos existe el tablespace
· SYSTEM catálogo del sistema)
· Cada tablespace se corresponde con uno o más ficheros de datos.
· Objetos: tablas, vistas, índices asociados a una tabla, clusters, ..
Estructura Lógica De La Base De Datos Relaciones entre la BD, Tablespaces y   Ficheros de Datos
Una BD Oracle puede ser dividida en áreas lógicas más pequeñas de almacenamiento conocidas como tablespaces.
Tablespaces
Un tablespace puede pertenecer solo a una BD.
Cada tablespace consta de uno o más ficheros del sistema operativo (datafiles .dbf).
Los tablespaces pueden ser puestos on line mientras la BD está en funcionamiento.
Excepto los tablespaces del SYSTEM o los que tienen un segmento rollback activo, el tablespace puede ser puesto en offline,dejando la BD funcionando.
Los tablespaces pueden cambiar de modo “solo lectura” a “lectura-escritura




ESTRUCTURA FISICA
   
·    Una B.D. tiene uno o más ficheros de datos. Estos ficheros son de tamaño fijo y se establecen en el momento en que se crea la base de datos o en el momento en el que se crean tablespaces.
·    Los datos del fichero de datos son leídos cuando se necesitan y situados en una caché de memoria compartida para que el próximo acceso a los mismos sea más rápido.