Você está na página 1de 34

Lenguaje en alto y bajo nivel

El ordenador slo entiende un lenguaje conocido como cdigo binario o cdigo mquina, consistente en ceros y unos. Es decir, slo utiliza 0 y 1 para codificar cualquier accin. Los lenguajes ms prximos a la arquitectura hardware se denominan lenguajes de bajo nivel y los que se encuentran ms cercanos a los programadores y usuarios se denominan lenguajes de alto nivel.

Lenguaje de bajo nivel


Son lenguajes totalmente dependientes de la mquina, es decir que el programa que se realiza con este tipo de lenguajes no se pueden migrar o utilizar en otras maquinas. Al estar prcticamente diseados a medida del hardware, aprovechan al mximo las caractersticas del mismo.

El lenguaje maquina: este lenguaje ordena a la mquina las operaciones fundamentales para su funcionamiento. Consiste en la combinacin de 0's y 1's para formar las ordenes entendibles por el hardware de la maquina. Este lenguaje es mucho ms rpido que los lenguajes de alto nivel. La desventaja es que son bastantes difciles de manejar y usar, adems de tener cdigos fuente enormes donde encontrar un fallo es casi imposible.

El lenguaje ensamblador es un derivado del lenguaje maquina y esta formado por abreviaturas de letras y nmeros llamadas menmotcnicos. Con la aparicin de este lenguaje se crearon los programas traductores para poder pasar los programas escritos en lenguaje ensamblador a lenguaje mquina. Como ventaja con respecto al cdigo mquina es que los cdigos fuentes eran ms cortos y los programas creados ocupaban menos memoria. Las desventajas de este lenguaje siguen siendo prcticamente las mismas que las del lenguaje ensamblador, aadiendo la dificultad de tener que aprender un nuevo lenguaje difcil de probar y mantener.

Lenguaje de alto nivel


Son aquellos que se encuentran ms cercanos al lenguaje natural que al lenguaje mquina. Estn dirigidos a solucionar problemas mediante el uso de EDD's. Nota: EDD's son las abreviaturas de Estructuras Dinamicas de Datos, algo muy utilizado en todos los lenguajes de programacin. Son estructuras que pueden cambiar de tamao durante la ejecucin del programa. Nos permiten crear estructuras de datos que se adapten a las necesidades reales de un programa.

Se tratan de lenguajes independientes de la arquitectura del ordenador. Por lo que, en principio, un programa escrito en un lenguaje de alto nivel, lo puedes migrar de una mquina a otra sin ningn tipo de problema. Estos lenguajes permiten al programador olvidarse por completo del funcionamiento interno de la maquina/s para la que estn diseando el programa. Tan solo necesitan un traductor que entiendan el cdigo fuente como las caractersticas de la maquina. Suelen usar tipos de datos para la programacin y hay lenguajes de propsito general (cualquier tipo de aplicacin) y de propsito especifico (como FORTRAN para trabajos cientficos).

Ensamblador
Se llaman ensambladores los programas encargados de traducir los programas escritos en ensamblador a cdigo binario. Fjese en que tanto el programa traductor como el lenguaje se llaman del mismo modo: ensamblador. Como el lenguaje ensamblador es muy prximo al binario, estos traductores son programas relativamente sencillos.

Compiladores
El compilador es un programa que traduce el cdigo de alto nivel a cdigo binario. Es, por tanto, parecido al ensamblador, pero mucho ms complejo, ya que las diferencias entre los lenguajes de alto nivel y el cdigo binario son muy grandes. El programa escrito en lenguaje de alto nivel se denomina programa fuente o cdigo fuente. El programa traducido a cdigo binario se llama programa objeto o cdigo objeto. Por lo tanto, el compilador se encarga de convertir el programa fuente en un programa objeto.

Una vez que se ha obtenido el programa objeto ya no es necesario volver a realizar la traduccin (o compilacin), a menos que se haga alguna modificacin en el programa fuente, en cuyo caso habra que volver a compilarlo. El programa objeto, una vez generado, puede ejecutarse en la mquina en la que fue compilado, o en otra de similares caractersticas (procesador, sistema operativo, etc.).

Una vez que se ha obtenido el programa objeto ya no es necesario volver a realizar la traduccin (o compilacin), a menos que se haga alguna modificacin en el programa fuente, en cuyo caso habra que volver a compilarlo. El programa objeto, una vez generado, puede ejecutarse en la mquina en la que fue compilado, o en otra de similares caractersticas (procesador, sistema operativo, etc.).

Segmentos de un programa
El segmento de pila define el espacio de almacenamiento para la pila. El segmento de datos define los datos que el programa usar. El segmento de cdigo contiene las instrucciones del lenguaje ensamblador.

Segmentos de un programa
Un procedimiento es un conjunto de instrucciones diseadas para llevar a cabo una funcin especfica. Un segmento de cdigo puede constar de slo un procedimiento, pero usualmente es organizado en varios procedimientos pequeos para hacer que el programa sea ms estructurado.
Cada procedimiento debe tener un nombre definido por la directiva PROC, seguido por instrucciones en lenguaje ensamblador y debe ser finalizado por la directiva ENDP (que debe tener la misma etiqueta usada para nombrar al procedimiento).

Segmentos de un programa
La directiva PROC puede tener las opciones FAR o NEAR. El sistema operativo que controla el computador debe ser dirigido al inicio del programa para ejecutarlo. DOS requiere que el punto de entrada al programa sea un procedimiento FAR. NEAR es la opcin por defecto.

Segmentos de un programa
La directiva ASSUME asocia los registros de segmentos con las etiquetas de los segmentos respectivos: Se asumir que los registros de segmentos son iguales a las etiquetas de los segmentos usadas en el programa. Si un segmento extra es usado, tambin deber incluirse en la sentencia ASSUME. La directiva ASSUME es necesaria porque un programa en lenguaje ensamblador podra tener varios segmentos de cdigo, uno o ms segmentos de datos y ms de un segmento de pila, pero slo uno de cada uno podr ser direccionado por el CPU a un tiempo (el CPU slo tiene un CS, un DS, un SS y un ES).

Segmentos de un programa
La directiva ASSUME tambin ayuda al ensamblador a calcular los desplazamientos (offsets) direccionados desde el inicio del segmento. Por ejemplo en MOV AL,[BX] el BX es el offset del segmento de datos. Es necesario pues que el ensamblador identifique cual ser el segmento de datos a usar cuando existe ms de uno.

Segmentos de un programa
Recordar que ASSUME es una directiva para el ensamblador y que para ejecutar un programa se deben proporcionar los valores de CS, DS y SS que le corresponden a dicho programa. El sistema operativo debe pasar el control al programa para que ste pueda ejecutarse, por lo que asigna los valores de CS y SS respectivos. El valor del registro DS (y ES) debe ser inicializado por el programa.

Modelos de memoria
SMALL MODEL Este es uno de los ms ampliamente usados modelos de memoria para los programas en lenguaje ensamblador. Este modelo usa un mximo de 64K bytes de memoria para cdigo y otros 64K bytes para datos.

MEDIUM MODEL En este modelo los datos tambin deben mantenerse dentro de 64K bytes pero el cdigo podra superar los 64K bytes de memoria. COMPACT MODEL Es el opuesto al MEDIUM MODEL. Los datos pueden exceder los 64K bytes de memoria, el cdigo no.

LARGE MODEL Combina los dos modelos anteriores (ambos segmentos pueden superar los 64K bytes de memoria). Aunque los datos pueden superar los 64K bytes, ningn conjunto de datos (tal como un arreglo) debe superar los 64K bytes.

HUGE MODEL Ambos segmentos pueden superar los 64K bytes de memoria. Un conjunto de datos (tal como un arreglo) puede superar los 64K bytes.

TINY MODEL Es usado con archivos del tipo COM. El total de la memoria usada para cdigo y datos deben mantenerse dentro de 64K bytes.

Arquitectura del P 8086/8088: Modos de direccionamiento


7 modos de direccionamiento bsicos: Modo registro: el operando es un registro. Modo inmediato: el operando es una constante. Modo directo: el operando es una direccin efectiva (explcita). Modo registro indirecto: similar al anterior pero la direccin efectiva est contenida en un registro (BX, BP, SI, DI). Modo relativo a base: la direccin efectiva se encuentra sumando un desplazamiento a BX o BP. Modo indexado directo: igual al anterior usando SI o DI. Modo indexado a base: combinacin de los dos anteriores. La direccin efectiva se calcula como la suma de un registro base, un registro ndice y, opcionalmente, un desplazamiento.

Arquitectura del P 8086/8088: Modos de direccionamiento


Ejemplos de uso: Modo registro: add ax, bx Modo inmediato: add ax, 5 Modo directo: add ax, [100] Modo registro indirecto: add ax, [bx] Modo relativo a base: add ax, [bp + 100] Modo indexado directo: operaciones de cadena: movsb Modo indexado a base: add ax, [bx + si + 100]

Arquitectura del P 8086/8088: Transferencia de datos


IN LAHF LEA LDS LES MOV OUT POP POPF PUSH PUSHF SAHF XCHG XLAT carga el acumulador desde un dispositivo de I/O carga los flags en AH carga una direccin efectiva carga DS y un regis de 16 b con datos de memo de 32 bits carga ES y un regis de 16 b con datos de memoria de 32 bits carga byte o palabra o doble palabra saca datos del acumulador a un puerto de I/O recupera una palabra de la pila recupera los flags de la pila almacena una plabra en la pila almacena los flags en la pila carga AH en los flags intercambia bytes o palabras emplea AL para entrar a una tabla de conversin

Arquitectura del P 8086/8088: Instrucciones aritmticas


AAA, AAD, AAM, AAS ADD ADC CBW CMP CWD DAA, DAS DEC DIV IDIV IMUL INC MUL NEG SBB SUB ajuste ASCII para suma, divisin, producto y resta suma datos entre registros o la memoria y otro registro suma con acarreo convierte byte a palabra compara los datos convierte palabra a doble palabra ajuste decimal en AL para una suma/resta en BCD decrementa operando en 1 divisin sin signo divisin con signo multiplicacin con signo incrementa operando en 1 multiplicacin sin signo cambia el signo resta con acarreo resta datos entre los registros y la memoria u otro registro

Arquitectura del P 8086/8088: Manipulacin de bits


AND NOT OR SAR SHL/SAL SHR RCL ROR RCR ROR TEST XOR Y lgica invertir (complemento a 1) O lgica desplazamiento aritmtico a derecha desplazamiento a izquierda desplazamiento lgico a derecha rotacin a la izquierda con acarreo rotacin a izquierda rotacin a derecha con acarreo rotacin a derecha operacin con el AND lgico pero slo afecta banderas O exclusivo

Arquitectura del P 8086/8088: Cadenas


CMPS LODS comparacin entre 2 cadenas en memoria cargar el acumulador con un dato de una cadena mover cadena de memoria a memoria comparacin entre los datos de una cadena y el acumulador almacenar el acumulador

MOVS
SCAS STOS

Arquitectura del P 8086/8088: Transferencia de programa


CALL INT INT 3 INTO IRET JA, JAE, JB, JBE JE/JZ JG, JGE, JL, JLE JMP JNE/JNZ JNC, JNO, JNP, JNS JC, JO, JP, JS LOOP LOOPE, LOOPNE JCXZ RET llamada a subrutina interrupcin de software interrupcin 3 interrupcin si hay overflow retorno de una rutina de interrupcin saltar si mayor, mayor o igual, menor, menor o igual saltar si es cero o igual saltar si mayor, mayor o igual, menor, menor o igual salto incondicional saltar si no es igual o no es cero saltar si no acarreo, overflow, paridad, signo saltar si acarreo, overflow, paridad, signo repite un ciclo CX veces igual a la anterior pero termina prematuramente por Z=1, 0 saltar si CX es 0 retorno de subrutina

Arquitectura del P 8086/8088: Control del procesador


CLC CLD CLI CMC HLT NOP STC STD STI WAIT LOCK borrar acarreo habilitar incremento automtico deshabilitar terminal INTR complementar acarreo alto hasta que se reinicialice o exista interrupcin no operacin activa acarreo habilitar decremento automtico habilitar interrupciones espera a que el terminal TEST=0 controla el terminal LOCK

Archivos EXE vs Archivos COM


Por qu un archivo COM? Hay ocasiones donde, debido a limitaciones de memoria, se requiere tener un cdigo compacto. El hecho que un archivo EXE pueda tener cualquier tamao es una de las razones para que estos archivos sean usados ampliamente.

Archivos EXE vs Archivos COM


Archivo EXE Tamao ilimitado El segmento de pila est definido El segmento de datos est definido El cdigo y los datos pueden ser definidos en cualquier direccin Archivo ms grande (requiere ms memoria) Archivo COM Mximo tamao 64K bytes. No hay definicin del segmento de pila EL segmento de datos est definido en el segmento de cdigo El cdigo y el segmento deben empezar en la direccin 0100H Archivos ms pequeo (requiere menos memoria)

Você também pode gostar